【问题标题】:TypeError: 'JavaPackage' object is not callableTypeError:“JavaPackage”对象不可调用
【发布时间】:2017-01-04 22:16:04
【问题描述】:

我在尝试使用 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

【问题讨论】:

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


【解决方案1】:

您得到的错误来自您正在使用的 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:MyTopic"

问题是如何每次选择正确的包。 包的格式应该是:

groupId:artifactId:version

在上面的例子中:

groupId:总是 org.apache.spark

artifactId:从 spark 文档中获取最新信息。在这种情况下,我选择:spark-streaming-kafka-0-8_2.11

版本:火花版本。这里我选择了2.0.2。它不是最新的,但它与我正在使用的 spark 版本 2.4.4 具有向后兼容性。

【讨论】:

    猜你喜欢
    • 2020-02-24
    • 2022-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 2021-04-02
    相关资源
    最近更新 更多