Spark 流 + Kinesis 中的 KinesisUtils.createStream 错误

Har*_*son 5 apache-spark amazon-kinesis spark-streaming pyspark

我正在尝试使用Spark Streaming + Kinesis Integration从 AWS Kinesis 流式传输数据

我的代码如下所示:

sc = SparkContext('local[*]', 'app_name')
ssc = StreamingContext(sc, 10)

kinesisStream = KinesisUtils.createStream(ssc,
    kinesisAppName='kinesis_app_name',
    streamName='kinesis_stream_name',
    endpointUrl='https://kinesis.ap-southeast-2.amazonaws.com',
    regionName='ap-southeast-2',
    initialPositionInStream=InitialPositionInStream.TRIM_HORIZON,
    checkpointInterval=10)
Run Code Online (Sandbox Code Playgroud)

运行脚本的命令:spark-submit --packages org.apache.spark:spark-streaming-kinesis-asl_2.11:2.2.0 script.py。我正在使用 Spark 2.2.0 和 Pyspark。

我得到的错误:

错误:root:发送命令时出现异常。回溯(最近一次调用最后):文件“/home/ubuntu/transformer/env/lib/python3.5/site-packages/py4j/java_gateway.py”,第1035行,在send_command中引发Py4JNetworkError(“来自Java端的答案是空”)py4j.protocol.Py4JNetworkError:Java 端的答案为空

在处理上述异常的过程中,又出现了一个异常:

回溯(最近一次调用最后):文件“/home/ubuntu/transformer/env/lib/python3.5/site-packages/py4j/java_gateway.py”,第883行,在send_command响应=connection.send_command(command)文件中“/home/ubuntu/transformer/env/lib/python3.5/site-packages/py4j/java_gateway.py”,第 1040 行,在 send_command“接收时出错”,e,proto.ERROR_ON_RECEIVE)py4j.protocol.Py4JNetworkError:接收 Traceback 时出错(最近一次调用最后一次):文件“kinesis_to_s3.py”,第 63 行,在 checkpointInterval=streaming_interval 中)文件“/home/ubuntu/transformer/env/lib/python3.5/site-packages/pyspark/streaming /kinesis.py”,第 92 行,在 createStream stsSessionName,stsExternalId)文件“/home/ubuntu/transformer/env/lib/python3.5/site-packages/py4j/java_gateway.py”,第 1133 行,在呼叫 应答中, self.gateway_client,self.target_id,self.name)文件“/home/ubuntu/transformer/env/lib/python3.5/site-packages/py4j/protocol.py”,第327行,采用get_return_value格式(target_id,“ .", name)) py4j.protocol.Py4JError:在线程“Thread-2”java.lang.NoClassDefFoundError 中调用 o27.createStream 异常时发生错误:com/amazonaws/services/kinesis/clientlibrary/lib/worker/InitialPositionInStream at java.lang.Class.getDeclaredMethods0(本机方法) 在 java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 在 java.lang.Class.privateGetPublicMethods(Class.java:2902) 在 java.lang.Class.getMethods( Class.java:1615) 在 py4j.reflection.ReflectionEngine.getMethodsByNameAndLength(ReflectionEngine.java:345) 在 py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:305) 在 py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:326) )在 py4j.Gateway.invoke(Gateway.java:272) 在 py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) 在 py4j.commands.CallCommand.execute(CallCommand.java:79) 在 py4j.GatewayConnection.run (GatewayConnection.java:214) 在 java.lang.Thread.run(Thread.java:748) 引起:java.lang.ClassNotFoundException: com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStream 在 java.net .URLClassLoader.findClass(URLClassLoader.java:381) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) 在 java.lang.ClassLoader。 loadClass(ClassLoader.java:357) ... 12 更多