标签: mapreduce apache-spark apache-spark-sql pyspark
当我使用spark运行作业时,我得到以下日志?
[Stage 0:> (0 + 32) / 32]
这里32对应于我要求的rdd的分区数。
但是我不知道为什么会有多个阶段以及每个阶段到底发生了什么。
每个阶段显然需要花费很多时间。是否有可能在更少的阶段完成?
答案 0 :(得分:7)
Spark中的一个阶段表示在本地完成的DAG计算的一部分。一个阶段会中断需要重新排列数据的操作,这就是为什么你会在Spark UI中看到它以该操作命名的原因。如果您使用的是Spark 1.4+,那么您甚至可以在DAG可视化部分的UI中将其可视化:
请注意,拆分发生在reduceByKey,这需要一个shuffle来完成完整的执行。
reduceByKey