共计 494 个字符,预计需要花费 2 分钟才能阅读完成。
背景
一个 spark 任务执行碰到的问题,看起来是snappy包出现的问题,我自己手动指定的是1.1.7版本,cdh 还是1.0.4版本
java.lang.UnsatisfiedLinkError: org.xerial.snappy.SnappyNative.maxCompressedLength(I)I
出现问题的原因google下之后说是包加载引用link时加载的版本不对导致的。
分析
- 默认情况下,spark优先使用/etc/spark/conf/classpath.txt里自带的依赖包;
- 若是找不到则查找用户通过 –jar 提交的依赖包(位于driver、executor的classpath里);
- 若是两个路径下都有相同名字的依赖包(版本不同),则抛出linked exception用户解决冲突;
解决:
--jars snappy-java-1.1.7.jar
--conf "spark.driver.extraClassPath=snappy-java-1.1.7.jar" \
--conf "spark.executor.extraClassPath=snappy-java-1.1.7.jar" \
正文完
请博主喝杯咖啡吧!