2016-03-18 3 views
0

Я создаю искровое приложение с maven (с плагином с тенями) и просматриваю его на узле данных для выполнения с помощью кластера spark-submit --deploy (начиная с запуска прямо из системы сборки с клиентом --deploy-mode не работает из-за асимметричной сети, которая не под моим контролем).spark-submit classNotFoundException

Вот моя команда запуска

искровым отправить --class испытания --master пряжи --deploy-кластерном режиме --supervise --verbose jarName.jar HDFS:///somePath/Test.txt HDFS: ///somePath/Test.out

работа быстро выходит из строя с ClassNotFoundException для теста $ 1; один из анонимных классов Java создает из моего основного класса

6/03/18 12:59:41 WARN scheduler.TaskSetManager: Затерянные задачи 0.0 в стадии 0,0 (TID 0, dataNode3): java.lang. ClassNotFoundException: Test $ 1

Я видел, что эта ошибка упоминается много раз (google), и большинство рекомендаций сводятся к вызову conf.setJars (jarPaths) или тому подобное.

Я действительно не понимаю, почему это необходимо, когда отсутствующий класс определен (я проверил), доступный в jarName.jar, почему указание этого во время компиляции предпочтительнее делать это во время выполнения с помощью -jar как аргумент spark-submit, и в любом случае, какой путь я должен предоставить для jar. Я копировал его в свой домашний каталог на datanode из target/jarName.jar в системе сборки, но кажется, что исправить - отправить его в hdfs где-то, что трудно сгладить в жестко запрограммированное имя пути во время компиляции или время запуска.

И, самое главное, почему бы не исправить-отправить обработку этого автоматически на основе аргумента someJar.jar, а если нет, что мне делать, чтобы исправить это?

+0

Просто попытался с помощью --deployMode клиента на жаворонка, и это работал! Я действительно не понимаю этого. – Bradjcox

+0

Я считаю, что Спарк не может найти вашу банку. Ваша баня присутствует в каждом узле? Вы пытались указать абсолютный путь к банке? –

ответ

0

Проверьте ответ здесь spark submit java.lang.ClassNotFoundException

spark-submit --class Test --master yarn --deploy-mode cluster --supervise --verbose jarName.jar hdfs:///somePath/Test.txt hdfs:///somePath/Test.out 

Попробуйте использовать, также вы можете проверить абсолютный путь в проекте

--class com.myclass.Test 
Смежные вопросы