为了更快地定位、解决问题,麻烦参考下面模版提问 ^ ^
提问参考模版:
- nebula 版本:nightly
- 部署方式(分布式 / 单机 / Docker / DBaaS):docker
- 硬件信息
- 磁盘(SSD / HDD):SSD
- CPU、内存信息:
- 出问题的 Space 的创建方式:执行
describe space xxx
;
- 问题的具体描述
我们线上hive版本3 hadoop版本3;为了兼容hadoop spark版本应该安装3
而exchange目前不支持spark3,数据通过exchange导入nebula要用什么方式导入能避免刚才说的版本问题? hive,hdfs,sst?
我在mac电脑上验证过了通过 hive2导入到nebula nightly,在mac电脑上 没有验证没有通过hive3导入数据到nebula nightly
这个是我之前的发帖:exchange执行从hive导入数据报错
nicole
2
想要使用spark3 导入数据,可以自己改造下:
- 将exchange的pom中spark版本和scala版本改为3.0.0
- 编译(已验证,可以编译通过)
- 保证环境中scala版本和exchange中的scala版本一致。
然后尝试下导入。
如果走通了可以贡献下spark3的exchange呀
1 个赞
这个可以作为备选项,除了这个方案 还有其他的建议吗?(我不确定 能不能搞定)
nicole
4
还有个方法:
- 安装一个2.4的spark环境。
- 改动exchange中spark的配置,配上hive数据源,具体配置参考:
sparkConf.set("spark.sql.warehouse.dir", "hdfs://HOSTNAME:9000/apps/svr/hive-0.13.1-cdh5.3.2/warehouse/");
sparkConf.set("javax.jdo.option.ConnectionURL", "jdbc:mysql://10.199.244.19:3306/hive_spark?characterEncoding=UTF-8")
.set("javax.jdo.option.ConnectionDriverName", "com.mysql.jdbc.Driver")
.set("javax.jdo.option.ConnectionUserName", "user")
.set("javax.jdo.option.ConnectionPassword", "password");
3. 在该环境下执行exchange。
1 个赞
nicole
6
不是,在exchange这个包的 com.vesoft.nebula.tools.importer.Exchange文件中:
修改下面代码:
val session = SparkSession
.builder()
.appName(PROGRAM_NAME)
.config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
.config("spark.sql.shuffle.partitions", "1")
.config(
new SparkConf()
.registerKryoClasses(
Array(
classOf[com.facebook.thrift.async.TAsyncClientManager]
)))
修改为:
val sparkConf = new SparkConf()
sparkConf.registerKryoClasses(Array(classOf[com.facebook.thrift.async.TAsyncClientManager]))
sparkConf.set("spark.sql.warehouse.dir", "hdfs://HOSTNAME:9000/apps/svr/hive-0.13.1-cdh5.3.2/warehouse/")
sparkConf
.set("javax.jdo.option.ConnectionURL", "jdbc:mysql://your_ip:3306/hive_spark?characterEncoding=UTF-8")
.set("javax.jdo.option.ConnectionDriverName", "com.mysql.jdbc.Driver")
.set("javax.jdo.option.ConnectionUserName", "user")
.set("javax.jdo.option.ConnectionPassword", "password")
val session = SparkSession
.builder()
.master("local")
.appName(PROGRAM_NAME)
.config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
.config("spark.sql.shuffle.partitions", "1")
.config(sparkConf)
1 个赞
我刚才试了一下 成功 用spark2 从hive 3中导入数据到nebula
目前 已经验证 spark3 从hive3中导入数据到nebula
谢谢
@Amber 请小姐姐记录一下
2 个赞
刚才发现 之前描述的有问题(exchange 还不支持spark3,编译后运行报错,所以没法验证spark3环境)
已经验证:
用spark2.4 从hive2(hadoop2)中导入数据到nebula
用spark2.4 从hive3(hadoop3)中导入数据到nebula
@shawdan @Amber
3 个赞