spark core小结

spark core内容汇总

  1. RDD的数据类型
    转换算子transformation:
    map
    flatMap
    mapPartitions
    distinct
    reduceByKey
    groupByKey
    groupBy
    filter
    repartition
    union
    subtract
    intersection
    cache
    persist

    行动算子action:
    collect:将分布式集群executor端的数据拉到driver端的内存中,转化为一般的集合
    saveAsTestFile:将分布式集群executor端的数据写入到hdfs中保存
    foreach:将分布式集群executor端的数据分别某个操作,可以不返回数据
    count:统计分布式集群executor端的数据多少

  2. shuffle操作的原理
    Shuffle作为处理连接map端和reduce端的枢纽,shuffle的性能高低直接影响了整个程序的性能和吞吐量
    shuffle的过程都要落盘,不能直接在内存中进行,因此shuffle的成本是很高的,具体:
    在map阶段,除了map的业务逻辑外,还有shuffle write的过程,这个过程涉及到序列化、磁盘IO等耗时操作;
    在reduce阶段,除了reduce的业务逻辑外,还有前面shuffle read过程,这个过程涉及到网络IO、反序列化等耗时操作。
    所以整个shuffle过程是极其昂贵的,spark在shuffle的实现上也做了很多优化改进,随着版本的迭代发布,spark shuffle的实现也逐步得到改进
    整个DAG的任务以shuffle作为划分任务的依据,划分为不同的stage,同一个stage内是不存在shuffle操作的(也叫窄依赖),不同的stage之间用shuffle连接(叫做宽依赖)

  3. groupByKey和reduceByKey的区别
    由于shuffle会进行数据落盘和读盘操作,影响程序的性能和任务的运行时间,因此一般在shuffle之前在对每个分区内相同的key会进行预聚合(combine),预聚合可以有效降低shuffle落盘的数据量,提高shuffle的效率。例如reduceByKey会在map端进行预聚合后进行shuffle操作,提高shuffle的效率。
    但是groupByKey的作用只是进行分组,不存在预聚合的概念,因此所有的数据都会进行shuffle落盘,是比较耗时的;
    所以当reduceByKey和groupByKey都可以选择时,优先选择reduceByKey;但是如果需要得到分组后的数据,则只能选择groupByKey

  4. distinct的原理
    distinct也是通过reduceByKey实现的,在map进行预聚合,然后进行shuffle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值