flink读写nebula数据出错

  • nebula 版本:nebula1.x……具体哪个版本已经记不太清了
  • 部署方式:Docker
  • 问题的具体描述:尝试通过flink来读取写入数据,但是好像报一个.so找不到的错误,在本地和服务器上都试过不太好使,

maven依赖:

        <dependency>
            <artifactId>nebula-flink</artifactId>
            <groupId>com.vesoft</groupId>
            <version>${nebula.version}</version>
        </dependency>

报错日志如下:

2020-12-17 17:08:10,753 INFO  com.vesoft.nebula.utils.NativeUtils                           - Load /tmp/nativeutils1220502106376336/libnebula_codec.so as libnebula_codec.so
2020-12-17 17:08:10,784 ERROR com.vesoft.nebula.NebulaCodec                                 - no nebula_codec in java.library.path
java.lang.UnsatisfiedLinkError: no nebula_codec in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1122)
        at com.vesoft.nebula.NebulaCodec.<clinit>(NebulaCodec.java:23)
        at com.vesoft.nebula.data.RowReader.decodeValue(RowReader.java:86)
        at com.vesoft.nebula.data.RowReader.decodeValue(RowReader.java:81)
        at com.vesoft.nebula.client.storage.processor.ScanVertexProcessor.process(ScanVertexProcessor.java:61)
        at com.vesoft.nebula.client.storage.processor.ScanVertexProcessor.process(ScanVertexProcessor.java:26)
        at org.apache.flink.connector.nebula.source.NebulaInputFormat.open(NebulaInputFormat.java:131)
        at org.apache.flink.runtime.operators.DataSourceTask.invoke(DataSourceTask.java:173)
        at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:705)
        at org.apache.flink.runtime.taskmanager.Task.run(Task.java:530)
        at java.lang.Thread.run(Thread.java:745)
2020-12-17 17:08:11,145 INFO  org.apache.flink.connector.nebula.source.NebulaInputFormat    - Closing split (scanned 3 rows)

Nebula 1.x的 java 客户端用到了JNI调用,会动态加载nebula_codec.so文件的。
你发一下 使用的Nebula 服务的版本 和 nebula-flink的版本吧

感谢回复!
镜像是nightly的,安装的时间是两个月前,看到一直在更新好像,具体版本不知道怎么确定……nebula-flink的版本是最新的1.1.0,昨天拉的代码更新的
我看了下运行的tmp目录下是有那个so文件的

我用1.1.0的Nebula 服务 & 最新的flink跑了一下flink的example,没有so文件的问题。 稍等我试下最新的Nebula服务

用2020-10.15的nightly版本的服务也可以。
你是在什么环境下执行的,只支持linux环境哈

嗯嗯,之前是在linux环境下提交执行的任务哈,昨天一直有这个问题,今天刚刚重新打包放上去又没有出现这个错误……不过还是非常感谢您的解答哈

1 个赞

您好 我这边也遇到了这个问题

你好,1.x读取数据调用到了JNI去做数据解析,如果在NebulaCodec中出现了nebula_codec in java.library.path 问题,可以忽略。

这是因为客户端在调用 NebulaCodec之前已经将动态链接库so文件加载好了,而NebulaCodec自己又进行了一次加载,NebulaCodec在指定目录下并没有读到so文件,所以就打印了这个错误日志,但不影响后面的操作。