以前寫過一篇這個文章:http://blog.csdn.net/stark_summer/article/details/47361603,那個時候 linux環境 spark 使用snappy方式壓縮任然很差用,而今天我同事hive on hadoop 使用snappy壓縮方式也報這個錯,此刻的我,感受這個問題 必定要解決java
我想了想,只能使用最笨的方式先解決這個問題了,將libsnappyjava.so文件放到$JAVA_HOME/jre/lib/amd64/下了linux
操做過程以下:app
首先把$HADOOP_HOME/share/hadoop/common/lib/snappy-java-1.1.1.7.jar copy到臨時目錄下,而後unzip snappy-java-1.1.1.7.jaroop
解壓後會有以下目錄:測試
4096 Aug 31 15:58 META-INF
4096 Apr 14 16:05 orgspa
進入libsnappyjava.so所在目錄:.net
$cd org/xerial/snappy/native/Linux/x86_64/code
就能夠看到以下文件:blog
libsnappyjava.so
ip
copy 到$JAVA_HOME/jre/lib/amd64/
測試程序以下:
import org.xerial.snappy.Snappy; /** * * Created by stark_summer on 15/8/8. * */ public class TestSnappy { public static void main(String[] args) throws Exception{ String input = "Hello snappy-java! Snappy-java is a JNI-based wrapper of " + "Snappy, a fast compresser/decompresser."; byte[] compressed = Snappy.compress(input.getBytes("UTF-8")); byte[] uncompressed = Snappy.uncompress(compressed); String result = new String(uncompressed, "UTF-8"); System.out.println(result); } }
執行:java TestSnappy
執行結果:
Hello snappy-java! Snappy-java is a JNI-based wrapper of Snappy, a fast compresser/decompresser.
將「libsnappyjava.so」文件copy到 hadoop集羣:$JAVA_HOME/jre/lib/amd64/下,hive on hadoop,使用snappy方式壓縮不在報錯,搞定了
將SPARK_HOME/conf/spark-defaults.conf
spark.io.compression.codec lzf 註釋或者去掉這行,spark將使用默認snappy壓縮方式,也再也不報錯了
PS:
目前用最笨的方式解決了,但仍是要進一步排查此問題