2016-02-26 3 views
4

я получаю следующее сообщение об ошибке:Спарка 1,6 Кафка потоковых по ошибке py4j dataproc

Py4JError(u'An error occurred while calling o73.createDirectStreamWithoutMessageHandler. Trace:\npy4j.Py4JException: Method createDirectStreamWithoutMessageHandler([class org.apache.spark.streaming.api.java.JavaStreamingContext, class java.util.HashMap, class java.util.HashSet, class java.util.HashMap]) does not exist\n\tat py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:335)\n\tat py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:344)\n\tat py4j.Gateway.invoke(Gateway.java:252)\n\tat py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133)\n\tat py4j.commands.CallCommand.execute(CallCommand.java:79)\n\tat py4j.GatewayConnection.run(GatewayConnection.java:209)\n\tat java.lang.Thread.run(Thread.java:745)\n\n',)

Я использую искровой потоковый Кафка-assembly_2.10-1.6.0.jar (который присутствует в/USR/Библиотека/Hadoop/Библиотека/папки на все мои узлы + мастер)

(EDIT) фактическая ошибка: java.lang.NoSuchMethodError: org.apache.hadoop.yarn.util.Apps.crossPlatformify (Ljava/языки/String;) Ljava/языки/String;

Это произошло из-за неправильной версии hadoop. Поэтому искра должна быть составлена ​​с правильной версией Hadoop:

mvn -Phadoop-2.6 -Dhadoop.version=2.7.2 -DskipTests clean package

Это приведет к банку во внешней/Кафке сборки/целевой папке.

+0

Когда был создан ваш кластер/вы проходили какие-либо флаги -image-version при его создании? Можете ли вы дать некоторый контекст того, как вы вызываете KafkaUtils.createStream() (или, альтернативно, как вы вызываете базовые методы)? –

+0

Кластер был создан только вчера, с изображением версии 1.0 (с искрой 1.6). В данный момент. мы по-прежнему используем изображение версии 0.1 (искра 1.5.0) с искровым потоком-кафкой-assembly_2.10-1.5.0.jar, а также изображение версии 0.2 с той же банкой, что и 1.5.2-баночка , Однако для новейшей версии ни одна из фляг, похоже, не работает. Ошибка вызывается при использовании метода KafkaUtils.createDirectStream. Когда я запускаю код локально с помощью искры 1.6 и jar spark-streaming-kafka-assembly_2.10-1.6.0.jar (с параметром --jars через spark-submit), код, кажется, работает отлично. – bjorndv

+0

Я пытался воспроизвести это сегодня днем ​​и не имел большой удачи. Есть ли вероятность, что Spark 1.5 пробился в ваш кластер Dataproc 1.0 с помощью Spark 1.6 (например, были установлены искры-1.6 и искро-1.5, или, альтернативно, искра-1.5 была упакована вместе с вашей работой)? Я прошел через каждую искрообразующую банку кафки, на которую я мог достать (и построил сборку из источника), и после распаковки проверил KafkaUtilsPythonHelper, чтобы гарантировать, что метод createDirectStreamWithoutMessageHandler существует с правильной подписью. –

ответ

1

Использование изображения версии 1, я успешно запустить pyspark потоковое/kafka example wordcount

В каждом из этих примеров «ад-Кафка-инст» мой тест Кафка экземпляр с темой «тест».

  1. Использование кластера без каких-либо действий инициализации:

    $ gcloud dataproc jobs submit pyspark --cluster ad-kafka2 --properties spark.jars.packages=org.apache.spark:spark-streaming-kafka_2.10:1.6.0 ./kafka_wordcount.py ad-kafka-inst:2181 test 
    
  2. Использования действий инициализации с полной сборкой Кафка:

    • Скачать/распаковку искрового 1.6.0.tgz
    • Построено с:

      $ mvn -Phadoop-2.6 -Dhadoop.version=2.7.2 package 
      
    • Загрузите spark-streaming-kafka-assembly_2.10-1.6.0.jar в новый ковш GCS (например, MYBUCKET).
    • Создайте следующие действия инициализации в том же ГСК ведро (например, GS: //MYBUCKET/install_spark_kafka.sh):

      $ #!/bin/bash 
      
      gsutil cp gs://MY_BUCKET/spark-streaming-kafka-assembly_2.10-1.6.0.jar /usr/lib/hadoop/lib/ 
      chmod 755 /usr/lib/hadoop/lib/spark-streaming-kafka-assembly_2.10-1.6.0.jar 
      
    • Пуск кластера с указанным выше действием инициализации:

      $ gcloud dataproc clusters create ad-kafka-init --initialization-actions gs://MYBUCKET/install_spark_kafka.sh 
      
    • Начало потокового количество слов:

      $ gcloud dataproc jobs submit pyspark --cluster ad-kafka-init ./kafka_wordcount.py ad-kafka-inst:2181 test 
      
+0

Второй вариант действительно сделал трюк. Банкомат из mvn не работал из-за неправильной версии hadoop. Ошибка выше, вероятно, была связана с неправильным банком. – bjorndv

 Смежные вопросы

  • Нет связанных вопросов^_^