Подтвердить что ты не робот

Spark-submit не работает, когда приложение jar находится в hdfs

Я пытаюсь запустить искровое приложение, используя bin/spark-submit. Когда я ссылаюсь на свою прикладную банку внутри локальной файловой системы, она работает. Однако, когда я скопировал приложение jar в каталог в hdfs, я получаю следующее исключение:

Предупреждение. Пропустить удаленный jar hdfs://localhost: 9000/user/hdfs/jars/simple-project-1.0-SNAPSHOT.jar. java.lang.ClassNotFoundException: com.example.SimpleApp

Здесь команда:

$ ./bin/spark-submit --class com.example.SimpleApp --master local hdfs://localhost:9000/user/hdfs/jars/simple-project-1.0-SNAPSHOT.jar

Я использую версию версии 2.6.0, искру версии 1.2.1

4b9b3361

Ответ 1

Единственный способ, которым это работало для меня, когда я использовал

- мастер-пряжа-кластер

Ответ 2

Чтобы библиотека HDFS была доступна для искробезопасности, вам нужно запустить задание в режиме кластера.

$SPARK_HOME/bin/spark-submit \
--deploy-mode cluster \
--class <main_class> \
--master yarn-cluster \
hdfs://myhost:8020/user/root/myjar.jar

Кроме того, есть Spark JIRA для клиентского режима, который еще не поддерживается.

SPARK-10643: поддержка загрузки HDFS в режиме клиента spark submit

Ответ 3

Да, это должен быть локальный файл. Я думаю, что просто ответ.

Ответ 4

Существует обходное решение. Вы можете установить каталог в HDFS (который содержит вашу банку приложения) в качестве локального каталога.

Я сделал то же самое (с azure blob storage, но он должен быть похож на HDFS)

пример команды для azure wasb

sudo mount -t cifs //{storageAccountName}.file.core.windows.net/{directoryName} {local directory path} -o vers=3.0,username={storageAccountName},password={storageAccountKey},dir_mode=0777,file_mode=0777

Теперь, в вашей команде "Исправить ошибку", вы указываете путь из команды выше

$ ./bin/spark-submit --class com.example.SimpleApp --master local {local directory path}/simple-project-1.0-SNAPSHOT.jar