Chcę zmienić konfigurację Typesafe zadania Spark w środowisku dev / prod. Wydaje mi się, że najłatwiejszym sposobem na osiągnięcie tego jest przejście -Dconfig.resource=ENVNAME
do pracy. Wtedy biblioteka konfiguracyjna Typesafe zrobi to za mnie.
Czy istnieje sposób, aby przekazać tę opcję bezpośrednio do zadania? A może jest lepszy sposób na zmianę konfiguracji zadania w czasie wykonywania?
EDYTOWAĆ:
- Nic się nie dzieje, gdy dodam
--conf "spark.executor.extraJavaOptions=-Dconfig.resource=dev"
opcję polecenia wysyłania iskry . - Dostałem,
Error: Unrecognized option '-Dconfig.resource=dev'.
kiedy przechodzę-Dconfig.resource=dev
do polecenia wysyłania iskry .
scala
apache-spark
kopiczko
źródło
źródło
-Dx=y
się wiersza poleceń.Odpowiedzi:
Zmień
spark-submit
wiersz poleceń, dodając trzy opcje:--files <location_to_your_app.conf>
--conf 'spark.executor.extraJavaOptions=-Dconfig.resource=app'
--conf 'spark.driver.extraJavaOptions=-Dconfig.resource=app'
źródło
--conf 'spark.executor.extraJavaOptions=-Dconfig.resource=app'
opcji nie zadziała, gdy Spark prześle sterownik w trybie klienta. Użyj--driver-java-options "-Dconfig.resource=app"
zamiast tego. Zobacz Konfiguracja Spark .--files <location_to_your.conf>#application.conf --driver-java-options -Dconfig.file=your.conf
W#
plikach in podaje nazwę odnoszącą się do executorów; więc zobaczą określony plik jako application.conf.spark-submit --driver-java-options='-Dmy.config.path=myConfigValue'
Oto mój program Spark uruchomiony z dodatkową opcją 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
jak widać niestandardowy plik konfiguracyjny
--files /home/spark/jobs/fact_stats_ad.conf
opcje java executora
--conf spark.executor.extraJavaOptions=-Dconfig.fuction.conf
opcje sterownika 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'
Mam nadzieję, że to pomoże.
źródło
Miałem wiele problemów z przekazaniem parametrów -D do executorów iskra i sterownika, dodałem cytat z mojego wpisu na blogu na ten temat: „Właściwym sposobem przekazania parametru jest właściwość:„
spark.driver.extraJavaOptions
”i„spark.executor.extraJavaOptions
”: Przekazałem zarówno właściwość konfiguracji log4J, jak i parametr, którego potrzebowałem do konfiguracji. (Do sterownika mogłem przekazać tylko konfigurację log4j). Na przykład (zostało zapisane w pliku właściwości przekazanym w funkcji przesyłania iskier z „- plik-właściwości ”):„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
„
Możesz przeczytać mój wpis na blogu o ogólnych konfiguracjach Spark. Biegam również na Yarn.
źródło
--files <location_to_your_app.conf> --conf 'spark.executor.extraJavaOptions=-Dconfig.resource=app' --conf 'spark.driver.extraJavaOptions=-Dconfig.resource=app'
jeśli napiszesz w ten sposób to późniejszy
--conf
nadpisze poprzedni, możesz to zweryfikować zaglądając do sparkUI po uruchomieniu zadania wEnvironment
zakładce.więc poprawnym sposobem jest umieszczenie opcji w tej samej linii, jak ta:
--conf 'spark.executor.extraJavaOptions=-Da=b -Dc=d'
jeśli to zrobisz, możesz znaleźć wszystkie swoje ustawienia, które zostaną pokazane w sparkUI.źródło
--conf
dwa razy.Uruchamiam moją aplikację Spark za pomocą polecenia spark-submit uruchomionego z innej aplikacji Scala. Więc mam Array jak
Array(".../spark-submit", ..., "--conf", confValues, ...)
gdzie
confValues
jest:yarn-cluster
trybu:"spark.driver.extraJavaOptions=-Drun.mode=production -Dapp.param=..."
local[*]
trybu:"run.mode=development"
Trochę trudno jest jednak zrozumieć, gdzie (nie) należy unikać cudzysłowów i spacji. Możesz sprawdzić interfejs internetowy Spark pod kątem wartości właściwości systemowych.
źródło
local[*]
trybu). Spróbuję zyarn-cluster
trybem i zaktualizuję komentarz (jeśli nie zapomnę ...: D)spark-submit --driver-java-options "-Denv=DEV -Dmode=local" --class co.xxx.datapipeline.jobs.EventlogAggregator target/datapipeline-jobs-1.0-SNAPSHOT.jar
U mnie działa powyższe polecenie:
-Denv=DEV
=> czytać plik właściwości DEV env i-Dmode=local
=> tworzyć SparkContext w lokalnym - .setMaster ("local [*]")źródło
Użyj metody jak w poniższym poleceniu, może być dla Ciebie pomocne -
Próbowałem i zadziałało dla mnie, proponuję również przejść przez nagłówek poniżej Spark Post, który jest naprawdę pomocny - https://spark.apache.org/docs/latest/running-on-yarn.html
źródło
Pierwotnie miałem ten plik konfiguracyjny:
Oto jak ładuję konfigurację w moim kodzie Spark Scala:
val config = ConfigFactory.parseFile(File<"my-app.conf">) .withFallback(ConfigFactory.load()) .resolve .getConfig("my-app")
W tej konfiguracji, pomimo tego, co mówi dokumentacja Typesafe Config i wszystkie inne odpowiedzi, nadpisanie właściwości systemu nie działało, gdy uruchomiłem moją iskierkę w następujący sposób:
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
Aby to działało, musiałem zmienić plik konfiguracyjny na:
my-app { environment: dev environment: ${?env.override} other: xxx }
a następnie uruchom go w ten sposób:
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
źródło