Я пытаюсь изменить уровень ведения журнала в консоли StdErr в Spark 2.2 под Mesos и с использованием Scala, sbt и spark-submit в кластерном режиме.
Задний план
Недавно мы переустановили кластер Spark / Mesos с новой версией Spark 2.2.0 по сравнению с предыдущей версией 2.0.1. Весь мой код работает, кроме регистрации. Похоже, что файл src / main / resources / log4j.properties, который устанавливает уровень журналов, не обрабатывается при запуске. Он работал со Spark 2.0.1.
Я добавил эту опцию в сценарий Spark-submit, чтобы проверить, что делает log4j.
--conf "spark.driver.extraJavaOptions=-Dlog4j.debug"
Это то, что я получаю от Spark 2.2
log4j: Trying to find [log4j.xml] using context classloader sun.misc.Launcher$AppClassLoader@50134894.
log4j: Trying to find [log4j.xml] using sun.misc.Launcher$AppClassLoader@50134894 class loader.
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
log4j: Trying to find [log4j.properties] using context classloader sun.misc.Launcher$AppClassLoader@50134894.
log4j: Using URL [file:/usr/local/spark/conf/log4j.properties] for automatic log4j configuration.
log4j: Reading configuration from URL file:/usr/local/spark/conf/log4j.properties
Это то, что я получил в старой версии со Spark 2.0.1.
log4j: Trying to find [log4j.xml] using context classloader org.apache.spark.util.MutableURLClassLoader@10b48321.
log4j: Trying to find [log4j.xml] using sun.misc.Launcher$AppClassLoader@61e717c2 class loader.
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
log4j: Trying to find [log4j.properties] using context classloader org.apache.spark.util.MutableURLClassLoader@10b48321.
log4j: Using URL [jar:file:/var/lib/mesos/...path.../myProject-assembly-0.1.0-SNAPSHOT.jar!/log4j.properties] for automatic log4j configuration.
log4j: Reading configuration from URL jar:file:/var/lib/mesos/...path.../myProject-assembly-0.1.0-SNAPSHOT.jar!/log4j.properties
Вопросов
Обновлять: Вот пример команды spark-submit, которую я использую:
spark-submit \
--class myScript \
--master mesos://masterIP:7077 \
--total-executor-cores 30 \
--driver-memory 30g \
--deploy-mode cluster \
--name myScript \
--conf "spark.driver.extraJavaOptions=-Dlog4j.debug" \
--verbose \
http://192.168.75.41/~xxx/myProject-assembly-0.1.0-SNAPSHOT.jar
@Himanshu Привет, я добавил свою команду spark-submit в вопрос
@astro_asz добавление --driver-java-options "-Dlog4j.configuration = file: // <PATH_TO_FILE> /log4j.propertie s" сработало для меня. FWIW Я использую Spark 2.3.1
@Paul Я пробовал такое решение, но оно никогда не работало. Что такое <PATH_TO_FILE> в этом контексте? Следует ли поместить файл в удаленное место, например файл jar, или он должен быть локальным в том месте, где я выполняю отправку искры? Также путь абсолютный или относительный? Каким должен быть путь, если он находится в моей папке ресурсов?
@astro_asz, насколько я понимаю, file: // <PATH_TO_FILE> /log4j.properties просто должен быть действительным URL-адресом. В моем случае это был абсолютный путь к log4j.properties на машине с драйвером. Если он находится в удаленном месте, вам нужно изменить file: // на соответствующий протокол.





Можете ли вы отправить полную команду spark-submit?