union 是一种转变,所以当你 val x = a union(b) ,它向标识符引用的沿袭添加一个新元素 x . 在这一点上没有什么是真正计算出来的。把它想象成一个添加了元素的蓝图。当一个动作被调用时 x ,此蓝图从添加的第一个元素开始执行。 现在,在你的情况下,当你 rdd1.union(rdd2).union(rdd3).union(rdd4).collect() ,您基本上在您的蓝图中添加了3个元素( rdd1 以及 rdd2 ,联合 rdd3 与先前的结果和并集 rdd4 上一个结果)。现在,当您调用 collect() 在这最后的结果。 以防您使用 rdd1 对于许多操作,最好缓存/持久化它,否则它将重新计算。 让我知道这是否有用,干杯。
2条答案
按热度按时间z9ju0rcb1#
union
是一种转变,所以当你val x = a union(b)
,它向标识符引用的沿袭添加一个新元素x
. 在这一点上没有什么是真正计算出来的。把它想象成一个添加了元素的蓝图。当一个动作被调用时x
,此蓝图从添加的第一个元素开始执行。现在,在你的情况下,当你
rdd1.union(rdd2).union(rdd3).union(rdd4).collect()
,您基本上在您的蓝图中添加了3个元素(rdd1
以及rdd2
,联合rdd3
与先前的结果和并集rdd4
上一个结果)。现在,当您调用collect()
在这最后的结果。以防您使用
rdd1
对于许多操作,最好缓存/持久化它,否则它将重新计算。让我知道这是否有用,干杯。
6qqygrtg2#
当你调用union时,spark将得到一个新的rdd。这个rdd让成员保留它的父级来计算它的依赖性。依赖关系用于生成dag。dag用于在调用action时生成stage。