我已经为我的应用程序实现了二级排序。
File-1 File-2 File-3
------ ------ ------
name,pos,r,value name,pos,r,value name,pos,r,value
aa,1,0,123 aa,2,1,1 aa,3,1,11
bb,1,0,234 aa,2,2,34 aa,3,2,12
aa,2,3,55 aa,3,3,13
bb,2,1,99 bb,3,1,15
bb,2,2,54 bb,3,2,19
bb,2,3,32 bb,3,3,13
对于File-1中的每条记录,File2和File3各有三条记录。
复合键是:: name +(pos + r)
自然键是:: name
排序顺序基于复合键。基于(pos + r)
的升序预期输出
特定名称(aa)的File1内容,后跟所有file2内容(基于pos + r排序的三行aa),然后是文件三内容(基于pos +排序的三行aa)
aa,123,1,34,55,11,12,13
BB,234,99,54,32,15,19,13
我使用setGroupingComparatorClass,setSortComparatorClass和自定义分区器在二级排序中实现了这一点。
我的怀疑是:??
1)如何为此场景添加组合器。
2)如果添加了合并器,那么排序将如何以及何时发生 reduce函数以正确的顺序接收来自所有映射器的输出。
答案 0 :(得分:0)
建议你好好经历 http://bytepadding.com/big-data/map-reduce/understanding-map-reduce-the-missing-guide/
请自行了解组比较器和排序比较器并正确使用它。