spark writer 在YARN-client模式下导入没有报异常但是图数据库中没有导入数据

提问参考模版:

  • nebula 版本:1.0.1

  • 部署方式(分布式 / 单机 / Docker / DBaaS):分布式

  • 出问题的 Space 的创建方式:CREATE SPACE alecliu_test (partition_num = 100, replica_factor = 1, charset = utf8, collate = utf8_bin)

  • 问题的具体描述
    使用spark writer 在YARN-client模式下导入没有报异常但是图数据库中没有导入数据,数据源为hive

  1. 配置文件:
{

  spark: {
    app: {
      name: Spark Writer
    }
    driver: {
      cores: 8
      maxResultSize: 8G
    }
    cores {
      max: 64
    }
  }
 
  nebula: {
    # 查询引擎 IP 列表
    addresses: ["xxxxxxx"]
    # 连接 Nebula Graph 服务的用户名和密码
    user: xxxx
    pswd: xxxxxx
    # Nebula Graph 图空间名称
    space: alecliu_test
    # thrift 超时时长及重试次数
    # 如未设置,则默认值分别为 3000 和 3
    connection {
      timeout: 3000
      retry: 3
    }
    execution {
      retry: 3
    }
  }

  tags: {
    # 与上述类似
    # 从 Hive 加载将执行命令 $ {exec} 作为数据集
    player: {
      type: hive
      exec: "select cast(dst_dataset_id as bigint) as pid , hive_user , dst_dataset_id  from imd_datamap_safe.lineage_spark_etl_job where dt='2020-07-15'"
      fields: {
          hive_user:name,
          dst_dataset_id:age
      }
      vertex: pid
      batch: 160
    }
     team: {
      type: hive
      exec: "select cast(dst_db_id as bigint) as tid , dst_cluster   from imd_datamap_safe.lineage_spark_etl_job where dt='2020-07-15'"
      fields: {
          dst_cluster : team
      }
      vertex: tid
      batch: 160
    }
  }

  edges: {
   serve: {
    type: hive
    exec: "select cast(dst_dataset_id as bigint) as pid , cast(dst_db_id as bigint) as tid ,start_time ,end_time  from imd_datamap_safe.lineage_spark_etl_job where dt='2020-07-15'"
    fields: {
      start_time: start_year,
      end_time: end_year
     }
    source:  pid
    target:  tid
    batch: 160
   }
  }
}
  1. 命令
spark-submit \
 --class com.vesoft.nebula.tools.generator.v2.SparkClientGenerator \
 --master yarn \
 --deploy-mode client --num-executors 50 --executor-memory 2G --executor-cores 4 \
 ./sst.generator-1.0.0-beta.jar -c ./import_test.conf -h -d
  1. 日志

这里有篇介绍的文章,可以先参考一下: 浅析图数据库 Nebula Graph 数据导入工具——Spark Writer

这里面是不是有脏数据?

你在使用 dumptool 统计时候,有没有执行 flush 的操作,因为导入成功的数据有可能还没落盘。flush 操作的文档:submit flush job

另外,可以先验证一下 spark shell 能否从 hive 中读取到你的数据,或者 hive 中能否查到。

问题有解决吗。我要遇到同样的问题,但是我的是hdfs的文件。

你好,上面的问题最后定位原因是 HIVE 中的列类型跟 nebula 创建的 schema 没有完全的对应,导致没能真正的导入,在调了 graphd 的 log 级别为 INFO 之后找到的原因。

dump tool 的工具在扫描数据时,meta ip 的地址填入所有的 meta server 的 ip。

看看上面的过程对你那边定位问题是否有所帮助?

2 个赞

你好,之前已经检查出来了,确实是你所说的问题,我是首先把日志级别调高,在日志中看到后修复了,属于粗心大意的错误=-=。谢谢你们的解答!