MapReduce部分:天气案例:细粒度介绍计算框架

该博客详细介绍了如何使用MapReduce处理天气数据,以找到每个月气温最高的2天。通过自定义数据类型、分区、排序和分组规则,实现了对温度记录的细粒度处理。博客涵盖了Map、Reduce过程,以及如何处理倾斜和内存管理问题。

Vi一个tianqi.txt,把最后一的空格删掉。

温度

天气案例:细粒度介绍计算框架

需求:

找出每个月气温最高的2天

1949-10-01 14:21:02 34c

1949-10-01 19:21:02 38c

1949-10-02 14:01:02 36c

1950-01-01 11:21:02 32c

1950-10-01 12:21:02 37c

1951-12-01 12:21:02 23c

1950-10-02 12:21:02 41c

1950-10-03 12:21:02 27c

1951-07-01 12:21:02 45c

1951-07-02 12:21:02 46c

1951-07-03 12:21:03 47c

思路分析:

 

 1,MR

*保证原语

怎样划分数据,怎样定义一组

2,k:v映射的设计

考虑reduce的计算复杂度

3,能不能多个reduce

倾斜:抽样

集群资源情况

4,自定义数据类型

思路:

每年

每个月

最高

2天

1天多条记录?

进一部思考

年月分组

温度升序

key中要包含时间和温度呀!

MR原语:相同的key分到一组

通过GroupCompartor设置分组规则

自定义数据类型Weather

包含时间

包含温度

自定义排序比较规则

自定义分组比较

年月相同被视为相同的key

那么reduce迭代时,相同年月的记录有可能是同一天的

reduce中需要判断是否同一天

注意OOM

数据量很大

全量数据可以切分成最少按一个月份的数据量进行判断

这种业务场景可以设置多个reduce

通过实现partition

 

 

 

代码实现:

客户端部分:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值