Уважаемое сообщество! Прежде чем я опишу проблему, вот краткое описание используемого программного обеспечения (где последние два работают в небольшом кластере из трех узлов, каждый из которых использует Ubuntu 14.04):
- Zeppelin 0.6.1
- Spark 2.0.0 вместе с Scala 2.11.8
- Hadoop 2.7.3
Ситуация такова: чтобы использовать класс TwitterUtils в приложении Spark Streaming, написанном в заметке Zeppelin, мне нужно включить org.apache.spark.streaming.twitter ._ < / strong> из Maven (org.apache.bahir: spark-streaming-twitter_2.11: 2.0.0-preview). На данный момент я узнал, что есть несколько вариантов сделать внешние зависимости доступными в Zeppelin:
- Экспортируйте переменную SPARK_SUBMIT_OPTIONS в conf / zeppelin-env.sh и установите --jars (в моем случае --jars hdfs: //admdsmaster:54310/global/jars/spark-streaming-twitter_2.11-2.0.0-preview.jar (также был протестирован путь, указывающий на локальную файловую систему)).
- Экспортируйте SPARK_SUBMIT_OPTIONS и установите --packages (в моем случае --packages org.apache.bahir: spark-streaming-twitter_2.11: 2.0.0-preview ).
- Задайте spark.jars или spark.jars.packages в conf / spark-defaults.conf указанными выше значениями.
- Используйте интерпретатор % dep в самом Zeppelin следующим образом: z.load ("org.apache.bahir: spark-streaming-twitter_2.11: 2.0.0-preview") strong >. Однако это устарело.
- Используйте sc.addJar () в заметке Zeppelin, чтобы вручную добавить файл .jar.
После того, как я испробовал все вышеперечисленное, а также почти произвольные комбинации и варианты, проблема в том, что я все еще не могу импортировать класс TwitterUtils из заметки Zeppelin:
Ошибка импорта класса в примечании Zeppelin.
На рисунке также можно увидеть результат выполнения sc.listJars (), который показывает, что файл .jar действительно был включен. Тем не менее импорт класса не выполняется.
Моя первая мысль заключалась в том, что проблема возникает из-за того, что Spark работает в режиме пряжи-клиента, поэтому я также запустил оболочку Spark в режиме пряжи-клиента и попытался импортировать оттуда класс TwitterUtils, который работал:
Импорт классов из оболочки Spark.
Чтобы узнать, что происходит, я просмотрел файлы журналов Zeppelin, Spark и YARN, но не смог найти никаких сообщений об ошибках, указывающих мне на причину проблемы.
Короче говоря: хотя файл jar был включен в Zeppelin (что доказано sc.listJars ()) и хотя импорт класса работает из искровой оболочки в yarn- в клиентском режиме, я просто не могу заставить импорт работать из моей заметки Zeppelin.
Еще короче, длинная история: я был бы признателен за ваши идеи о том, как решить эту проблему!
Заранее благодарим за ваше время и усилия.
P.S .: Прошу прощения за то, что я не смог загрузить изображения в этот пост напрямую - там написано, что мне нужно как минимум 10 очков репутации, которых у меня нет, так как это моя первая публикация здесь.