五 数据组织模式 3) 分箱 & 代码

本文深入探讨了分箱技术在数据集处理中的应用,详细阐述了分箱与分区的区别,以及如何利用Map阶段实现数据高效分类。通过引入MultipleOutputs类,实现数据输出到多个文件,避免了不必要的reduce阶段工作,提升了性能与可扩展性。重点分析了该模式在无需排序、混排及reduce操作的情况下,如何在本地数据上执行任务,确保了作业的高效率与稳定性。
分箱目的:
         将数据集中的每条记录都归档到一个 或 多个文件中
分箱与分区:
          分享模式与分区模式很类似。 主要区别在于 分箱 使用 Map 构建  而 分区需要用到 MapReduce 进行分区。
         分箱好处是减少 reduce 阶段的工作量
结构:
         Map阶段重写 setup方法。使用了 MultipleOutput 类, 通过该类将作业输出到多个不同的文件中。
         对每条记录遍历每个分箱的条件。如果符合就会发送到该箱。
         该模式未用到 combiner、partitioner、 reduce。
性能分析:
         和其他只有 map 任务的作业一样,该模式具有相同的可扩展性和性能特性,该模式不需要执行排序、混排及reduce,并且大部分都是在本地数据上执行。
关键代码:

    
  1. jar包:
  2. import org.apache.hadoop.mapreduce.lib.output.MultipleOutputs;
  3. 重写 map 类的 setup方法。 给 MultipleOutputs 对象赋值。
  4. @Override
  5. public void setup(Context context) throws IOException, InterruptedException {
  6. 最后就是 mos 对象的各种输出分箱。 至此 结束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值