Java Apache Arrow Plasma客户端-Can';无法连接到内存存储(未满足链接错误)
我正在尝试使用JavaAPI for ApacheArrow连接到内存存储。我已经在Python中成功地完成了这项工作,通过遵循指南使用Python API 我也看过了,但没什么帮助 使其看起来与其他文档类似Java Apache Arrow Plasma客户端-Can';无法连接到内存存储(未满足链接错误),java,sockets,java-native-interface,pyarrow,apache-arrow,Java,Sockets,Java Native Interface,Pyarrow,Apache Arrow,我正在尝试使用JavaAPI for ApacheArrow连接到内存存储。我已经在Python中成功地完成了这项工作,通过遵循指南使用Python API 我也看过了,但没什么帮助 使其看起来与其他文档类似 确保plasma对象存储正在运行(通常为“/tmp/plasma” (对于示例) 创建客户端 通过为其他两个参数提供对象存储(“/tmp/plasma”)和(“,0”),连接到客户端 然而,当尝试使用下面这行代码时,我得到了一个不满意的linkerror,在apachearrow文档中
然而,当尝试使用下面这行代码时,我得到了一个不满意的linkerror,在apachearrow文档中找不到任何引用。谷歌的其他解决方案(如calling System.load)也没有成功
PlasmaClient客户端=新的PlasmaClient(“/tmp/plasma”,0)代码>
下面可以看到我的错误消息的副本:
线程“main”java.lang.UnsatisfiedLinkError中的异常:org.apache.arrow.plasma.PlasmaClientJNI.connect(Ljava/lang/String;Ljava/lang/String;I)J
位于org.apache.arrow.plasma.PlasmaClientJNI.connect(本机方法)
在org.apache.arrow.plasma.PlasmaClient上
在plas.main(plas.java:11)
感谢您的帮助。谢谢大家! 我已经有一段时间没有这样做了,但问题很简单,尽管不容易找到。在测试例程中,您可以找到一条重要的行:
System.loadLibrary(“plasma_java”);
val plasmaClient=新的plasmaClient(“/tmp/plasma”,0);
< >共享库<代码> LbPcPaMaJava.Sux/Sux>,在编译CMake中的C++扩展时,选项为代码> -DrRayPrasMajJavaAclipse=。在arrow/java/plasma/test.sh
文件中,您可以找到完整的build命令,但这是从该文件派生的命令:
cd箭头/cpp
mkdir发布
光盘发行
cmake-DCMAKE\u BUILD\u TYPE=发布\
-DCMAKE_C_FLAGS=“-g-O3”\
-DCMAKE_CXX_FLAGS=“-g-O3”\
-DARROW_构建_测试=关闭\
-DARROW_HDFS=on\
-DARROW\u BOOST\u USE\u SHARED=on\
-DARROW_PYTHON=on\
-DARROW_PLASMA=on\
-DPLASMA_PYTHON=on\
-DARROW_JEMALLOC=关闭\
-DARROW_带_BROTLI=关闭\
-DARROW_与_LZ4=关闭\
-DARROW_带_ZLIB=关闭\
-DARROW_带_ZSTD=关闭\
-DARROW\u PLASMA\u JAVA\u CLIENT=on\
..
使VERBOSE=1-j4
安装
我只是运行了它,它按照需要构建了所有东西。如果您想在某处安装它,只需添加前缀-DCMAKE\u install\u prefix=/home/myuser/install here
如果您运行
System.loadLibrary(“plasma_java”)
它只在的情况下工作。因此可以在您的系统中的某个地方找到(这种东西通常在Linux上由环境变量LD_LIBRARY_PATH
指定)。请注意,这也需要系统路径中的libplasma.so
和libarrow.so
。您可以在开发人员邮件列表中询问吗dev@arrow.apache.org? 这是非常前沿的东西,我的建议是缺少本机库(由于JNI),这是必需的。