Spark:执行python kinesis流示例

时间:2017-09-09 16:34:46

标签: apache-spark pyspark spark-streaming amazon-kinesis

我是(非常)新兴的,所以如果这是一个愚蠢的问题,请道歉。

我正在尝试执行spark(2.2.0)python spark streaming示例,但是我一直遇到以下问题:

Traceback (most recent call last):
  File "/Users/rmanoch/Downloads/spark-2.2.0-bin-hadoop2.7/kinesis_wordcount_asl.py", line 76, in <module>
    ssc, appName, streamName, endpointUrl, regionName, InitialPositionInStream.LATEST, 2)
  File "/Users/rmanoch/Downloads/spark-2.2.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/streaming/kinesis.py", line 92, in createStream
  File "/Users/rmanoch/Downloads/spark-2.2.0-bin-hadoop2.7/python/lib/py4j-0.10.4-src.zip/py4j/java_gateway.py", line 1133, in __call__
  File "/Users/rmanoch/Downloads/spark-2.2.0-bin-hadoop2.7/python/lib/py4j-0.10.4-src.zip/py4j/protocol.py", line 323, in get_return_value
py4j.protocol.Py4JError: An error occurred while calling o27.createStream. Trace:
py4j.Py4JException: Method createStream([class org.apache.spark.streaming.api.java.JavaStreamingContext, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.Integer, class org.apache.spark.streaming.Duration, class org.apache.spark.storage.StorageLevel, null, null, null, null, null]) does not exist
        at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318)
        at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:326)
        at py4j.Gateway.invoke(Gateway.java:272)
        at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
        at py4j.commands.CallCommand.execute(CallCommand.java:79)
        at py4j.GatewayConnection.run(GatewayConnection.java:214)
        at java.lang.Thread.run(Thread.java:745)

我从spark网站下载的tarball中没有包含外部文件夹(好像有一些许可证问题),所以这是我一直试图执行的命令(从{{3下载kinesis_wordcount_asl.py后) }})

bin/spark-submit --packages org.apache.spark:spark-streaming-kinesis-asl_2.11:2.2.0 kinesis_wordcount_asl.py sparkEnrichedDev relay-enriched-dev https://kinesis.us-west-2.amazonaws.com us-west-2

如果需要,很高兴提供任何其他详细信息。

2 个答案:

答案 0 :(得分:3)

基于异常,看起来核心Spark / Spark流与spark-kinesis之间存在版本不匹配。在Spark 2.1和2.2(SPARK-19405)之间更改了API,版本不匹配会导致类似的错误。

这让我觉得你提交的是使用错误的二进制文件(只是一个猜测) - 如果你使用PATH模式,它可能会PYTHONPATHSPARK_HOMElocal出现问题。由于签名不匹配,我们可以假设spark-kinesis已正确加载且org.apache.spark.streaming.kinesis.KinesisUtilsPythonHelper上存在CLASSPATH

答案 1 :(得分:0)

我发现有人像我一样出现在这里,这是由于版本不匹配所致。我遇到了同样的问题,我设法通过将相应的版本与kinesis软件包匹配来解决了这个问题。这两个数字应与用于编译库的Scala版本和Spark版本相匹配。例如,我有以下内容:

$ spark-submit --version
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.5
      /_/

Using Scala version 2.11.12, OpenJDK 64-Bit Server VM, 1.8.0_222
Branch HEAD
Compiled by user centos on 2020-02-02T19:38:06Z
Revision cee4ecbb16917fa85f02c635925e2687400aa56b
Url https://gitbox.apache.org/repos/asf/spark.git
Type --help for more information.

这对应于使用Scala 2.4.5编译的Spark 2.11.12。因此,相应的软件包应为

spark-submit --packages org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5 kinesis_...