TypeError:'JavaPackage'对象不可调用

时间:2016-08-28 23:45:34

标签: python hadoop apache-spark pyspark spark-streaming

我在使用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 个答案:

答案 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具有向后兼容性。