Hadoop Partitioner编程

1.Partitioner是partitioner的基类,如果需要定制Partitioner也需要继承该类。

2. HashPartitioner是mapreduce的默认partitioner。计算方法是 which reducer=(key.hashCode() & Integer.MAX_VALUE) % numReduceTasks,得到当前的目的reducer。

3.说明,Partitioner是在Mapper执行完成,Reducer执行前。它有两个参数,就是Mapper的输出参数,在这里,有几个Reducer就有几个Partitioner

4.根据数据分区,将数据传入不同的Reducer中

示例:

public static class ProviderPartitioner extends Partitioner<Text, DataBean>

{

//静态,从上往下执行

private static Map<String, Integer> providerMap = new HashMap<String, Integer>();

//静态块,在执行方法前执行

static {

providerMap.put("135", 1);

providerMap.put("136", 1);

providerMap.put("137", 1);

providerMap.put("138", 1);

providerMap.put("139", 1);

providerMap.put("150", 2);

providerMap.put("159", 2);

providerMap.put("182", 3);

providerMap.put("183", 3);

}

@Override

public int getPartition(Text key, DataBean value, int numPartitions) {

String accountString = key.toString();

String sub_accString = accountString.substring(0, 3);

Integer codeInteger =  providerMap.get(sub_accString);

if (codeInteger == null)

{

codeInteger = 0;

}

return codeInteger;

}

}

最后在waitForCompletion前将相关Partitioner设置

//partitioner

job.setPartitionerClass(ProviderPartitioner.class);

//调置启动Reduce的数量

job.setNumReduceTasks(Integer.parseInt(args[2]));

//

job.waitForCompletion(true);

5.生成jar包,不用指定main方法,需要指定需要启动Reducer的数量

hadoop jar /root/mrs.jar cn.itcast.hadoop.mr.dc.DataCount /data.doc /data-p6 6

时间: 2024-10-11 13:31:58

Hadoop Partitioner编程的相关文章

Hadoop Streaming 编程

1.概述 Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如: 采用shell脚本语言中的一些命令作为mapper和reducer(cat作为mapper,wc作为reducer) $HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/contrib/streaming/hadoop-*-streaming.jar \ -input myInputDirs \ -outpu

Hadoop MapReduce编程 API入门系列之压缩和计数器(三十)

不多说,直接上代码. Hadoop MapReduce编程 API入门系列之小文件合并(二十九) 生成的结果,作为输入源. 代码 package zhouls.bigdata.myMapReduce.ParseTVDataCompressAndCounter; import java.net.URI; import java.util.List;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.conf.Co

hadoop安装和hadoop pipes编程说明

本篇文章主要是对hadoop pipes编程的一些问题的备注,对于网上常见的问题,并未完全写入. 安装 基础环境:3台基于centos7的虚拟机(1个master,2个slave:slave1.slave2).hadoop-2.6.0 1. hadoop安装主要参考的网址是:hadoop参考安装 2. linux配置ssh免密码登录,具体参考的是:centos ssh免密码登录 tips: 1. 三个虚拟机的一定要用一样的帐号,即用户名.如果不一样的话,通过ssh进行免密码登录时会出现问题.比如

Hadoop MapReduce编程 API入门系列之挖掘气象数据版本2(九)

下面,是版本1. Hadoop MapReduce编程 API入门系列之挖掘气象数据版本1(一) 这篇博文,包括了,实际生产开发非常重要的,单元测试和调试代码.这里不多赘述,直接送上代码. MRUnit 框架 MRUnit是Cloudera公司专为Hadoop MapReduce写的单元测试框架,API非常简洁实用.MRUnit针对不同测试对象使用不同的Driver: MapDriver:针对单独的Map测试  ReduceDriver:针对单独的Reduce测试    MapReduceDri

Hadoop高级编程—构建与实现大数据解决方案pdf

下载地址:网盘下载 内容简介  · · · · · · 如果你已经准备好要充分实施大规模可扩展性数据分析工作,那么需要知道如何利用Hadoop技术.这本<Hadoop高级编程--构建与实现大数据解决方案>可以帮助你做到这一点!本书关注用于构建先进的.基于Hadoop的企业级应用的架构和方案,并为实现现实的解决方案提供深入的.代码级的讲解.本书还会带你领略数据设计以及数据设计如何影响实现.本书解释了MapReduce的工作原理,并展示了如何在MapReduce中重新定制特定的业务问题.在整本书中

《Hadoop高级编程》之为Hadoop实现构建企业级安全解决方案

本章内容提要 ●    理解企业级应用的安全顾虑 ●    理解Hadoop尚未为企业级应用提供的安全机制 ●    考察用于构建企业级安全解决方案的方法 第10章讨论了Hadoop安全性以及Hadoop中用于提供安全控制的机制.当构建企业级安全解决方案(它可能会围绕着与Hadoop数据集交互的许多应用程序和企业级服务)时,保证Hadoop自身的安全仅仅是安全解决方案的一个方面.各种组织努力对数据采用一致的安全机制,而数据是从采用了不同安全策略的异构数据源中提取的.当这些组织从多个源获取数据,接

《Hadoop高级编程——构建与实现大数据解决方案》有奖试读

一. 活动主题: <Hadoop高级编程--构建与实现大数据解决方案>有奖试读,点击查看图书详情 二. 活动时间: 2014年8月6日至2014年9月5日(为期1个月) 三. 参与方式 : 您可以选择下面任何一种方式来参加我们的活动! 1. 阅读我们精选的<Hadoop高级编程>试读章节(点击下载PDF文档),并将书评发布在本篇博客的评论区,每位用户可发表多一条或多条书评,书评优秀可重复获奖. 2. 将活动转发至新浪微博并关注@清华大学出版社第五事业部,或者关注官方微信@清华书友(

Hadoop之——Partitioner编程

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46136685 一.Mapper类的实现 static class MyMapper extends Mapper<LongWritable, Text, Text, KpiWritable>{ protected void map(LongWritable key, Text value, org.apache.hadoop.mapreduce.Mapper<LongWr

Hadoop MapReduce编程 API入门系列之统计学生成绩版本2(十八)

不多说,直接上代码. 统计出每个年龄段的 男.女 学生的最高分 这里,为了空格符的差错,直接,我们有时候,像如下这样的来排数据. 代码 package zhouls.bigdata.myMapReduce.Gender; import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.conf.Configured;import org.apache.hadoop.fs