Ответ 1
Единственный способ, которым это работало для меня, когда я использовал
- мастер-пряжа-кластер
Я пытаюсь запустить искровое приложение, используя 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
Единственный способ, которым это работало для меня, когда я использовал
- мастер-пряжа-кластер
Чтобы библиотека 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
Да, это должен быть локальный файл. Я думаю, что просто ответ.
Существует обходное решение. Вы можете установить каталог в 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