1
运行我最近运行星火计划,并发现采取行动似乎没有触发所有任务的火花运行。 当我使用take
,在火花UI的结果是这样的 虽然当我使用count
, 的`take`行动似乎并没有触发所有任务的火花
注意任务数的差。 我所知道的是动作触发懒惰计算,但我找不到任何记录的相关问题。我需要一些澄清,谢谢。
运行我最近运行星火计划,并发现采取行动似乎没有触发所有任务的火花运行。 当我使用take
,在火花UI的结果是这样的 虽然当我使用count
, 的`take`行动似乎并没有触发所有任务的火花
注意任务数的差。 我所知道的是动作触发懒惰计算,但我找不到任何记录的相关问题。我需要一些澄清,谢谢。
这是正常的。 take
迭代评估分区,直到它收集请求数量的记录。随着narrow dependencies(maps
,flatMaps
,filters
),它可以只计算分区的最小数量。
例如:
sc.range(0, 100, 1, 5).map(_ % 11).filter(_ >= 2).take(1)
仅需要一个分区进行评估
只有宽依赖性(操作需要洗牌像任何byKey
或排序)需要评估多个分区:
sc.range(0, 100, 1, 5).map(_ % 11).map((_, 1)).reduceByKey(_ + _).take(1)
将触发6个任务(5所有上游分区和1取)。
采取的是在执行遗嘱执行人,但计数的驱动程序执行。因此它们在计数所有记录的意义上是不同的,而执行者只执行指定数量的记录而执行。 :) –