我正在尝试使用javaapi而不是scala从apachespark流连接到kafka。
我收到以下错误:
原因:java.lang.nosuchmethodexception:org.apache.spark.util.systemclock.()at java.lang.class.getconstructor0(class。java:3082)在java.lang.class.newinstance(class。java:412)
创建javastreamingcontext对象时出现错误。
这是我的密码:
JavaStreamingContext jssc = new JavaStreamingContext("local[2]", "KafkaWordCount",
new Duration(2000), System.getenv("SPARK_HOME"),
JavaStreamingContext.jarOfClass(JavaKafkaWordCount.class));
Map<String, Integer> topicMap = new HashMap<String, Integer>();
topicMap.put("fast-messages", 2);
JavaPairDStream<String, String> messages = KafkaUtils.createStream(jssc, "localhost:9092", "test", topicMap);
JavaDStream<String> lines = messages.map(new Function<Tuple2<String, String>, String>() {
// @Override
public String call(Tuple2<String, String> tuple2) {
return tuple2._2();
}
});
jar版本:
spark-streaming-kafka 2.10-1.6.2 spark-core 2.11-1.2.1 spark-streaming 2.10-1.6.0
如果你需要更多的信息,请告诉我。
1条答案
按热度按时间c3frrgcw1#
热释光;dr使用
spark-core_2.10
这是因为使用中的scala版本的依赖关系不匹配。看到了吗
spark-streaming-kafka_2.10
以及spark-core_2.11
以及spark-streaming_2.10
. 流jar是为scala2.10编译的,而spark core是为2.11编译的。它不会强迫您在java上使用scala。spark主要使用scala编写,使用scala构建的依赖项必须与其scala版本相匹配。