(spark源码)union算子

摘要
  1. 问题: spark中, union方法是否重新分区, 是否会触发shuffle
  2. 结论: 不会shuffle, 不会划分stage, 但是可能重新分区(窄依赖)
  3. 解释:
    (1) 宽窄依赖对应的原称为ShuffleDependencyNarrowDependency, 字面上可以看出来, 只有宽依赖才会发生shuffle. 但是两种依赖都会重新分区, 因此重分区和是否shuffle没有关系
    (2) 如果被union的多个rdd, 分区规则相同, 那么index相同的分区, 会被整合到多数分区所在的节点. 比如a节点有2index0的分区, b节点有1个, union之后的0分区会全部转移到a节点
    (3) 如果分区规则不同, union后生成的UnionRDD, 不会进行重新分区, 而是把每个分区合并记录到分区数组中
union方法
// 调用sparkContent的方法, 把this作为参数传进去. 基本操作
def union(other: RDD[T]): RDD[T] = withScope {
  sc.union(this, other)
}
// 实际调用了重载方法
def union[T: ClassTag](first: RDD[
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值