Изучите План выполнения Spark, количество этапов и т. Д

#python #apache-spark #directed-acyclic-graphs #explain

#питон #apache-искра #направленные ациклические графики #объясните

Вопрос:

Мне нужно оптимизировать мой код pyspark, чтобы план выполнения был как можно более параллельным; Я хотел бы знать, есть ли лучший способ, чем метод .explain (который нечитаем), для изучения DAG, как «обычный» объект graph.

Например, было бы очень полезно знать общее количество этапов, количество «узлов первого уровня» DAG и т.д. Спасибо.

Ответ №1:

вы можете получить более подробный план объяснения от catalyst optimizer, добавив «True» .. возможно, это то, что вы ищете

 df = spark.range(10)
df.explain(True)
...output...
== Parsed Logical Plan ==
Range (0, 10, step=1, splits=Some(8))

== Analyzed Logical Plan ==
id: bigint
Range (0, 10, step=1, splits=Some(8))

== Optimized Logical Plan ==
Range (0, 10, step=1, splits=Some(8))

== Physical Plan ==
*(1) Range (0, 10, step=1, splits=8)
 

более подробная информация вы также можете получить доступ к пользовательскому интерфейсу Spark, который обеспечивает визуализацию DAG и разбивку заданий, этапов, задач, кэшированных объектов, распределения исполнителей и переменных среды… вы можете получить к нему доступ через URL-адрес ‘driver_node_host: 4040‘, который является портом по умолчанию… документы здесь для дополнительных конфигураций => https://spark.apache.org/docs/latest/configuration.html#spark-ui