Как передать параметр -D или переменную среды в Spark?

Я хочу изменить конфигурацию Configafe задачи Spark в среде dev / prod. Мне кажется, что самый простой способ выполнить это – передать -Dconfig.resource=ENVNAME . Тогда библиотека конфигураций Typafe выполнит эту работу для меня.

Есть ли способ передать этот вариант непосредственно на работу? Или, может быть, есть лучший способ изменить конфигурацию работы во время выполнения?

РЕДАКТИРОВАТЬ:

  • Ничего не происходит, когда я добавляю параметр --conf "spark.executor.extraJavaOptions=-Dconfig.resource=dev" для команды spark-submit .
  • Я получил Error: Unrecognized option '-Dconfig.resource=dev'. когда я -Dconfig.resource=dev для команды spark-submit .

Измените командную строку spark-submit добавив три параметра:

  • --files
  • --conf 'spark.executor.extraJavaOptions=-Dconfig.resource=app'
  • --conf 'spark.driver.extraJavaOptions=-Dconfig.resource=app'

Вот моя программа искры запуска с добавлением опции java

 /home/spark/spark-1.6.1-bin-hadoop2.6/bin/spark-submit \ --files /home/spark/jobs/fact_stats_ad.conf \ --conf spark.executor.extraJavaOptions=-Dconfig.fuction.conf \ --conf 'spark.driver.extraJavaOptions=-Dalluxio.user.file.writetype.default=CACHE_THROUGH -Dalluxio.user.file.write.location.policy.class=alluxio.client.file.policy.MostAvailableFirstPolicy -Dconfig.file=/home/spark/jobs/fact_stats_ad.conf' \ --class jobs.DiskDailyJob \ --packages com.databricks:spark-csv_2.10:1.4.0 \ --jars /home/spark/jobs/alluxio-core-client-1.2.0-RC2-jar-with-dependencies.jar \ --driver-memory 2g \ /home/spark/jobs/convert_to_parquet.jar \ AD_COOKIE_REPORT FACT_AD_STATS_DAILY | tee /data/fact_ad_stats_daily.log 

как вы можете видеть пользовательский файл конфигурации – файлы --files /home/spark/jobs/fact_stats_ad.conf

--conf spark.executor.extraJavaOptions=-Dconfig.fuction.conf java для исполнителя --conf spark.executor.extraJavaOptions=-Dconfig.fuction.conf

параметры драйвера java. --conf 'spark.driver.extraJavaOptions=-Dalluxio.user.file.writetype.default=CACHE_THROUGH -Dalluxio.user.file.write.location.policy.class=alluxio.client.file.policy.MostAvailableFirstPolicy -Dconfig.file=/home/spark/jobs/fact_stats_ad.conf'

Надеюсь, это поможет.

У меня было много проблем с прохождением параметров -D, чтобы исправить исполнителей и драйвер, я добавил цитату из своего сообщения в блоге об этом: «Правильный способ передать параметр через свойство:« spark.driver.extraJavaOptions »И« spark.executor.extraJavaOptions »: я передал свойство log4J configurations и параметр, который мне нужен для конфигураций. (Для драйвера я смог передать только конфигурацию log4j). Например (было написано в файл свойств, переданный в spark-submit с “-properties-file”): ”

 spark.driver.extraJavaOptions –Dlog4j.configuration=file:///spark/conf/log4j.properties - spark.executor.extraJavaOptions –Dlog4j.configuration=file:///spark/conf/log4j.properties -Dapplication.properties.file=hdfs:///some/path/on/hdfs/app.properties spark.application.properties.file hdfs:///some/path/on/hdfs/app.properties 

«

Вы можете прочитать мое сообщение в блоге об общих настройках искры. Я тоже бегу на пряжу.

--files --conf 'spark.executor.extraJavaOptions=-Dconfig.resource=app' --conf 'spark.driver.extraJavaOptions=-Dconfig.resource=app'

если вы напишете таким образом, более поздний --conf перезапишет предыдущий, вы можете проверить это, посмотрев на sparkUI после того, как работа началась на вкладке « Environment ».

поэтому правильный способ заключается в том, чтобы поместить параметры в одну строку следующим образом: --conf 'spark.executor.extraJavaOptions=-Da=b -Dc=d' если вы это сделаете, вы можете найти все свои настройки, которые будут показаны в окне sparkUI ,

