Hadoop除了可以让开发人员自行编写map函数和reduce函数,还提供一些常用函数(mapper、reducer和partitioner)的类库,这些类位于 org.apache.hadoop.mapred.lib 包内,在1.2.1版,该包包含一个接口和若干类。在org.apache.hadoop.mapreduce.lib 包内也存在相关类库,且有部分重复。mapred包内部是旧API,mapreduce包是重构之后的新API,但两者都可以使用。

接口如下:

InputSampler.Sampler<K,V> Interface to sample using an InputFormat.

类如下:

BinaryPartitioner<V> Partition BinaryComparable keys using a configurable part of the bytes array returned by BinaryComparable.getBytes().
ChainMapper The ChainMapper class allows to use multiple Mapper classes within a single Map task.
ChainReducer The ChainReducer class allows to chain multiple Mapper classes after a Reducer within the Reducer task.
CombineFileInputFormat<K,V> An abstract InputFormat that returns CombineFileSplit's in InputFormat.getSplits(JobConf, int) method.
CombineFileRecordReader<K,V> A generic RecordReader that can hand out different recordReaders for each chunk in a CombineFileSplit.
CombineFileSplit A sub-collection of input files.
DelegatingInputFormat<K,V> An InputFormat that delegates behaviour of paths to multiple other InputFormats.
DelegatingMapper<K1,V1,K2,V2> An Mapper that delegates behaviour of paths to multiple other mappers.
FieldSelectionMapReduce<K,V> This class implements a mapper/reducer class that can be used to perform field selections in a manner similar to unix cut.
HashPartitioner<K2,V2> Partition keys by their Object.hashCode().
IdentityMapper<K,V> Implements the identity function, mapping inputs directly to outputs.
IdentityReducer<K,V> Performs no reduction, writing all input values directly to the output.
InputSampler<K,V> Utility for collecting samples and writing a partition file for TotalOrderPartitioner.
InputSampler.IntervalSampler<K,V> Sample from s splits at regular intervals.
InputSampler.RandomSampler<K,V> Sample from random points in the input.
InputSampler.SplitSampler<K,V> Samples the first n records from s splits.
InverseMapper<K,V> Mapper that swaps keys and values.
KeyFieldBasedComparator<K,V> This comparator implementation provides a subset of the features provided by the Unix/GNU Sort.
KeyFieldBasedPartitioner<K2,V2> Defines a way to partition keys based on certain key fields (also see KeyFieldBasedComparator.
LongSumReducer<K> Reducer that sums long values.
MultipleInputs This class supports MapReduce jobs that have multiple input paths with a different InputFormat and Mapper for each path
MultipleOutputFormat<K,V> This abstract class extends the FileOutputFormat, allowing to write the output data to different output files.
MultipleOutputs The MultipleOutputs class simplifies writting to additional outputs other than the job default output via the OutputCollectorpassed to the map() and reduce() methods of the Mapper and Reducer implementations.
MultipleSequenceFileOutputFormat<K,V> This class extends the MultipleOutputFormat, allowing to write the output data to different output files in sequence file output format.
MultipleTextOutputFormat<K,V> This class extends the MultipleOutputFormat, allowing to write the output data to different output files in Text output format.
MultithreadedMapRunner<K1,V1,K2,V2> Multithreaded implementation for @link org.apache.hadoop.mapred.MapRunnable.
NLineInputFormat NLineInputFormat which splits N lines of input as one split.
NullOutputFormat<K,V> Consume all outputs and put them in /dev/null.
RegexMapper<K> Mapper that extracts text matching a regular expression.
TokenCountMapper<K> Mapper that maps text values into <token,freq>pairs.
TotalOrderPartitioner<K extends WritableComparable,V> Partitioner effecting a total order by reading split points from an externally generated source.

目前,用到的有一下几个类,后续将对其他类及接口进行研究。

1)ChainMapper类和ChainReducer类:可以在一个mapper中运行多个mapper,再运行reducer,之后还可以再运行多个mapper。这两个类组合使用,用于需要执行多个mapreduce过程的情况。这个方案可以明显降低磁盘的I/O开销。

2)TokenCounterMapper类:将输入值分解成独立的单词(使用Java的StringTokenizer)、输出各单词及其计数器(值为1)

3)InverseMapper类:一个能交换键和值的mapper

参考资料:

1. hadoop API 文档

2. Hadoop 权威指南

