使用spark读取kafka分析的时候,kafka 的startingOffsets如果设置为earliest,就会报错:
java.lang.NoSuchMethodError: net.jpountz.lz4.LZ4BlockInputStream.<init>(Ljava/io/InputStream;Z)V
使用mvn -Dverbose dependency:tree检查发现,是spark和kafka-client中都包含了lz4包,但是spark中的版本是1.4,但是kafak-client中lz4版本是1.3,所以会发生冲突,把kafka-client的lz4 exclusion掉就可以。如下:
<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>${kafka.version}</version> <scope>${scope.mode}</scope> <exclusions> <exclusion> <groupId>net.jpountz.lz4</groupId> <artifactId>lz4</artifactId> </exclusion> </exclusions>