探索 Spark 执行计划、阶段数等
Explore Spark Execution Plan, number of Stages, etc
我需要优化我的 pyspark 代码以使执行计划尽可能并行;我想知道是否有比 .explain 方法(不可读)更好的方法来探索 DAG,例如 "normal" 图对象。
例如,了解阶段总数、DAG 的 "first level nodes" 数量等将非常有用。
谢谢。
您可以通过添加 "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 UI,它提供作业、阶段、任务、缓存对象、执行程序分布和环境变量的 DAG 可视化和分解...您可以通过 url 'driver_node_host:4040' 这是默认端口...此处的文档用于其他配置 => https://spark.apache.org/docs/latest/configuration.html#spark-ui
我需要优化我的 pyspark 代码以使执行计划尽可能并行;我想知道是否有比 .explain 方法(不可读)更好的方法来探索 DAG,例如 "normal" 图对象。
例如,了解阶段总数、DAG 的 "first level nodes" 数量等将非常有用。 谢谢。
您可以通过添加 "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 UI,它提供作业、阶段、任务、缓存对象、执行程序分布和环境变量的 DAG 可视化和分解...您可以通过 url 'driver_node_host:4040' 这是默认端口...此处的文档用于其他配置 => https://spark.apache.org/docs/latest/configuration.html#spark-ui