最笨的方法解决 使用Snappy 压缩方式报错“java.lang.UnsatisfiedLinkError: no snappyjava in java.library.path”

之前写过一篇这个文章:http://blog.csdn.net/stark_summer/article/details/47361603,那个时候 linux环境 spark 使用snappy方式压缩任然不好用,而今天我同事hive on hadoop 使用snappy压缩方式也报这个错,此刻的我,感觉这个问题 一定要解决

我想了想,只能使用最笨的方式先解决这个问题了,将libsnappyjava.so文件放到$JAVA_HOME/jre/lib/amd64/下了

操作过程如下:

首先把$HADOOP_HOME/share/hadoop/common/lib/snappy-java-1.1.1.7.jar copy到临时目录下,然后unzip snappy-java-1.1.1.7.jar

解压后会有如下目录:

4096 Aug 31 15:58 META-INF

4096 Apr 14 16:05 org

进入libsnappyjava.so所在目录:

$cd org/xerial/snappy/native/Linux/x86_64/

就可以看到如下文件:

libsnappyjava.so

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);
    }
}

编译:javac -classpath ./snappy-java-1.1.1.7.jar TestSnappy.java

执行: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:

目前用最笨的方式解决了,但还是要进一步排查此问题

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 12:05:00

最笨的方法解决 使用Snappy 压缩方式报错“java.lang.UnsatisfiedLinkError: no snappyjava in java.library.path”的相关文章

使用Snappy 压缩方式报错“java.lang.UnsatisfiedLinkError: no snappyjava in java.library.path”

情况描述 其实这个问题已经困扰我很久了,最近在公司Linux上搭建hadoop 和 spark环境的时候,我就遇到 spark提交作业到yarn 集群就报错这个错,当时已经安装snappy环境了,任何关于snappy静态库都编译了,这是我提交到spark mail list上的http://apache-spark-user-list.1001560.n3.nabble.com/java-lang-UnsatisfiedLinkError-no-snappyjava-in-java-librar

java.lang.UnsatisfiedLinkError:no in java.library.path解决办法

在用exe4j打包java工程后,在其他电脑运行结果出现了  java.lang.UnsatisfiedLinkError:no  in java.library.path的错误,刚开始以为是jar包没在classpath路径中,后来才发现java.library.path与classpath是两个不同的变量,后者是我们所熟知的类路径,与jar包有关:而前者与dll有关,它指定dll文件搜索路径. 在我的工程中,用到了第三方jar包和dll文件,dll文件放在了工程根目录,在eclipse中

运行测试Caused by: java.lang.UnsatisfiedLinkError: no attach in java.library.path错误解决

解决办法:看到错误里面有个Caused by,说我的jdk运行到了32位的了,于是我查看环境变量,发现是昨天设置成32位的没有设置回来,于是设置回64位的jdk就ok了

【我的Android进阶之旅】Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implementation found for的解决方法

错误描述 今天使用第三方的so库时候,调用JNI方法时出现了错误.报错如下所示: 11-01 16:39:20.979 4669-4669/com.netease.xtc.cloudmusic E/art: No implementation found for void com.netease.xtc.cloudmusic.utils.NeteaseMusicUtils.nativeInit(android.content.Context) (tried Java_com_netease_xt

java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapSDK 的解决方法

遇到找不到so的同学们可以先从以下几个方面来检查问题: 1.so的名字是不是被修改了?我们SDK的so名字是固定的,如果您自行对它进行了重命名操作,那肯定是没法找到so的.2.so放置位置不对.so需要放在libs/armeabi这个文件夹下,请检查一下.3.CPU架构问题.目前我们的SDK还不支持x86的CPU,所以如果您的模拟器或真机采用的x86架构,这样就没法使用我们的SDK了.4.还是CPU架构问题.虽然我们现在支持的是ARM的CPU,但是对于一些特殊的设备,so需要放置在libs/ar

解决Eclipse不能打包APK报错的问题

1.在Android SDK Tool r19之后, Export的时候遇到xxx is not translated in yyy, zzz的问题. 例如说"auto_exit" is not translated in zh, zh_CN. 这是因为Android SDK Tool 將 ANDROID_LINT_COMPLETE_REGIONS 改为了需要检查. 临时解决方法:Eclipse > Preference > Android > Lint Error

解决app store下载反复报错“下载失败,请到下载栏重试”

google了一下,大家的解决办法有: 通过显示出debug栏,重置app store(点击reset application) (Refer to: http://daluo.com/article/15135/) 找个其他的下载源进行下载,例如百度网盘,soft.macx.cn 通过thunder的thunder store下载 将DNS修改为8.8.8.8 最后,我通过下面的方法解决了: 将DNS修改为8.8.8.8 解决app store下载反复报错"下载失败,请到下载栏重试"

[转]解决IIS下UTF-8文件报错乱码的问题

找了两天才找到解决办法…….晕晕晕...用第二种方法解决了. 网上找到的方法都没有写这一条 If objASPError.ASPDescription > "" Then 后面的回车去掉(这个地方微软写错了) 将这一句后面的<br>注释掉即可! Response.Write Server.HTMLEncode(objASPError.ASPDescription)' & "<br>" 转自:http://blog.csdn.ne

java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol &quot;srand&quot; referenced by &quot;libcocos2dcpp.so&quot;...错误解决

在cocos2d-x 3.5中进行开发的时候,Android代码的编译可能会碰到如下错误:java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "srand" referenced by "libcocos2dcpp.so"... 解决这个问题的办法之一就是把ndk版本从r10d降为r9d,不过这并不是推荐的方法,因为r9d对C++ 11的正则表达式支持不够,以及一些其它的原因. 解决