从零开始大数据【1.3】-- mapreduce中的分区(设置多个reducer)

本文介绍了如何在MapReduce中自定义分区,以实现按特定条件(如类别)将数据输出到多个文件。通过创建自定义Partitioner类并设置Reducer数量,案例展示了将game类别数据单独输出到一个文件,其余数据输出到另一个文件。运行结果显示分区成功,数据正确分隔到了不同的文件中。
摘要由CSDN通过智能技术生成

从零开始大数据【1.3】-- mapreduce中的分区

上期回顾:

上一期自定义了mapreduce中kv对可以用的数据类型。并且使用了一个谷歌应用商场数据作为数据集。接下来的案例都会使用这个数据集,在这一节中将学会如何自定义mapreduce过程中的分区。

主要内容

所谓分区,即reducer的数量,一般来说一个reducer将结果输入到一个文件,当需要特定的比如按月输出数据时,就需要多个reducer输出多个文件。默认的partition过程如下:是一个对键取哈希值然后mod设定的reducer数量的值,判断将kv放入哪一个reducer中运行。

public class HashPartitioner<K, V> extends Partitioner<K, V> {
 	public int getPartition(K key, V value, int numReduceTasks) {
 		return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;
	 }
}

真实案例

仍然使用上一节的数据集,这一次将game类别的单独输出在一个文件中,其余的在一个文件中。

代码编写

首先定义catpartitioner类

    
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值