Spark:执行 python 运动流示例
Spark: Executing the python kinesis streaming example
我是(非常)新接触 spark 的人,如果这是一个愚蠢的问题,我深表歉意。
我正在尝试执行 spark (2.2.0) python spark 流示例,但是我将 运行 保留在以下问题中:
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 没有包含外部文件夹(似乎有一些许可证问题),所以这是我一直试图执行的命令(从 [下载 kinesis_wordcount_asl.py
后 github)
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
如果需要,很乐意提供任何其他详细信息。
根据异常情况,核心 Spark / Spark 流和 spark-kinesis
之间似乎存在版本不匹配。 API 在 Spark 2.1 和 2.2 (SPARK-19405) 之间更改,版本不匹配会导致类似的错误。
这让我觉得您提交的二进制文件不正确(只是猜测)- 如果您使用 [=14=,则可能是 PATH
、PYTHONPATH
或 SPARK_HOME
问题] 模式。因为签名不匹配,我们可以假设 spark-kinesis
已正确加载并且 org.apache.spark.streaming.kinesis.KinesisUtilsPythonHelper
出现在 CLASSPATH
.
上
我万一有人像我一样来到这里,这是由于版本不匹配造成的。我遇到了同样的问题,我设法通过将相应版本与 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.11.12
编译的 Spark 2.4.5
。所以对应的包应该是
spark-submit --packages org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5 kinesis_...
我是(非常)新接触 spark 的人,如果这是一个愚蠢的问题,我深表歉意。
我正在尝试执行 spark (2.2.0) python spark 流示例,但是我将 运行 保留在以下问题中:
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 没有包含外部文件夹(似乎有一些许可证问题),所以这是我一直试图执行的命令(从 [下载 kinesis_wordcount_asl.py
后 github)
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
如果需要,很乐意提供任何其他详细信息。
根据异常情况,核心 Spark / Spark 流和 spark-kinesis
之间似乎存在版本不匹配。 API 在 Spark 2.1 和 2.2 (SPARK-19405) 之间更改,版本不匹配会导致类似的错误。
这让我觉得您提交的二进制文件不正确(只是猜测)- 如果您使用 [=14=,则可能是 PATH
、PYTHONPATH
或 SPARK_HOME
问题] 模式。因为签名不匹配,我们可以假设 spark-kinesis
已正确加载并且 org.apache.spark.streaming.kinesis.KinesisUtilsPythonHelper
出现在 CLASSPATH
.
我万一有人像我一样来到这里,这是由于版本不匹配造成的。我遇到了同样的问题,我设法通过将相应版本与 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.11.12
编译的 Spark 2.4.5
。所以对应的包应该是
spark-submit --packages org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5 kinesis_...