logging - ¿Cómo suprimir los mensajes de registro de parquet en Spark?
apache-spark (6)
Cómo evitar que esos mensajes lleguen a mi consola de shell de chispa
5 May, 2015 5:14:30 PM INFO: parquet.hadoop.InternalParquetRecordReader: at row 0. reading next block
5 May, 2015 5:14:30 PM INFO: parquet.hadoop.InternalParquetRecordReader: RecordReader initialized will read a total of 89213 records.
5 May, 2015 5:14:30 PM INFO: parquet.hadoop.InternalParquetRecordReader: block read in memory in 2 ms. row count = 120141
5 May, 2015 5:14:30 PM INFO: parquet.hadoop.InternalParquetRecordReader: at row 0. reading next block
5 May, 2015 5:14:30 PM INFO: parquet.hadoop.InternalParquetRecordReader: block read in memory in 2 ms. row count = 89213
5 May, 2015 5:14:30 PM WARNING: parquet.hadoop.ParquetRecordReader: Can not initialize counter due to context is not a instance of TaskInputOutp
[Stage 12:=================================================> (184 + 4) / 200]
Gracias
Creo que esto ha retrocedido, hay algunas grandes fusiones / cambios que están haciendo en la integración de parquet ... https://issues.apache.org/jira/browse/SPARK-4412
Esto funcionará para Spark 2.0. Edite el archivo spark / log4j.properties y agregue:
log4j.logger.org.apache.spark.sql.execution.datasources.parquet=ERROR
log4j.logger.org.apache.spark.sql.execution.datasources.FileScanRDD=ERROR
log4j.logger.org.apache.hadoop.io.compress.CodecPool=ERROR
Las líneas para FileScanRDD y CodecPool ayudarán con un par de registros que también son muy detallados.
La solución del comentario del problema SPARK-8118 parece funcionar:
Puede deshabilitar la salida de chat al crear un archivo de propiedades con estos contenidos:
org.apache.parquet.handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=SEVERE
Y luego pasar la ruta del archivo a Spark cuando se envía la solicitud. Suponiendo que el archivo se encuentre en /tmp/parquet.logging.properties (por supuesto, que debe estar disponible en todos los nodos de trabajo):
spark-submit /
--conf spark.driver.extraJavaOptions="-Djava.util.logging.config.file=/tmp/parquet.logging.properties" /`
--conf spark.executor.extraJavaOptions="-Djava.util.logging.config.file=/tmp/parquet.logging.properties" /
...
Los créditos van para Justin Bailey .
Para desactivar todos los mensajes excepto ERROR, debe editar su archivo conf / log4j.properties cambiando la siguiente línea:
log4j.rootCategory=INFO, console
dentro
log4j.rootCategory=ERROR, console
Espero que pueda ayudar!
Sé que esta pregunta era WRT Spark, pero recientemente tuve este problema al usar Parquet con Hive en CDH 5.x y encontré una solución alternativa. Los detalles están aquí: https://issues.apache.org/jira/browse/SPARK-4412?focusedCommentId=16118403
Contenido de mi comentario de ese boleto de JIRA a continuación:
Esto también es un problema en la versión de parquet distribuido en CDH 5.x. En este caso, estoy usando
parquet-1.5.0-cdh5.8.4
(fuentes disponibles aquí: http://archive.cloudera.com/cdh5/cdh/5 )Sin embargo, he encontrado una solución para los trabajos de mapreduce enviados a través de Hive. Estoy seguro de que esto también puede adaptarse para su uso con Spark.
- Agregue las siguientes propiedades a la configuración de su trabajo (en mi caso, las agregué a
hive-site.xml
desde que agregarlas amapred-site.xml
no funcionó:
<property> <name>mapreduce.map.java.opts</name> <value>-Djava.util.logging.config.file=parquet-logging.properties</value> </property> <property> <name>mapreduce.reduce.java.opts</name> <value>-Djava.util.logging.config.file=parquet-logging.properties</value> </property> <property> <name>mapreduce.child.java.opts</name> <value>-Djava.util.logging.config.file=parquet-logging.properties</value> </property>
- Cree un archivo llamado
parquet-logging.properties
con el siguiente contenido:
# Note: I''m certain not every line here is necessary. I just added them to cover all possible # class/facility names.you will want to tailor this as per your needs. .level=WARNING java.util.logging.ConsoleHandler.level=WARNING parquet.handlers=java.util.logging.ConsoleHandler parquet.hadoop.handlers=java.util.logging.ConsoleHandler org.apache.parquet.handlers=java.util.logging.ConsoleHandler org.apache.parquet.hadoop.handlers=java.util.logging.ConsoleHandler parquet.level=WARNING parquet.hadoop.level=WARNING org.apache.parquet.level=WARNING org.apache.parquet.hadoop.level=WARNING
- Agregue el archivo al trabajo. En Hive, esto se hace más fácilmente así:
ADD FILE /path/to/parquet-logging.properties;
Una vez hecho esto, cuando ejecute sus consultas de Hive, el parquet solo debe registrar mensajes de nivel de ADVERTENCIA (y más alto) en los registros del contenedor de la salida estándar.
no es una solución, pero si creas tu propia chispa, este archivo: https://github.com/Parquet/parquet-mr/blob/master/parquet-hadoop/src/main/java/parquet/hadoop/ParquetFileReader.java tiene la mayoría de las generaciones de mensajes de registro que puede comentar por ahora.