二次排序
各个列分别为:
年,月,日,当天温度
2012,01,01,5
2012,01,02,15
2012,01,03,25
2012,01,04,18
2012,01,05,10
2012,02,01,15
2012,02,02,16
2012,02,03,22
2012,02,04,11
2012,02,05,16
2012,03,01,25
2012,03,02,17
2012,03,03,24
2012,03,04,13
2012,03,05,17
需求:
输出每个’年-月’(year-month)的温度,而且值按升序排序。
输出结果为:
第一列:year-month
第二列:已排序的温度。
hadoop M/R 实现二次排序
MapReduce范式:
map(keya,valuea) -> list(kb,vb)
reduce(kb,list(vb)) -->list(kc,vc)
使用MR框架对规约器值排序:
使用键值转换设计模式:
构造一个组合中间键(k,valuea),其中valuea是次键(secondary key)。在这里,k称为自然键(natural key)。要在规约器键中注入一个值(即 valuea),只需要创建一个组合键,在本例子中valuea 就是温度数据 (temperature) 。