Я пытаюсь выполнить spark submit в AWS EMR, чтобы выполнить простой проект, в котором используется созданный мной собственный обработчик log4j.
Я могу передать свои свойства log4j, предоставив следующую конфигурацию в настройках программного обеспечения кластера:
[{
"classification": "spark-log4j",
"properties": {
"log4j.appender.S": "CustomLog4JAppender",
"log4j.rootLogger": "DEBUG,S"
}
}
]
Но когда я запускаю шаг кластера, я получаю:
log4j: ОШИБКА Не удалось создать экземпляр класса [CustomLog4JAppender].java.lang.ClassNotFoundException: CustomLog4JAppender
в кластере stderr.
Выполняемый мной jar-файл находится в S3 и содержит класс Main, мой класс appender и все зависимости.
Я выполняю кластер с помощью: command-runner.jar
и выполняю следующую команду:
spark-submit --deploy-mode client --class Main s3: //ndompath_to_jar‹.jar
Итак, несколько вопросов здесь:
- Какой компонент в кластере загружает регистратор log4j и его свойства?это происходит в главном узле?в основном узле?
- Что я могу сделать, чтобы решить эту проблему?Как я должен выполнить это по-другому?как заставить его распознавать мой пользовательский класс appender?
Спасибо!