RDD分区

一、分区的作用

RDD是弹性分布式数据集,通常RDD很大,会被分成很多个分区,分别保存到不同的节点上。

①、对RDD分区,第一个功能是增加并行度

例如,1个RDD有n个分区,分布在n个不同工作节点(WorkerNode)上面,这n个工作节点分别启动n个线程对这n个分区的数据进行并行处理,从而增加了任务的并行度。(1个工作节点上面有几个分区,启动几个线程)

②、对RDD分区,第二个功能是减少通信开销

连接(Join)是查询分析中经常发生的一种操作。

假设在某种应用中需要对两个表进行连接操作,第一个表是很大的用户信息表UserData(UserId, UserInfo),其中,UserId和UserInfo是用户信息表的两个字段,UserInfo包含了某个用户所定阅的主题信息;第二个表是比较小的Events(UserId, LinkInfo),只记录了过去五分钟内发生的事件,即某个用户访问查看了哪些链接。为了对用户访问情况进行了解,需要周期性地对UserData和Events这两个表进行连接操作,并获得(UserId, UserInfo, LinkInfo)这种形式的效果,从而知道某用户订阅的是哪个主题,以及访问了哪个链接。

在执行Spark作业时,UserData表会被加载到内存中生成RDD(即userData),RDD中的每个元素是<UserId, UserInfo>这种类型的键值对;同理,Events表会被加载到内存中生成RDD(即events),RDD中的每个元素是<UserId, LinkInfo>这种类型的键值对。

{

由于UserData是一个很大的表,通常会被存放到HDFS文件中,Spark系统会根据每个元素的数据来源,把每个RDD元素放在相应的节点上。例如:从工作节点u1上的HDFS文件块中读取到的记录,其生成的RDD元素(<UserId, LinkInfo>键值对)就会被放在节点u1上面,最终ÿ

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值