需求描述:
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
分享到:
相关推荐
Hadoop 自定义 Partitioner 实现
Hadoop 自定义 Partitioner 实现
Hadoop 自定义 Partitioner 源代码
搭建hadoop集群的全部配置文件,全在里面了,跟我的文章配合起来用
hadoop的默认配置文件,下载记得关注我哦
在本地安装hadoop时需要用此目录替换原来的bin目录
hadoop-3.0.0 windows下配置文件,winutils支持和hadoop.dll等文件,解压取出bin覆盖hadoop-3.0.0\bin即可。不需要cygwin。
hadoop的dll文件 hadoop.zip
编译Hadoop源码需要的maven文件,编译Hadoop源码需要的maven文件.
Hadoop存储系统HDFS的文件是分块存储,每个文件块默认大小为32MB。 T F 评测结果:答案正确(5 分) 1-2 HDFS系统采用NameNode定期向DataNode发送心跳消息,用于检测系统是否正常运行。 T F
Hadoop的MapReduce中多文件输出.pdf
hadoop配置文件hadoop配置文件hadoop配置文件hadoop配置文件hadoop配置文件hadoop配置文件hadoop配置文件hadoop配置文件hadoop配置文件
在Hadoop的分布式文件系统下,对文件的读写和列出文件的相关属性和目录中的内容
Hadoop HA 集群搭建所需要的配置文件:core-site,hdfs-site,mapred-site,yarn-site四个xml文件和一个slaves文件
仅包含Hadoop各个版本bin内文件 hadoop2.6.1-3.2.2 包含hadoop.dll和winutils.exe等
hadoop-windows下配置文件,用于在windows环境下安装hadoop使用,直接可以使用,省去自己编译的麻烦,支持当前最新的2.7.3版本。
Hadoop控制输出文件命名.docx
鉴于当前缺乏从系统设计理论的角度对其开展的相关研究,本文从 Hadoop 分布式 文件系统架构的建模入手,通过对模型各组成部分进行分析,并将其与传统的分布式文件系统进 行比较,总结出 Hadoop 分布式文件系统具有...
hadoop3.3.0-winutils所有bin文件,亲测有效
hadoop filesystem api常见使用说明