Как подавить сообщения INFO для spark-sql, работающего на EMR?

Я запускаю Spark в EMR, как описано в разделе Запуск Spark и Spark SQL в Amazon Elastic MapReduce:

В этом учебном пособии вы узнаете, как установить и использовать Spark, быстрый и универсальный механизм для крупномасштабной обработки данных, в кластере Amazon EMR. Вы также создадите и запросите набор данных в Amazon S3 с помощью Spark SQL и узнаете, как отслеживать Spark в кластере Amazon EMR с помощью Amazon CloudWatch.

Я пытаюсь подавить журналы INFO, отредактировав $HOME/spark/conf/log4j.properties безрезультатно.

Вывод выглядит так:

$ ./spark/bin/spark-sql
Spark assembly has been built with Hive, including Datanucleus jars on classpath
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hadoop/.versions/2.4.0/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/.versions/spark-1.1.1.e/lib/spark-assembly-1.1.1-hadoop2.4.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
2014-12-14 20:59:01,819 INFO  [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(1009)) - mapred.input.dir.recursive is deprecated. Instead, use mapreduce.input.fileinputformat.input.dir.recursive
2014-12-14 20:59:01,825 INFO  [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(1009)) - mapred.max.split.size is deprecated. Instead, use mapreduce.input.fileinputformat.split.maxsize
2014-12-14 20:59:01,825 INFO  [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(1009)) - mapred.min.split.size is deprecated. Instead, use mapreduce.input.fileinputformat.split.minsize
2014-12-14 20:59:01,825 INFO  [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(1009)) - mapred.min.split.size.per.rack is deprecated. Instead, use mapreduce.input.fileinputformat.split.minsize.per.rack

Как подавить информационные сообщения выше?


person rongenre    schedule 14.12.2014    source источник
comment
что такое пакет java для Spark?   -  person Andy Dufresne    schedule 14.12.2014
comment
Некоторый прогресс: выполнение ./spark/bin/spark-shell --driver-java-options "-Dlog4j.debug" позволяет мне передать параметр JVM и увидеть, что это файл log4j.properties где-то в банке. Выполнение ./spark/bin/spark-shell --driver-java-options "-Dlog4j.configuration=file:///home/hadoop/spark/conf/log4j.properties" Кажется, работает, хотя это кажется ужасно неуклюжим   -  person rongenre    schedule 15.12.2014


Ответы (3)


Вы также можете просто добавить параметр конфигурации при создании кластера, если вы знаете, что хотите подавить ведение журнала для нового кластера EMR.

EMR принимает параметры конфигурации в формате JSON, который можно ввести непосредственно в консоль AWS или передать через файл при использовании интерфейса командной строки.

В этом случае, чтобы изменить уровень журнала на WARN, вот JSON:

[
  {
    "classification": "spark-log4j",
    "properties": {"log4j.rootCategory": "WARN, console"}
  }
]

В консоли вы должны добавить это на первом этапе создания:

конфигурация в AWS  Консоль

Или, если вы создаете кластер с помощью CLI:

aws emr create-cluster <options here> --configurations config_file.json

Подробнее см. в документации по EMR.

person Peyton    schedule 15.06.2016

Я смог сделать это, отредактировав $HOME/spark/conf/log4j.properties по желанию и вызвав spark-sql с --driver-java-options следующим образом:

./spark/bin/spark-sql --driver-java-options "-Dlog4j.configuration=file:///home/hadoop/spark/conf/log4j.properties"

Я мог убедиться, что используется правильный файл, добавив -Dlog4j.debug к параметрам:

./spark/bin/spark-sql --driver-java-options "-Dlog4j.debug -Dlog4j.configuration=file:///home/hadoop/spark/conf/log4j.properties"
person rongenre    schedule 24.12.2014
comment
в Spark 3 файл конфигурации журнала находится в /etc/spark/conf.dist/log4j.properties - person Neil McGuigan; 23.09.2020

spark-sql --driver-java-options "-Dlog4j.configuration=file:///home/hadoop/conf/log4j.properties"

cat conf/log4j.properties

# Set everything to be logged to the console
log4j.rootCategory=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

# Settings to quiet third party logs that are too verbose
log4j.logger.org.eclipse.jetty=WARN
log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=WARN
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=WARN
person Vadym Tyemirov    schedule 30.01.2016