2014-12-14 9 views
12

Io corro scintilla su EMR come descritto in Run Spark and Spark SQL on Amazon Elastic MapReduce:Come sopprimere i messaggi INFO per spark-sql in esecuzione su EMR?

Questo tutorial vi guida attraverso l'installazione e la scintilla di funzionamento, un e generale del motore veloce per l'elaborazione dei dati su larga scala, su un cluster di Amazon EMR. Creerai e interrogerai un set di dati in Amazon S3 utilizzando Spark SQL e imparerai come monitorare Spark su un cluster Amazon EMR con Amazon CloudWatch.

sto cercando di sopprimere i INFO log modificando $HOME/spark/conf/log4j.properties inutilmente.

uscita assomiglia:

$ ./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 

come sopprimere i messaggi info di cui sopra?

+0

qual è il pacchetto java per Spark? –

+2

Alcuni progressi: fare uno './spark/bin/spark-shell --driver-java-options" -Dlog4j.debug "' Mi consente di passare un'opzione JVM e vedere che si tratta di un file log4j.properties da qualche parte in un barattolo. Doing './spark/bin/spark-shell --driver-java-options" -Dlog4j.configuration = file: /// home/hadoop/spark/conf/log4j.proprietà "' Sembra funzionare, anche se questo sembra terribilmente goffo – rongenre

risposta

12

sono stato in grado di fare questo modificando $HOME/spark/conf/log4j.properties, se lo desideri, e chiamando spark-sql con --driver-java-options come segue:

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

ho potuto verificare che il file corretto è stato utilizzato con l'aggiunta di -Dlog4j.debug alle opzioni:

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

scintilla 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 
13

È anche possibile aggiungere l'opzione di configurazione al momento della creazione di cluster, se si sa che si desidera sopprimere la registrazione per un nuovo cluster EMR.

EMR accetta le opzioni di configurazione come JSON, che è possibile immettere direttamente nella console AWS o passare tramite un file quando si utilizza la CLI.

In questo caso, al fine di cambiare il livello di log al WARN, ecco il JSON:

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

Nella console, che ci si aggiunge questo nella prima fase di creazione:

configuration in the AWS Console

Oppure, se si sta creando il cluster utilizzando il CLI:

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

Puoi leggere di più in the EMR documentation.

Problemi correlati