我在使用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
答案 0 :(得分:0)
您收到的错误来自正在使用的jar包。它与您的spark / kafka版本不匹配,并且崩溃了。
我刚刚检查了最新的spark(2.4.4)和最新的kafka 以下打包命令有效:
insert into songs (...,bounty3) values (..., NULL)
因此,请尝试以下命令:
`--packages org.apache.spark:spark-streaming-kafka-0-8_2.11:2.0.2`
问题是每次如何选择正确的包装。 软件包的格式应为:
/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:始终是org.apache.spark
artifactId:从spark文档获取最新信息。在这种情况下,我选择了:spark-streaming-kafka-0-8_2.11
版本:Spark版本。在这里,我选择了2.0.2。它不是最新的,但与我使用的Spark版本2.4.4具有向后兼容性。