Как подавить сообщения журнала паркета в Spark?
Как остановить такие сообщения от моей консоли с искровой оболочкой.
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]
Спасибо
Ответы
Ответ 1
Решение из комментарий к выпуску SPARK-8118 работает:
Вы можете отключить вывод чата, создав файл свойств с этим содержимым:
org.apache.parquet.handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=SEVERE
И затем передавая путь к файлу Spark, когда приложение Отправлено. Предполагая, что файл находится в /tmp/parquet.logging.properties(конечно, это должно быть доступно на всех рабочих узлах):
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" \
...
Кредиты переходят к Justin Bailey.
Ответ 2
Я считаю, что это регрессировало - есть некоторые большие слияния/изменения, которые они вносят в интеграцию паркета... https://issues.apache.org/jira/browse/SPARK-4412
Ответ 3
Это будет работать для Spark 2.0. Измените файл spark/log4j.properties и добавьте:
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
Строки для FileScanRDD и CodecPool помогут с несколькими журналами, которые также очень многословны.
Ответ 4
Чтобы отключить все сообщения, кроме ERROR, вы редактируете файл conf/log4j.properties, изменяя следующую строку:
log4j.rootCategory=INFO, console
в
log4j.rootCategory=ERROR, console
Надеюсь, это поможет!
Ответ 5
не решение, но если вы создадите свою собственную искру, то этот файл: https://github.com/Parquet/parquet-mr/blob/master/parquet-hadoop/src/main/java/parquet/hadoop/ParquetFileReader.java
имеет большинство поколений сообщений журнала, которые вы можете прокомментировать сейчас.
Ответ 6
Я знаю, что этот вопрос был WRT Spark, но я недавно столкнулся с этой проблемой при использовании Parquet with Hive в CDH 5.x и нашел обход. Подробности здесь: https://issues.apache.org/jira/browse/SPARK-4412?focusedCommentId=16118403
Содержание моего комментария из этого билета JIRA ниже:
Это также проблема в версии паркета, распределенной в CDH 5.x. В этом случае я использую parquet-1.5.0-cdh5.8.4
(источники доступны здесь: http://archive.cloudera.com/cdh5/cdh/5)
Тем не менее, я нашел работу для создания заданий mapreduce, представленных через Улей. Я уверен, что это может быть адаптировано для использования с Spark.
- Добавьте в конфигурацию задания следующие свойства (в моем случае я добавил их в
hive-site.xml
, так как добавляю их к mapred-site.xml
не работает:
<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>
- Создайте файл с именем
parquet-logging.properties
со следующим содержимым:
# 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
При этом, когда вы запускаете свои запросы на улей, паркет должен log WARNING (и выше) в журналы контейнеров stdout.