`
superlxw1234
  • 浏览: 551377 次
  • 性别: Icon_minigender_1
  • 来自: 西安
博客专栏
Bd1c0a0c-379a-31a8-a3b1-e6401e2f1523
Hive入门
浏览量:44446
社区版块
存档分类
最新评论

Hadoop利用Partitioner对输出文件分类

 
阅读更多

需求描述:

 

1. 对文件1.txt中统计每个单词的个数(wordcount)$ cat 1.txt

aa
bb
aa
dd
ff
rr
ee
aa
kk
jj
hh
uu
ii
tt
rr
tt
oo
uu
 

2. 输出文件限定为两个,其中一个存放aa~kk之间的单词,另外一个存放ll~zz之间的单词

 

解决方法:

 

MR默认的reduce输出分区为HashParition

 

public class HashPartitioner<K, V> extends Partitioner<K, V> { 

  /** Use {@link Object#hashCode()} to partition. */ 
  public int getPartition(K key, V value, 
                          int numReduceTasks) { 
    return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks; 
  } 

} 

 

重写改方法即可:

 

private static class MyPartitioner extends Partitioner<Text,IntWritable> {
		@Override
		public int getPartition(Text key, IntWritable value, int numReduceTasks) {
			if (key.toString().compareTo("aa") >= 0 && key.toString().compareTo("kk") <= 0) {
				return 0;
			} else {
				return 1;
			}
		}
	}

 

设定conf和job参数:

 

conf.set("mapred.reduce.tasks", "2");
job.setPartitionerClass(MyPartitioner.class);

 

输出结果:

 

$ hadoop fs -cat /lxw/output/part-r-00000
aa      3
bb      1
dd      1
ee      1
ff      1
hh      1
ii      1
jj      1
kk      1

 

$ hadoop fs -cat /lxw/output/part-r-00001
oo      1
rr      2
tt      2
uu      2
 
分享到:
评论

相关推荐

    007_hadoop中MapReduce应用案例_1_数据去重

    在这个"007_hadoop中MapReduce应用案例_1_数据去重"的主题中,我们将深入探讨如何利用MapReduce解决数据去重的问题。这个案例可能涉及到对大数据集进行清洗和预处理,以确保数据的准确性和一致性。 首先,我们来看`...

    hadoop的java_api

    3. **OutputFormat和RecordWriter**:OutputFormat定义了数据如何被写回到输出文件,而RecordWriter负责将Map阶段的结果写入到HDFS。 4. **Mapper**:Mapper是Hadoop MapReduce流程中的第一阶段,它接收键值对输入...

    hadoop 文档:Hadoop开发者下载

    4. **Hadoop API**:学习使用Hadoop API进行数据读写和处理,例如FileSystem API用于文件操作,InputFormat和OutputFormat定义输入输出格式,Mapper和Reducer实现数据处理逻辑。 5. **MapReduce编程**:理解...

    Hadoop - Hadoop Streaming

    Hadoop Streaming 是一种允许用户利用任何可执行脚本或程序(如 Python、Perl 或其他脚本语言)作为 Map 和 Reduce 进程的技术。它通过提供一个框架来实现这一目标,该框架可以读取来自标准输入的数据,并将结果写入...

    Hadoop Streaming 编程

    在分布式计算领域,Hadoop Streaming 是一个至关重要的工具,它使得开发者可以利用任何可执行文件或脚本(如 Java、Python、Shell 等)来编写 MapReduce 作业,而无需直接使用 Java API。Hadoop Streaming 的核心...

    hadoop的api文档

    Hadoop API提供了对分布式文件系统HDFS和MapReduce编程模型的接口,使得开发者能够构建大规模数据处理的应用。下面将详细介绍这两个主要部分的关键知识点: 1. HDFS API: - `FileSystem`类:它是访问HDFS的主要...

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

    10. **案例研究**:通过实际的大数据解决方案案例,如日志分析、推荐系统、社交网络分析等,加深对Hadoop高级编程的理解和应用。 通过学习这些内容,你将具备构建和实施复杂大数据解决方案的能力,无论是在企业内部...

    Hadoop实现大矩阵乘法

    在Hadoop上实现大矩阵乘法,可以充分利用其并行计算的优势,提高计算效率。 大矩阵乘法的基本概念是两个矩阵A(m×n)和B(n×p)相乘得到一个新的矩阵C(m×p),其中C的每个元素ci,j是通过将A的第i行与B的第j列对应元素...

    hadoop应用开发技术详解代码

    - Hadoop与Spark集成:利用Spark的内存计算提升处理速度。 - Hadoop与Storm集成:实现实时数据处理。 - Hadoop与NoSQL数据库的结合:如Cassandra或MongoDB。 8. **Hadoop集群管理和优化**(第12章): - 集群...

    Hadoop按日期统计访问次数及测试数据

    本篇将深入探讨如何利用Hadoop按日期统计访问次数,并结合测试数据进行实战解析。 首先,Hadoop的数据处理通常涉及日志分析,例如网站访问日志。这些日志记录了用户的访问行为,包括访问时间、页面、IP地址等信息。...

    Hadoop的分割程序的例子。程序显示我们如何在Hadoop的MapReduce程序使用一个分区.zip

    总的来说,通过学习这个例子,我们可以深入了解如何在Hadoop MapReduce中利用Partitioner进行数据分布控制,这对于优化大规模数据处理的效率和效果至关重要。同时,这也涉及到对Hadoop MapReduce框架的理解,包括其...

    hadoop api及Hadoop结构与设计

    Hadoop是大数据处理领域的重要工具,其核心组件包括HDFS(Hadoop Distributed File System)和MapReduce...通过熟练掌握Hadoop API和理解其结构设计,开发者能够有效地利用Hadoop进行大数据处理,解决各种业务挑战。

    远程调用执行Hadoop Map/Reduce

    5. **Reduce任务**:Reduce函数从多个Map任务的输出中收集相同分区的键值对,对其进行规约操作,最终生成最终结果。 6. **源码解析**:理解Hadoop MapReduce的源码有助于优化和调试作业。例如,`org.apache.hadoop....

    Hadoop技术文档

    Hadoop提供了一套丰富的API,包括FileSystem API用于文件操作,InputFormat和OutputFormat接口用于定制数据读写,RecordReader和RecordWriter用于读写单条记录,以及Partitioner和Comparator用于控制数据分发和排序...

    大数据-hadoop-mapreduce代码

    此外,代码中可能还会涉及到Hadoop的相关API,如`InputFormat`、`OutputFormat`和`Partitioner`等接口,它们分别用于定义输入数据的格式、输出数据的格式以及数据分区策略。 MapReduce非常适合处理批处理任务,例如...

    hadoop01Demo

    使用Hadoop,我们可以先通过Map任务将这些数据解析,提取出温度值,并将它们与日期一起作为键值对输出。例如,键可以是日期,值是温度。这样,所有同一天的温度会被归在一起,为后续的排序和处理做好准备。 接着,...

    hadoop排序和google三大论文

    Hadoop通过分区(partitioner)、排序(sorter)和合并(combiner)确保了这个过程的正确性。 在Google的三大论文中,我们通常指的是以下三篇具有里程碑意义的论文: 1. **GFS(Google File System)** - 这篇论文详细...

    Hadoop实战中文版

    - **案例1:日志处理**:利用Hadoop对网站的日志文件进行分析处理,提取出用户访问行为特征,用于优化用户体验或改进推荐算法。 - **案例2:社交网络分析**:通过Hadoop处理社交网络中的大量关系数据,挖掘用户之间...

Global site tag (gtag.js) - Google Analytics