深入浅出Spark(一)

1.map与mapPartitons区别(transformation操作)

  • map

    • 针对RDD中的每个元素进行转换,粒度更细

  • mapPartitions

    • 针对分区整体数据进行转换,粒度更粗

2.foreach与foreachPartitions区别(action操作)

  • foreach

    • 针对RDD中每个元素就行输出,粒度更细

  • foreachPartitions

    • 针对分区整体进行输出,粒度更粗

3.repartiton(n)与coalesce区别

  • repartiton(n)

    • 通常用来增大分区,默认底层调用coalesce(n,shuffle=true),其实无论增大还是减小,都会产生shuffle

  • coalesce

    • 通常用来减少分区,默认不会产生shuffle,如用来强行增大分区,也是没用的

  • 何时增大分区?

    • 当处理的数据量很多的时候,可以考虑增大分区

  • 何时减小分区?

    • 当对RDD数据进行过滤操作(filter函数)后,考虑是否降低RDD分区数目

    • 当结果存储到外部系统

4.rdd.partitionBy

  • 此算子可以制定分区器

  • 分区器

    • RangePartitoner

    • HashPartitioner

    • CoalescedPartitoner

5.rdd的checkpoint机制

  • 安全性

    • 内存+磁盘

      • 易失介质

      • 单点都不可靠

    • HDFS

      • 非易失介质

  • 因为cache、persisit支持的持久化存储介质内存和磁盘容易【损坏丢失】,而HDFS有【容错】、【可靠】的特性,所以将RDD的数据保存在HDFS上

  • HDFS=》持久化+安全

  • 使用方式

    • sc.setCheckpoinDir("hdfs:///tml/chp") //制定hdfs目录

    • rdd.checkpoint

  • 案例

    • 先cache再checkpoint

      • 这样既能享受cache的速度,又能享受checkpoint的安全可靠

  • 与持久化的区别

    • 位置区别

      • persist和cache保存在磁盘和内存中,checkpoint保存在hdfs

    • 生命周期

      • 当AP执行完毕,或者调用unpersist,那么persist和cache的数据会自动被清除,但是checkpoint中的数据不会自动清楚,需要手动清楚

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值