我在尝试使用 spark streaming,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
最佳答案
您收到的错误来自您正在使用的 jar 包。它与您的 spark/kafka 版本不匹配,它会崩溃。
我刚刚检查了今天最新的 spark (2.4.4) 和最新的 kafka 以下包命令有效:
`--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 :我的主题"
问题是如何每次都选择正确的包。 包的格式应该是:
groupId:artifactId:version
在上面的例子中:
groupId:始终为 org.apache.spark
artifactId:从 spark 文档中获取最新的。在这种情况下,我选择了:spark-streaming-kafka-0-8_2.11
版本:spark版本。这里我选择了2.0.2。它不是最新的,但它与我正在使用的 spark 版本 2.4.4 具有向后兼容性。
关于python - 类型错误 : 'JavaPackage' object is not callable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39196815/