五 数据组织模式 3) 分箱 & 代码
分箱目的:
将数据集中的每条记录都归档到一个 或 多个文件中。
分箱与分区:
分享模式与分区模式很类似。 主要区别在于 分箱使用 Map 构建 而 分区需要用到 MapReduce 进行分区。
分箱好处是减少 reduce 阶段的工作量
结构:
Map阶段重写 setup方法。使用了 MultipleOutput 类, 通过该类将作业输出到多个不同的文件中。
对每条记录遍历每个分箱的条件。如果符合就会发送到该箱。
该模式未用到 combiner、partitioner、 reduce。
性能分析:
和其他只有 map 任务的作业一样,该模式具有相同的可扩展性和性能特性,该模式不需要执行排序、混排及reduce,并且大部分都是在本地数据上执行。
关键代码:
jar包:
import org.apache.hadoop.mapreduce.lib.output.MultipleOutputs;
重写 map 类的 setup方法。 给 MultipleOutputs 对象赋值。
@Override
public void setup(Context context) throws IOException, InterruptedException {
最后就是 mos 对象的各种输出分箱。 至此 结束
God has given me a gift. Only one. I am the most complete fighter in the world. My whole life, I have trained. I must prove I am worthy of someting. rocky_24