1

CDH4 クラスターで Presto を使用して、圧縮されたテーブルを読み込もうとしています。Hive はテーブルを読み取ることができますが、Presto はネイティブ ライブラリが見つからないと文句を言います。

CDH から java.library.path を追加しても効果がないようです。(jvm.config に追加)

-Djava.library.path=/opt/cloudera/parcels/CDH-4.4.0-1.cdh4.4.0.p0.39/lib/hadoop/lib/native

ここにスタックトレースがあります

Caused by: java.lang.RuntimeException: native snappy library not available: SnappyCompressor has not been loaded.
at org.apache.hadoop.io.compress.SnappyCodec.checkNativeCodeLoaded(SnappyCodec.java:68) ~[na:na]
at org.apache.hadoop.io.compress.SnappyCodec.createDecompressor(SnappyCodec.java:196) ~[na:na]
at org.apache.hadoop.hive.ql.io.CodecPool.getDecompressor(CodecPool.java:35) ~[na:na]
at org.apache.hadoop.hive.ql.io.RCFile$Reader.init(RCFile.java:1314) ~[na:na]
at org.apache.hadoop.hive.ql.io.RCFile$Reader.<init>(RCFile.java:1154) ~[na:na]
at org.apache.hadoop.hive.ql.io.RCFile$Reader.<init>(RCFile.java:1133) ~[na:na]
at org.apache.hadoop.hive.ql.io.RCFileRecordReader.<init>(RCFileRecordReader.java:102) ~[na:na]
at org.apache.hadoop.hive.ql.io.RCFileInputFormat.getRecordReader(RCFileInputFormat.java:57) ~[na:na]
at com.facebook.presto.hive.HiveRecordSet$1.call(HiveRecordSet.java:185) ~[na:na]
  ...

ライブラリ ディレクトリ

ls -l /opt/cloudera/parcels/CDH-4.4.0-1.cdh4.4.0.p0.39/lib/hadoop/lib/native
total 564
-rwxr-xr-x 1 root root 133184 Sep  6 00:12 libhadoop.a
-rwxr-xr-x 1 root root 193020 Sep  6 00:12 libhadooppipes.a
lrwxrwxrwx 1 root root     18 Sep  6 08:26 libhadoop.so -> libhadoop.so.1.0.0
-rwxr-xr-x 1 root root  81680 Sep  6 00:12 libhadoop.so.1.0.0
-rwxr-xr-x 1 root root  58600 Sep  6 00:12 libhadooputils.a
-rwxr-xr-x 1 root root  77476 Sep  6 00:12 libhdfs.a
lrwxrwxrwx 1 root root     18 Sep  6 08:26 libsnappy.so -> libsnappy.so.1.1.3
lrwxrwxrwx 1 root root     18 Sep  6 08:26 libsnappy.so.1 -> libsnappy.so.1.1.3
-rwxr-xr-x 1 root root  23904 Sep  6 00:12 libsnappy.so.1.1.3
4

1 に答える 1

2

Presto 0.54 は Snappy 圧縮をサポートしています。

于 2013-11-16T03:36:11.457 に答える