RDD算子(Value类型sample)

整理心情继续。

Value类型再开始:

8.sample

seed默认是系统时间(老倒霉蛋小声是不是抽奖也是看时间的)

抽取数据不放回:伯努利

抽取数据放回:泊松

摘抄自尚硅谷讲义

// 抽取数据不放回(伯努利算法)
// 伯努利算法:又叫 0、1 分布。例如扔硬币,要么正面,要么反面。
// 具体实现:根据种子和随机算法算出一个数和第二个参数设置几率比较,小于第二个参数要,大于不

// 第一个参数:抽取的数据是否放回,false:不放回
// 第二个参数:抽取的几率,范围在[0,1]之间,0:全不取;1:全取;
// 第三个参数:随机数种子

// 抽取数据放回(泊松算法)
// 第一个参数:抽取的数据是否放回,true:放回;false:不放回
// 第二个参数:重复数据的几率,范围大于等于 0.表示每一个元素被期望抽取到的次数
// 第三个参数:随机数种子

sample能用来解决数据倾斜问题。数据倾斜问题源自shuffle操作。经由分组之后,重新组合,导致不均衡,一些task要处理的太多,导致内存溢出的情况。相同的key在一个分区,多次抽取有大量a这个key时,对a这个key进行操作。

9. distinct:用来去重

java底层是用hashset

rdd的实现通过map reducebykey。分布式实现去重。

10.coalesce:默认情况下不会将分区数据打乱重新组合,会出现数据不均衡出现数据倾斜。可以进行shuffle处理。

 val newrdd = rdd.coalesce(2,true)

根据数据量缩减分区,用于大数据集过滤后,提高小数据集的执行效率
当 spark 程序中,存在过多的小任务的时候,可以通过 coalesce 方法,收缩合并分区,减少分区的个数,减小任务调度成本,也可以通过这个算子扩大分区,不过需要shuffle。因为默认不shuffle没有意义不起作用。spark有提供简化操作。

val newrdd = rdd.repartition(3)

底层是调用coalesce,shuffle设置为true

11.repartition

12. sortBy

排序分区存在shuffle。可以根据指定规则对数据源中数据进行排序,默认为升序。有第二个参数false设置为降序。

Value类型结束啦。开启双Value新篇章

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值