Если вы работаете на пряжу и yarn.log-aggregation-enable
установлен в true
вы могли бы сделать:
yarn logs --applicationId <application-id>
и получить журналы для любого конечного применения, в том числе журналов, которые были созданы с помощью кода.
UPDATE:
К сожалению, там нет (по крайней мере, популярной) библиотека, которая позволяет вам сделать это (занесен в журнал в-между-постановщиков границами кода), но в остальном вы можете использовать искру журналы водителя, чтобы получить что-то более учебное, чем то, что у вас есть сейчас. Сначала убедитесь, что вы получите максимальную отдачу от бревен путем установки log4j уровня DEBUG (создать из шаблона и редактировать conf/log4j.properties
) следующим образом:
log4j.rootCategory=DEBUG, console
Затем, журналы делают некоторую фильтрацию (особенно на журналы несуществующей водителя). Например, для работы:
[email protected]:~$ cd ~/opt/spark
[email protected]:~/opt/spark$ git clone https://github.com/ehiggs/spark-terasort.git
[email protected]:~/opt/spark$ cd spark-terasort
[email protected]:~/opt/spark/spark-terasort$ mvn package
...
[email protected]:~/opt/spark/spark-terasort$ cd ..
[email protected]:~/opt/spark$ ./bin/spark-submit --class com.github.ehiggs.spark.terasort.TeraSort spark-terasort/target/spark-terasort-1.0-SNAPSHOT-jar-with-dependencies.jar ~/data/terasort_in ~/data/terasort_out &> logs.logs
Тогда вы могли бы сделать:
[email protected]:~/opt/spark$ cat logs.logs | grep "Registering RDD\|Final stage\|Job" | grep DAG
и получить что-то вроде:
16/03/24 23:47:44 INFO DAGScheduler: Registering RDD 0 (newAPIHadoopFile at TeraSort.scala:60)
16/03/24 23:47:44 INFO DAGScheduler: Final stage: ResultStage 1 (sortByKey at TeraSort.scala:61)
16/03/24 23:48:41 INFO DAGScheduler: Job 0 finished: sortByKey at TeraSort.scala:61, took 56.468248 s
16/03/24 23:48:41 INFO DAGScheduler: Registering RDD 1 (partitionBy at TeraSort.scala:61)
16/03/24 23:48:41 INFO DAGScheduler: Final stage: ResultStage 4 (saveAsNewAPIHadoopFile at TeraSort.scala:62)
16/03/24 23:50:35 INFO DAGScheduler: Job 1 finished: saveAsNewAPIHadoopFile at TeraSort.scala:62, took 114.042019 s
Следует отметить, что узкие преобразования, которые не хвост из фаза не будет указана. Здесь, а не добавлять протоколирование вызовов в код, вы могли бы обогатить имена РДДА, делающее использование следующей уловки:
rdd.setName("more interesting info, or even the algorithm itself")
и получить его отображается в Спарке журналов себя в качестве руководства.
Надеюсь, это даст вам некоторые идеи поближе к тому, что вы ожидаете.
Ваш вопрос недостаточно ясен. Вы имеете в виду журналы, поступающие из вашего собственного кода, а не из внутренних компонентов Spark? – mauriciojost
Так что я не хочу, чтобы журналы из моего кода или внутренности Spark, но хочу документировать код, который был выполнен. Таким образом, чтобы как-то сохранить фактическую команду rdd_name.filter (lambda x: x), а не FilteredRDD, без необходимости писать кодовые регистраторы вокруг каждой команды. Надеюсь, это будет немного более разумным. – flipper144
Итак, вы хотите документировать код в своих журналах? – mauriciojost