本项目是本人具体项目数据迁移过程中的代码,需要根据自身情况修改代码 交流邮箱:zhoupengblack@qq.com
- conf 目录下放置了数据导入的配置文件,并且对相关配置项都做了些说明
- data 为图创建的 schema
- test.data 是我们从 AgensGraph 数据库导出的顶点和边的数据格式 后续的代码都是基于这份数据格式进行解析和操作的
- hive 将转换后的数据利用 hive 添加唯一 id
- scripts janusgraph 导入的时候需要对数据进行解析
- resources 下的 sh,groovy 脚本是方便数据导入 写的一些简单脚本
-
data.convert 目录下代码是将导出的数据转换为hive 表,再利用上面说的hive脚本添加 唯一id
核心为 MergeNodesAndEdges 利用 spark的 cogroup 操作 转换为 janusgraph 接受的导入格式 此步操作耗时比较久,比较占内存,spark.network.timeout=600 设置长一点 -
direct 此目录下的代码 为直接连接 janusgraphServer 插入数据。如果数据量比较小的情况下可以使用
-
increment 为导入增量数据,当历史数据导入完毕后需要导入增量数据,需要检查顶点和表是否已经存在
java.lang.OutOfMemoryError: unable to create new native thread
- 机器的 ulimit -u 设置比较小 可以设置 102400
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
- spark 内存不足,有两个方案 增大 spark.executor.memory 或者调小 spark.executor.cores 保证 spark.executor.memory / spark.executor.cores 在 6G,7G左右
KryoSerializer Failed to find one of the right cookies
-
KryoSerializer 序列化 spark 配置不对,参考 hadoop-vertex-script.properties 配置文件
-
确保建议唯一索引的数据是唯一的,id是唯一的,不然数据导入会有问题
- pom 文件中的 provided 表示在打包的时候不会打入进去 集群环境中是已经有这些包的,在本地调试的时候需要将这行注释掉 本地调试时 代码中的这行也需要放开 // conf.setMaster("local")
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_${scala.version}</artifactId>
<version>${spark.version}</version>
<scope>provided</scope>
</dependency>