阶段在火花日志中意味着什么?

时间:2015-10-07 14:29:09

标签: mapreduce apache-spark apache-spark-sql pyspark

当我使用spark运行作业时,我得到以下日志?

[Stage 0:> (0 + 32) / 32]

这里32对应于我要求的rdd的分区数。

但是我不知道为什么会有多个阶段以及每个阶段到底发生了什么。

每个阶段显然需要花费很多时间。是否有可能在更少的阶段完成?

1 个答案:

答案 0 :(得分:7)

Spark中的一个阶段表示在本地完成的DAG计算的一部分。一个阶段会中断需要重新排列数据的操作,这就是为什么你会在Spark UI中看到它以该操作命名的原因。如果您使用的是Spark 1.4+,那么您甚至可以在DAG可视化部分的UI中将其可视化:

enter image description here

请注意,拆分发生在reduceByKey,这需要一个shuffle来完成完整的执行。