Я реализовал пользовательский поставщик учетных данных для EMRFS, следуя инструкциям в Авторизация доступа к данным EMRFS в Amazon S3 и Безопасный анализ данных из другой учетной записи aws с помощью emrfs .
Сам провайдер учетных данных работает, и я вижу, что он вызывается, потому что у меня есть "обычные" операторы System.out.println()
в методе .getCredentials()
, которые отображаются в выходных данных Zeppelin.
Эти журналы показываются как часть раздела результата абзаца заметки при выполнении, например, `spark.read.parquet (" s3: // xxxxx ").
У меня есть оператор log4j рядом с System.out.println
, но они вообще не отображаются.
Я использую следующие классификации конфигурации для spark-log4j
и hadoop-log4j
, где я заявляю, что хочу, чтобы вывод был отправлен на ConsoleAppender
System.out
, который должен отправить журналы log4j на System.out
, но это не происходит.
{
"Classification": "spark-log4j",
"Properties": {
"log4j.rootCategory": "INFO, console",
"log4j.appender.console.target": "System.out",
"log4j.logger.package1.package2.EmrCustomCredentialsProvider": "DEBUG, console"
}
},
{
"Classification": "hadoop-log4j",
"Properties": {
"log4j.rootCategory": "INFO, console",
"log4j.appender.console.target": "System.out",
"log4j.logger.package1.package2.EmrCustomCredentialsProvider": "DEBUG, console"
}
}
Есть идеи, почему журналы log4j не записаны в результате заметки Zeppelin, а обычные System.out
?