nebula, exchange 1.x 制作sst文件时报no nebula_codec错误,导致executor失败,程序退出

nebula版本:1.2.1
exchange版本:1.0
spark版本:2.4.7
使用csv->client的方式是可以正常导入的,但使用csv->sst的形式,会出现如下错误,导致executor失败,程序退出


我是按照这个教程编译的exchange:编译 Exchange - Nebula Graph Database 内核手册
然后按照这个教程进行导入:导入 CSV 文件数据 - Nebula Graph Database 内核手册
请问我是缺少了哪一步操作吗?

看样子是少了某些 jar 包,具体需要 cc @nicole 看一下

你的Spark任务提交模式是什么样的,看下环境的maven本地仓库有没有https://repo1.maven.org/maven2/com/vesoft/nebula-utils/1.0.0-rc2/ 这个包

提交模式是yarn-cluster,maven的本地仓库是有这个jar包的

[root@xxxx 1.0.0-rc2]# ll
total 3524
-rw-r--r-- 1 root root 3581900 Apr 22 10:24 nebula-utils-1.0.0-rc2.jar
-rw-r--r-- 1 root root      40 Apr 22 10:24 nebula-utils-1.0.0-rc2.jar.sha1
-rw-r--r-- 1 root root    9930 Apr 22 10:24 nebula-utils-1.0.0-rc2.pom
-rw-r--r-- 1 root root      40 Apr 22 10:24 nebula-utils-1.0.0-rc2.pom.sha1
-rw-r--r-- 1 root root     214 Apr 22 10:24 _remote.repositories

我看了下exchange代码,大概定位了下问题,麻烦帮忙分析解决下
image
image
1.我查看了exchange-1.2.0.jar,其中确实有libnebula_codec.so文件,这一步执行正常
2.将libnebula_codec.so拷贝到java.io.tmpdir目录,我在yarn-cluster模式运行时,打印java.io.tmpdir目录路径为:/data0/hadoop/yarn/local/usercache/hdfs/appcache/application_1594192534703_120304/container_e01_1594192534703_120304_01_000002/tmp,在其中确实找到了拷贝的libnebula_codec.so文件,这一步也执行正常
3.NebulaCodec类初始化时,会加载java.library.path目录下的libnebula_codec.so文件,我同样将该路径打印出来为:/usr/hdp/current/hadoop-client/lib/native:/usr/hdp/current/hadoop-client/lib/native/Linux-amd64-64::/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib,在这些路径下并不能找到libnebula_codec.so文件,所以程序报错

所以,我认为问题主要出现在我的java.library.path路径不包含java.io.tmpdir路径,导致无法加载so文件,还请大佬帮忙解决一下

你打印出来的tmpdir每次都会是不一样的,是为了将nebula-utils包中的.so文件临时拷贝到本地进行加载。
如果java.library.path中没有libnebula_codec.so文件 你试下手动将文件拷贝到任意一个library.path目录下。

我尝试将libnebula_codec.so拷贝到/usr/lib目录下,使用spark-local模式运行,发现报了下面这个错误,我发现他说的这个地址位置确实为空,是因为libnebula_codec.so没有加载进来吗

这个帖子跟你的问题一样,可沟通下解决方法

浙ICP备20010487号