- nebula 版本:3.0.0
- Exchange版本:nebula-exchange_spark_2.4-3.0.0.jar
- spark版本:2.3.0
- 部署方式:分布式
- 安装方式: RPM
- 是否上生产环境:Y
- 硬件信息
- 磁盘 hdd
- 问题的具体描述
使用exchange导入hive表中的数据,
spark-submit导入完成后,spark的info日志里没有任何报错
hive中统计得到的数据量和nubula中的数据量不一致。少了7300条数据。
删除数据以后,又进行了多次导入,一共4亿多条数据,每次都是缺少7300条。
查看了一下reload文件,发现里面都是乱码
hive :select COUNT(distinct column1) from table1
nebula: submit job stats ;show stat
column1作为vid,统计得到的数据量不一致。
spark提交命令:
nohup spark-submit
--master yarn
--queue h1
--conf spark.app.name="hive2nebula"
--driver-java-options "-Xss256m -Dlog4j2.formatMsgNoLookups=true"
--conf "spark.executor.extraJavaOptions=-Xss256m -Dlog4j2.formatMsgNoLookups=true"
--driver-memory=10G
--executor-memory=20G
--num-executors=32
--executor-cores=1
--conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=file:/data/nebulagraphhdd/log4j.xml -Dfile.encoding=utf-8"
--conf "spark.executor.extraJavaOptions=-Dfile.encoding=utf-8"
--conf spark.dynamicAllocation.enabled=false
--conf spark.sql.hive.convertMetastoreParquet=false
--conf spark.sql.hive.convertMetastoreOrc=false
--class com.vesoft.nebula.exchange.Exchange /data/nebulagraphhdd/libs/nebula-exchange_spark_2.4-3.0.0.jar -c /data/nebulagraphhdd/hive2nebula.conf -h > hive2nebula.log 2>&1 &
NebulaExchange配置文件:hive2nebula.conf
{
spark: {}
nebula: {
address: {
graph: [
略
]
meta: [
略
]
}
user: 略
pswd: 略
space: xxx
connection {
timeout: 120000
retry: 3
}
execution {
retry: 3
}
error: {
max: 32
output: /user/nebulagraphhdd/hive_phone_exchange_error
}
rate: {
limit: 1024
timeout: 10000
}
}
tags: [
{
name: 号码
type: {
source: hive
sink: client
}
exec: "select device_number,status_desc,cert_no_md5 from table1 where month_id ='202412' and day_id='02'"
#仅展示部分字段,其实比这字段多
fields: [status_desc,cert_no_md5]
nebula.fields: [号码状态,证件号]
vertex: {
field: device_number
}
#writeMode: INSERT
batch: 256
partition: 32
}
]
edges: [
]
}
TAG是用中文进行的建模,仅展示部分字段,其实比这字段多
CREATE TAG IF NOT EXISTS 号码
(号码状态 String NULL COMMENT '',
证件号 String NULL COMMENT ''
)
COMMENT = '';
位于HDFS上的reload文件截图: