我想通过Java提取TDE文件
new Extract(fileName)
但是我收到以下错误消息:
Caused by: com.tableausoftware.TableauException: server did not call us back
at com.tableausoftware.extract.Extract.<init>(Unknown Source)
我在不同的论坛中阅读了几个主题。建议的解决方案是在文件tdeserver64
上设置正确的权限。
这不能解决问题,这个例子仍然是一样的。
然后我尝试运行Tableau SDK提供的示例代码。示例代码正在运行。
示例代码和我的代码之间的区别在于jar文件maprfs-5.2.0.jar
在我的类路径中。
我们还加载了一个Hadoop配置,它使用MapR jar中的类生成二进制libMapRClient.5.2.0-mapr.so
文件并将此文件加载到JNA路径中。
java.io.FileInputStream.open0(Native Method)
java.io.FileInputStream.open(FileInputStream.java:195)
java.io.FileInputStream.<init>(FileInputStream.java:138)
com.mapr.fs.ShimLoader.extractLibraryFile(ShimLoader.java:421)
com.mapr.fs.ShimLoader.findNativeLibrary(ShimLoader.java:529)
com.mapr.fs.ShimLoader.loadNativeLibrary(ShimLoader.java:340)
com.mapr.fs.ShimLoader.load(ShimLoader.java:226)
org.apache.hadoop.conf.CoreDefaultProperties<clinit(CoreDefaultProperties.java:61)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Class.java:348)
看起来这会导致上述异常。我假设这是因为我得到了一个“C”堆栈跟踪:
*** glibc detected *** /usr/java/default/bin/java: free(): invalid pointer: 0x00007fde3a83e2c0 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x75dee)[0x7fdebd791dee]
/lib64/libc.so.6(+0x78c3d)[0x7fdebd794c3d]
/tmp/tableau-sdk/lib64/tableausdk/libtabsys.so(_ZNSs9_M_mutateEmmm+0x1c4)[0x7fde063b45c4]
/tmp/tableau-sdk/lib64/tableausdk/libtabsys.so(_ZNSs15_M_replace_safeEmmPKcm+0x1e)[0x7fde063b4a7e]
/root/tmp/mapr-root-libMapRClient.5.2.0-mapr.so(_ZN4mapr2fs8CidCache15GetCidForVolumeEPKcNS0_20VolLinkAttributeTypeEPjPNS0_6FidMsgEbb+0x4c2)[0x7fde3aea4982]
/root/mapr-root-libMapRClient.5.2.0-mapr.so(_ZN4mapr2fs8CidCache4InitEPKciPmPjPNS0_9MapClientEb+0x1b1)[0x7fde3aea61b1]
/root/mapr-root-libMapRClient.5.2.0-mapr.so(_ZN4mapr2fs9MapClient4InitEPmijjjPKcP8_jstringbb+0x1c7)[0x7fde3ae4bc17]
/root/mapr-root-libMapRClient.5.2.0-mapr.so(_ZN4mapr2fs9MapClient9GetClientEP7JNIEnv_PKcPmijjjS5_P8_jstringbPNS0_19MapClientInitParamsEPib+0x10f)[0x7fde3ae793ef]
/root/mapr-root-libMapRClient.5.2.0-mapr.so(_ZN4mapr2fs9MapClient9GetClientEP7JNIEnv_PKcPmijjjS5_P8_jstringbPNS0_19MapClientInitParamsEPi+0x49)[0x7fde3ae796d9]
/root/mapr-root-libMapRClient.5.2.0-mapr.so(Java_com_mapr_fs_jni_MapRClient_OpenClient+0x1b4)[0x7fde3af2f1c4]
如果删除maprfs.jar
,则TDE文件的提取有效。
当尝试在MapR Hadoop集群中提取TDE文件或在类路径中使用maprfs.jar
时,是否有人遇到同样的问题?
或者对libc.so
,libtabsys.so
和libMapRClient.so
有一些限制吗?
附注:此问题仅在Linux上发生,而不是在Mac OS X上发生。