(spark消费kafka有jar包冲突)java.lang.NoSuchMethodError: net.jpountz.lz4.LZ4BlockInputStream.

 Spark 消费kafka时,抛出异常

“java.lang.NoSuchMethodError: net.jpountz.lz4.LZ4BlockInputStream.<init>(Ljava/io/InputStream;Z)Vat

原因:

应用在执行时对数据解码(反序列化)时,使用了默认的lz4解压缩算法,在spark-core中依赖的lz4版本是1.4,而kafka-client中依赖的lz4版本是1.3版本,在生成解压器时,版本不兼容异常。

解决方法:

可参考网上修改源码解决,也可通过设置"spark.io.compression.codec","snappy"或其他压缩算法规避。鉴于修改源码重新打包替换较为繁琐,建议设置其他压缩算法规避。

举例如下:

conf = SparkConf().set("spark.io.compression.codec", "snappy")
sc = SparkContext(master="local[4]", appName="SparkStreamingKafkaLog",conf=conf)
sc.setLogLevel("error")
ssc = StreamingContext(sc, 10)

猜你喜欢

转载自blog.csdn.net/zhenzi_PeppaPig/article/details/84442296
今日推荐