PySpark算子处理空间数据全解析(16): reduceByKey算子简介(1)

前面的文章,讲了各种map,同学也都发现了,map后面老是跟着一个叫做reduceByKey的算子,是干嘛的呢?或者说,如何去理解它的运行原理呢?

640?wx_fmt=jpeg

正如名称所言:MapReduce算法,reduceByKey也是始祖级的算法。那么今天来说说这个reduceByKey算子的运行原理。

reduce从名字上看,就知道,主要是用来做聚合,比如下面的例子:

640?wx_fmt=jpeg

看看代码:

640?wx_fmt=jpeg

reduceByKey,做核心的操作,就是这个By Key了,By key的话,就表示在这个Map中,只要Key相同,就会相互进行计算,而且这些计算是累积的。

这个算子一般都是与Map算子组合起来使用的,一般来说:

通用套路

Map负责构建数据结构,reduceByKey算子负责进行聚合统计。

Spark和Hadoop一类的框架,最早就是用来进行统计分析的,在属性数据进行计算的时候,ReduceByKey是非常重要的一个操作,比如下面这个案例:

640?wx_fmt=jpeg

地类图斑的统计中,分类统计应该是最常见的一种操作,类似于SQL里面的group by操作,上面的代码就是实现这一系列的过程,当然,有的同学说,你写这么多代码,SQL只需要一句就行……嗯,要写简单也行,比如上面的代码是为了展开介绍,需要的话也可以写得非常非常简单,把所有代码都集成在一起,也就是写一句就可以了:

640?wx_fmt=jpeg

后再来看一个例子,把上篇文章精确裁切的功能和分类统计放一起,来做一个精确裁切统计:

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

上面的代码,在map里面封装了一个业务逻辑:

国土和农业的地类图斑数据,都有台账数据一说,里面的面积记录也有做合同面积、权证面积等,因为历史原因,未必和实际地理面积相同(在历史上,不同地区对地类的分级不一样,按照当年按地征收农业税的定标方法,贫瘠的土地有一亩做五分入账,或者丰沃的土地,有八分做一亩入账等的历史原因,所以图斑面积和实测面积可能相去甚远)。

为了用图斑面积进行计算,所以需要知道,原始地块被裁切掉了多少,所以这里直接计算裁切掉的比例,然后用这个比例系数乘以图斑面积,最后得到结果面积。

待续未完

需要代码的同学,到下面地址下载: 

Github: https://github.com/allenlu2008/PySparkDemo

gitee: https://gitee.com/godxia/PySparkDemo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虾神说D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值