потоковая передача pyspark 1.5.0 с отсутствующей банкой кинезиса

Я использую EMR (с EMR-4.1.0), включая распределение искры 1.5.0

Я попытался использовать потоковую передачу искр (python) для получения данных из кинезиса, используя образец кода в github (https://github.com/apache/spark/blob/master/extras/kinesis-asl/src/main/python/examples/streaming/kinesis_wordcount_asl.py)

по какой-то причине я получаю сообщение об ошибке, при котором jar-файл для потоковой передачи искр недоступен, хотя я вижу его в / usr / lib / spark / extras / lib со всеми другими банками для потоковой передачи. (смотрите прикрепленный файл )

-----------------------------------------------------------------------
Py4JJavaError                             Traceback (most recent call last)
<ipython-input-2-477c4a5455a1> in <module>()
     86     regionName= 'eu-west-1'
     87     lines = KinesisUtils.createStream(
---> 88         ssc, appName, streamName, endpointUrl, regionName, InitialPositionInStream.TRIM_HORIZON, 2)
     89 
     90     words.foreachRDD(process)

/usr/lib/spark/python/pyspark/streaming/kinesis.py in createStream(ssc, kinesisAppName, streamName, endpointUrl, regionName, initialPositionInStream, checkpointInterval, storageLevel, awsAccessKeyId, awsSecretKey, decoder)
     85             if 'ClassNotFoundException' in str(e.java_exception):
     86                 KinesisUtils._printErrorMsg(ssc.sparkContext)
---> 87             raise e
     88         stream = DStream(jstream, ssc, NoOpSerializer())
     89         return stream.map(lambda v: decoder(v))

Py4JJavaError: An error occurred while calling o35.loadClass.
: java.lang.ClassNotFoundException: org.apache.spark.streaming.kinesis.KinesisUtilsPythonHelper
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231)
    at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:379)
    at py4j.Gateway.invoke(Gateway.java:259)
    at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133)
    at py4j.commands.CallCommand.execute(CallCommand.java:79)
    at py4j.GatewayConnection.run(GatewayConnection.java:207)
    at java.lang.Thread.run(Thread.java:745)

когда я пытался добавить банку (которую я загружаю из Maven) в spark-submit (spark-submit --jars

Я получаю следующую ошибку:

«Необходимо указать основной ресурс (файл JAR, Python или R)»

есть ли способ обойти это?

Спасибо,


person Lior Baber    schedule 22.10.2015    source источник
comment
Опубликуйте, пожалуйста, конструкцию интерфейса командной строки, которую вы используете для отправки искр. Как правило, jar-файл потоковой передачи Spark и клиентский jar-файл Amazon Kinesis являются аргументами для --jars, при этом скрипт python идет после всех параметров отправки искры.   -  person ChristopherB    schedule 30.10.2015
comment
bin / spark-submit --jars spark-streaming-kinesis-asl_2.10-1.5.0.jar   -  person Lior Baber    schedule 03.11.2015


Ответы (1)


/usr/bin/spark-submit --jars /usr/lib/spark/extras/lib/spark-streaming-kinesis-asl.jar может работать лучше, так как он ссылается на последнюю версию AFAIK

person Alex Mattson    schedule 18.01.2016