AWS EMR Spark - файл свойств. Класс com.amazon.ws.emr.hadoop.fs.EmrFileSystem не найден - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь отправить приложение Spark с главного узла AWS EMR emr-5.20.0 с помощью следующей команды:

spark-submit --executor-memory 4g --deploy-mode cluster --master yarn --class com.example.Application --properties-file config.conf s3://example-jobs/application.jar

, но происходит сбой со следующей ошибкой:

Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.amazon.ws.emr.hadoop.fs.EmrFileSystem not found

Причиной этого является следующий параметр:

--properties-file config.conf

Что я делаю не так и как правильно передать файл свойств в AWS EMR Apache Spark?

1 Ответ

0 голосов
/ 02 марта 2019

Передав --properties-file, вы полностью переопределяете множество значений по умолчанию, которые EMR предоставляет в /etc/spark/conf/spark-defaults.conf, и специально пропускаете свойство, которое устанавливает путь к классу для включения JAR-файла EMRFS, что и является причиной конкретногоошибка, с которой вы столкнулись.

Вместо того, чтобы указывать свой полный файл свойств, вы можете настроить Spark во время создания кластера, выполнив https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-configure.html. Использование этого метода для настройки Spark приведет к тому, что ваши собственные значения будутпоявляются в /etc/spark/conf/spark-defaults.conf вместе с теми, что предоставляются EMR по умолчанию.Предоставленные вами значения будут иметь приоритет над любыми значениями по умолчанию, которые EMR в противном случае предоставили бы.

Для любой конфигурации, которая не подходит на уровне кластера, а скорее на уровне отдельного приложения, вы можете передать дополнительную конфигурацию в spark-submit, используячто-то вроде следующего:

spark-submit --conf KEY1=VALUE1 --conf KEY2=VALUE2 --executor-memory 4g --deploy-mode cluster --class ... --jar ... [args]

Кстати, вам не нужно указывать --master yarn, потому что это уже указано в /etc/spark/conf/spark-defaults.conf.Кроме того, память исполнителя по умолчанию в /etc/spark/conf/spark-defaults.conf уже обычно составляет около 4-5g, в зависимости от типов экземпляров в вашем кластере.

...