Kafka与Spark Streaming集成错误

时间:2018-11-08 06:47:29

标签: java apache-spark pyspark apache-kafka spark-streaming

我无法通过火花流运行Kafka。以下是我到目前为止采取的步骤:

  1. 下载了jar文件“ spark-streaming-kafka-0-8-assembly_2.10-2.2.0.jar”并将其移至/home/ec2-user/spark-2.0.0-bin-hadoop2.7/jars

  2. 将此行添加到/home/ec2-user/spark-2.0.0-bin-hadoop2.7/conf/spark-defaults.conf.template-> spark.jars.packages org.apache.spark:spark-streaming-kafka-0-8-assembly_2.10:2.2.0

Kafka版本:kafka_2.10-0.10.2.2

Jar文件版本:spark-streaming-kafka-0-8-assembly_2.10-2.2.0.jar

Python代码:

os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages org.apache.spark:spark-streaming-kafka-0-8-assembly_2.10-2.2.0 pyspark-shell' 
kvs = KafkaUtils.createDirectStream(ssc, ["divolte-data"], {"metadata.broker.list": "localhost:9092"})

但是我仍然遇到以下错误:

Py4JJavaError: An error occurred while calling o39.createDirectStreamWithoutMessageHandler.
: java.lang.NoClassDefFoundError: Could not initialize class kafka.consumer.FetchRequestAndResponseStatsRegistry$
    at kafka.consumer.SimpleConsumer.<init>(SimpleConsumer.scala:39)
    at org.apache.spark.streaming.kafka.KafkaCluster.connect(KafkaCluster.scala:59)

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

spark-defaults.conf.template只是一个模板,不能被Spark读取,因此不会加载您的JAR。您必须复制/重命名此文件才能删除模板后缀

如果要使用这些特定的JAR文件,还需要下载Spark 2.2。

如果要使用的Kafka软件包,请确保您的Spark版本使用Scala 2.10。否则,请使用2.11版本