Подтвердить что ты не робот

Как уменьшить частоту вывода Spark runtime?

Как уменьшить количество информации о трассировке, которую создает Spark runtime?

Значение по умолчанию слишком многословное,

Как отключить его и включить его, когда мне нужно.

Спасибо

Подробный режим

scala> val la = sc.parallelize(List(12,4,5,3,4,4,6,781))
scala> la.collect
15/01/28 09:57:24 INFO SparkContext: Starting job: collect at <console>:15
15/01/28 09:57:24 INFO DAGScheduler: Got job 3 (collect at <console>:15) with 1 output 
...
15/01/28 09:57:24 INFO Executor: Running task 0.0 in stage 3.0 (TID 3)
15/01/28 09:57:24 INFO Executor: Finished task 0.0 in stage 3.0 (TID 3). 626 bytes result sent to driver
15/01/28 09:57:24 INFO DAGScheduler: Stage 3 (collect at <console>:15) finished in 0.002 s
15/01/28 09:57:24 INFO DAGScheduler: Job 3 finished: collect at <console>:15, took 0.020061 s
res5: Array[Int] = Array(12, 4, 5, 3, 4, 4, 6, 781)

Тихий режим (ожидается)

scala> val la = sc.parallelize(List(12,4,5,3,4,4,6,781))
scala> la.collect
res5: Array[Int] = Array(12, 4, 5, 3, 4, 4, 6, 781)
4b9b3361

Ответ 1

цитата из книги " Изучение искры ".

Вы можете обнаружить, что операторы регистрации, которые печатаются в оболочке, отвлекают. Вы можете контролировать детализацию ведения журнала. Для этого вы можете создать файл в каталоге conf с именем log4j.properties. Разработчики Spark уже включают шаблон для этого файла с именем log4j.properties.template. Чтобы сделать ведение журнала менее подробным, сделайте копию conf/log4j.properties.template с именем conf/log4j.properties и найдите следующую строку:

log4j.rootCategory=INFO, console

Затем понизьте уровень журнала, чтобы мы отображали только сообщение WARN и выше, изменив его на следующее:

log4j.rootCategory=WARN, console

Когда вы снова откроете оболочку, вы увидите меньше результатов.

Ответ 2

Искра 1.4.1

sc.setLogLevel("WARN")

Из комментариев в исходном коде:

Допустимые уровни журнала включают в себя: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, WARN

Spark 2.x - 2.3.1

sparkSession.sparkContext().setLogLevel("WARN")

Spark 2.3.2

sparkSession.sparkContext.setLogLevel("WARN")

Ответ 3

Конфигурация ведения журнала на уровне приложения Spark

При таком подходе нет необходимости в изменении кода в кластере для искрового приложения

  • Создайте новый файл log4j.properties из log4j.properties.template.
  • Затем измените многословие с помощью свойства log4j.rootCategory.
  • Скажем, нам нужно проверить ОШИБКА s заданного jar, затем log4j.rootCategory=ERROR, console

Команда отправки Spark будет

spark-submit \
    ... #Other spark props goes here    
    --files prop/file/location \
    --conf 'spark.executor.extraJavaOptions=-Dlog4j.configuration=prop/file/location' \
    --conf 'spark.driver.extraJavaOptions=-Dlog4j.configuration=prop/file/location' \
    jar/location \
    [application arguments] 

Теперь вы увидите только журналы, которые относятся к категории ERROR.


Plain Log4j way wo Spark (но требует изменения кода)

Установить регистрацию ВЫКЛ для пакетов org и akka

import org.apache.log4j.{Level, Logger}

Logger.getLogger("org").setLevel(Level.ERROR)
Logger.getLogger("akka").setLevel(Level.ERROR)

Ответ 4

В Unix вы всегда можете передать stderr в /dev/null, т.е.:

run-example org.apache.spark.examples.streaming.NetworkWordCount localhost 9999 2> /dev/null