Передав --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, в зависимости от типов экземпляров в вашем кластере.