Пользовательский /src/main/resources/log4j.properties не загружен в Spark 2.2

Я пытаюсь изменить уровень ведения журнала в консоли 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

Вопросов

  1. Какие проблемы с настройками кластера Spark или проблемами с версией делают мою папку ресурсов невидимой? Почему его больше нет в пути к классам в Spark 2.2, а загрузчик классов получает файл настроек по умолчанию?
  2. Как еще я мог изменить уровень журнала?

Обновлять: Вот пример команды 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

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

Himanshu 12.06.2018 14:43

@Himanshu Привет, я добавил свою команду spark-submit в вопрос

astro_asz 12.06.2018 14:49

@astro_asz добавление --driver-java-options "-Dlog4j.configuration = file: // <PATH_TO_FILE> /log4j.propertie‌ s" сработало для меня. FWIW Я использую Spark 2.3.1

Paul 01.08.2018 19:48

@Paul Я пробовал такое решение, но оно никогда не работало. Что такое <PATH_TO_FILE> в этом контексте? Следует ли поместить файл в удаленное место, например файл jar, или он должен быть локальным в том месте, где я выполняю отправку искры? Также путь абсолютный или относительный? Каким должен быть путь, если он находится в моей папке ресурсов?

astro_asz 02.08.2018 08:40

@astro_asz, насколько я понимаю, file: // <PATH_TO_FILE> /log4j.properties просто должен быть действительным URL-адресом. В моем случае это был абсолютный путь к log4j.properties на машине с драйвером. Если он находится в удаленном месте, вам нужно изменить file: // на соответствующий протокол.

Paul 02.08.2018 08:47
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
513
0

Другие вопросы по теме