Я запускаю приложение Spark через команду spark-submit, запущенную из другого приложения Scala. Итак, у меня есть массив вроде

 Array(".../spark-submit", ..., "--conf", confValues, ...) 

где confValues :

  • для режима yarn-cluster :
    "spark.driver.extraJavaOptions=-Drun.mode=production -Dapp.param=..."
  • для local[*] режима local[*] :
    "run.mode=development"

Это немного сложно понять, где (а не) избегать цитат и пробелов. Вы можете проверить веб-интерфейс Spark для значений системных свойств.

Используйте метод, как в команде ниже, может быть вам полезен –

spark-submit –master local [2] –conf ‘spark.driver.extraJavaOptions = Dlog4j.configuration = файл: /tmp/log4j.properties’ –conf ‘spark.executor.extraJavaOptions = -Dlog4j.configuration = file: /tmp/log4j.properties ‘ –class com.test.spark.application.TestSparkJob target / application-0.0.1-SNAPSHOT-jar-with-dependencies.jar prod

Я пробовал, и это сработало для меня, я бы посоветовал также пропустить заголовок под искровым сообщением, что действительно полезно – https://spark.apache.org/docs/latest/running-on-yarn.html

Первоначально у меня был этот файл конфигурации:

 my-app { environment: dev other: xxx } 

Вот как я загружаю свою конфигурацию в свой код искры scala:

 val config = ConfigFactory.parseFile(File<"my-app.conf">) .withFallback(ConfigFactory.load()) .resolve .getConfig("my-app") 

С этой настройкой, несмотря на то, что документация Configafe Config и все остальные ответы говорят, переопределение системного свойства не работало для меня, когда я запускал свою искру:

 spark-submit \ --master yarn \ --deploy-mode cluster \ --name my-app \ --driver-java-options='-XX:MaxPermSize=256M -Dmy-app.environment=prod' \ --files my-app.conf \ my-app.jar 

Чтобы заставить его работать, мне пришлось изменить файл конфигурации:

 my-app { environment: dev environment: ${?env.override} other: xxx } 

а затем запустить его так:

 spark-submit \ --master yarn \ --deploy-mode cluster \ --name my-app \ --driver-java-options='-XX:MaxPermSize=256M -Denv.override=prod' \ --files my-app.conf \ my-app.jar 
  • Как я могу использовать объект singleton Scala в Java?
  • как определить, имеет ли блок данных искровой диаграммы столбец
  • Каковы точные правила, когда вы можете опустить скобки, точки, фигурные скобки, = (функции) и т. Д.?
  • Лучший способ объединить две карты и суммировать значения одного и того же ключа?
  • Каковы некоторые примеры использования символьных литералов в Scala?
  • Как определить настраиваемую функцию агрегации для суммирования столбца векторов?
  • Исправляемые значения искры из строки
  • Получите количество от строки-получателя, используя Regex
  • Что такое «контекст» в Scala?
  • val и объект внутри classа scala?
  • Почему компилятор Scala запрещает перегруженные методы с аргументами по умолчанию?
  • Interesting Posts

    Исключить строку из подстановочного поиска в оболочке

    Не использовать любые устройства в USB-порту в виртуальном боксе

    Вызывается: java.lang.UnsupportedOperationException: невозможно преобразовать в измерение: type = 0x1

    Spring MVC – Как вернуть простую строку в JSON в Rest Controller

    Почему метод getter и setter важен в java?

    Как установить максимальное использование памяти для JVM?

    Как получить панель задач Windows 7 с меню «Пуск» для отображения на двух мониторах?

    Создать несколько ZIP-файлов, которые не зависят друг от друга?

    Нюансы NSMutableArray initWithCapacity

    Двойные мониторы в Windows – Как установить другой размер DPI или текста на каждом мониторе?

    Был ли PreferenceFragment намеренно исключен из пакета совместимости?

    Почему подключенные диски появляются снова после выхода из системы и обратно, а не после перезагрузки?

    Упреждающий базовый аут с HttpUrlConnection?

    Сделать оператор << виртуальным?

    Как вычислить число 3D Morton (чередуйте биты 3 ints)

    Давайте будем гением компьютера.