深入理解spark高阶算子combineByKey

今天来详细说说spark中的一个比较底层的算子combineByKey。

熟悉spark的朋友应该知道,spark里面有很多类型的算子,有些比较基础,什么map,filter,可能看一眼就会了,有些稍微复杂点,但是也不难懂,看看算子解释,给一行代码也能懂,如reducebykey。还有一些较为晦涩难懂,像今天这个,因为算子的输入可能就好几项,理解起来比较困难,日常普通的数据处理可能根本就不会使用,若不是碰到特别复杂的业务场景以及数据问题处理,你可能根本想不起它。像我也是使用spark好几年,前几年基本不熟悉combineByKey,近一年改造业务中的特征系统,碰到很多问题, 既要考虑大数据,又要兼顾性能最优,普通的逻辑虽然能够实现,但是已经无法满足各方面要求了,通常此时就是这种底层算子大显神威了。并且当你用这个算子能较好较快的实现以前绞尽脑汁想要实现功能时,你会发现原来它是多么的牛逼。

话不多说,理解这个算子之前先来简单复习一下大数据计算中的几个通俗概念与问题。

  • 问题1,大数据大的原因:

首先我们要处理的对象是海量数据,往往以T(1T=1024G=1024*1024M)为单位,几个T几百个T的数据,那么显然1台机器装不下这么多数据,需要分布在n台机器上,比如说1000台吧。机器与机器之间的数据传输通常就比较慢了,只能通过数据io传输,好比你拷贝数据到u盘一样,比起单台电脑从c盘复制数据到d盘比,数据拷贝到外部u盘则慢得多了多。好了这里只是举个大概的例子,要理解的重要就2点:
(1)数据量海量,必须存储在n台机器上,没有这个特性,还要什么大数据框架;
(2)数据如果在机器与机器间进行传输是很慢的,这里是相对机器自己内部传输的速度。

  • 问题2:spark中的算子逻辑:

有了刚才对于大数据在存储与计算上的理解,顺着这个理解来大概说说spark中所有的算子大概有两种底层逻辑。
逻辑(1):对于不需要跨机器交互数据就能处理的逻辑,也就是说一个操作不用跨机

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值