MapReduce库类的更多相关文章

  1. 代码的坏味道(22)——不完美的库类(Incomplete Library Class)

    坏味道--不完美的库类(Incomplete Library Class) 特征 当一个类库已经不能满足实际需要时,你就不得不改变这个库(如果这个库是只读的,那就没辙了). 问题原因 许多编程技术都建 ...

  2. .Net Core库类项目跨项目读取配置文件

    在项目开始之前我们可以先去了解一下IConfiguration接口,.Net Core Web应用程序类似于一个控制台,当程序运行到Startup时会自动注入IConfiguration,默认读取当前 ...

  3. python安装pip和使用pip安装Python库类比如pip安装beautifulsoup4

    初学Python时,看到很多不懂得东西,比如 pip, 是python 包管理工具,pip是easy_install的取代. Distribute是对标准库disutils模块的增强,我们知道disu ...

  4. C++ | boost库 类的序列化

    是的,这是今年的情人节,一篇还在研究怎么用的文章,文结的时候应该就用成功了. 恩,要有信心 神奇的分割线 不知何时装过boost库的header-only库, 所以ratslam中的boost是可以编 ...

  5. MapReduce自定义类输出的内容为内存地址

    13480253104 mapreduce.KpiWritable@486a58c4 13502468823 mapreduce.KpiWritable@3de9d100 13560439658 ma ...

  6. C++标准库类模板(stack)和 队列(queue)

    在C++标准库(STL)中有栈和队列的类模板,因此可以直接使用 1.栈(stack):使用栈之前,要先包含头文件 : #include<stack> stack.push(elem); / ...

  7. C++标准库类模板vector

    vector是C++标准库STL中的一个重要的类模板,相当于一个更加健壮的,有很多附加能力的数组 使用vector前首先要包含头文件 #include<vector>  1.vector的 ...

  8. 非常实用全面的 C++框架,库类等资源

    这次的资源涉及到了标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等,C++程序员学习必备! Jason frozen : C/C++的Jason解析生成器 Jansson ...

  9. android的引用库类

    在eclipse中的项目里,有时需要外来的jar文件.添加后就可以消去程序中的红条条啦~~~~~~~~~可以照下面的说明添加. 方法/步骤   打开eclipse,导入项目   右击 项目 , “Bu ...

随机推荐

  1. hdu1263 水果(结构体排序)

    Problem Description 夏天来了~~好开心啊,呵呵,好多好多水果~~ Joe经营着一个不大的水果店.他认为生存之道就是经营最受顾客欢迎的水果.现在他想要一份水果销售情况的明细表,这样J ...

  2. Maven配置插件跳过测试代码的编译和运行

    Maven配置插件跳过测试代码的编译和运行: <!-- 编译插件 --> <plugin> <groupId>org.apache.maven.plugins< ...

  3. CMD常用指令

    列出所有端口使用情况 netstat -ano 只查看端口5060使用情况 netstat -ano|findstr "5060" 查看进程8612的信息 tasklist|fin ...

  4. angularjs的懒加载

    1.angularJS懒加载依赖模块 //设置 .config [ '$ocLazyLoadProvider' ($ocLazyLoadProvider) -> # We configure o ...

  5. python 数据聚合与分组

    前面讲完了字符处理,但对数据进行整体性的聚合运算以及分组操作也是数据分析的重要内容. 通过数据的聚合与分组,我们能更容易的发现隐藏在数据中的规律. 数据分组 数据的分组核心思想是:拆分-组织-合并 首 ...

  6. JavaEE XML XSL转换(XSLT)

    XSL转换(XSLT) @author ixenos 定义: XSL转换机制可以指定将XML文档转换为其他格式的规则,例如,txt纯文本.XHTML或其他任何XML格式. 用途: XSLT通常用来将某 ...

  7. CentOS yum升级GCC到4.8

    wget http://people.centos.org/tru/devtools-2/devtools-2.repo .repo /etc/yum.repos.d --binutils devto ...

  8. 【转载】pygame安装与两种版本的Python兼容问题

    在开始学习游戏编程之前,我们先来安装下pygame和python3.2.5 参考园友: http://www.cnblogs.com/hongten/p/hongten_pygame_install. ...

  9. Unity启动事件-监听:InitializeOnLoad

    [InitializeOnLoad] :在启动Unity的时候运行编辑器脚本  官方案例: using UnityEngine; using UnityEditor; [InitializeOnLoa ...

  10. gimagex 2.0.17 汉化版

    软件名称: gimagex 2.0.17 汉化版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win 32位/64位 软件大小: 1.31MB 图片预览: 软件简介: gimagex 2. ...