我在尝试使用sparkstreaming、python运行单词计数示例时遇到以下错误。
不知道如何进行。下面是我正在运行的命令和错误。
/opt/spark/bin/spark-submit --jars spark-streaming_2.10-2.0.0.jar test_kafka.py broker.txt "localhost:2181:MyTopic"
Error:
Traceback (most recent call last):
File "/home/ubuntu/kafka/libs/test_kafka.py", line 21, in <module>
kvs = KafkaUtils.createDirectStream(ssc, [topic], {"metadata.broker.list": brokers})
File "/opt/spark/python/lib/pyspark.zip/pyspark/streaming/kafka.py", line 122, in createDirectStream
File "/opt/spark/python/lib/pyspark.zip/pyspark/streaming/kafka.py", line 195, in _get_helper
TypeError: 'JavaPackage' object is not callable
1条答案
按热度按时间o4hqfura1#
您得到的错误来自您正在使用的jar包。它与spark/kafka版本不匹配,因此崩溃。
我刚刚检查了spark(2.4.4)和kafka的最新版本,以下包命令可以工作:
因此,请尝试以下命令:
/opt/spark/bin/spark-submit --packages org.apache.spark:spark-streaming-kafka-0-8_2.11:2.0.2 test_kafka.py broker.txt "localhost:2181:MyTopic"
问题是如何选择每次正确的套餐。文件包格式应为:groupId:artifactId:version
在上述示例中:groupid:总是org.apache.spark
artifactid:从spark文档中获取最新信息。在本例中,我选择了:spark-streaming-kafka-0-8u2.11
版本:spark版本。在这里我选择了2.0.2。它不是最新的,但它与我正在使用的spark版本2.4.4具有向后兼容性。