blob: e430bcdd1946529b138f57f0c79ef1dc04fd74a1 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_292) on Tue Jun 15 06:00:54 GMT 2021 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ChainMapper (Apache Hadoop Main 3.3.1 API)</title>
<meta name="date" content="2021-06-15">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ChainMapper (Apache Hadoop Main 3.3.1 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":9,"i1":10,"i2":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ChainMapper.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../../org/apache/hadoop/mapreduce/lib/chain/ChainReducer.html" title="class in org.apache.hadoop.mapreduce.lib.chain"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/hadoop/mapreduce/lib/chain/ChainMapper.html" target="_top">Frames</a></li>
<li><a href="ChainMapper.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.hadoop.mapreduce.lib.chain</div>
<h2 title="Class ChainMapper" class="title">Class ChainMapper&lt;KEYIN,VALUEIN,KEYOUT,VALUEOUT&gt;</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../../../org/apache/hadoop/mapreduce/Mapper.html" title="class in org.apache.hadoop.mapreduce">org.apache.hadoop.mapreduce.Mapper</a>&lt;KEYIN,VALUEIN,KEYOUT,VALUEOUT&gt;</li>
<li>
<ul class="inheritance">
<li>org.apache.hadoop.mapreduce.lib.chain.ChainMapper&lt;KEYIN,VALUEIN,KEYOUT,VALUEOUT&gt;</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>@InterfaceAudience.Public
@InterfaceStability.Stable
public class <span class="typeNameLabel">ChainMapper&lt;KEYIN,VALUEIN,KEYOUT,VALUEOUT&gt;</span>
extends <a href="../../../../../../org/apache/hadoop/mapreduce/Mapper.html" title="class in org.apache.hadoop.mapreduce">Mapper</a>&lt;KEYIN,VALUEIN,KEYOUT,VALUEOUT&gt;</pre>
<div class="block">The ChainMapper class allows to use multiple Mapper classes within a single
Map task.
<p>
The Mapper classes are invoked in a chained (or piped) fashion, the output of
the first becomes the input of the second, and so on until the last Mapper,
the output of the last Mapper will be written to the task's output.
</p>
<p>
The key functionality of this feature is that the Mappers in the chain do not
need to be aware that they are executed in a chain. This enables having
reusable specialized Mappers that can be combined to perform composite
operations within a single task.
</p>
<p>
Special care has to be taken when creating chains that the key/values output
by a Mapper are valid for the following Mapper in the chain. It is assumed
all Mappers and the Reduce in the chain use matching output and input key and
value classes as no conversion is done by the chaining code.
</p>
<p>
Using the ChainMapper and the ChainReducer classes is possible to compose
Map/Reduce jobs that look like <code>[MAP+ / REDUCE MAP*]</code>. And
immediate benefit of this pattern is a dramatic reduction in disk IO.
</p>
<p>
IMPORTANT: There is no need to specify the output key/value classes for the
ChainMapper, this is done by the addMapper for the last mapper in the chain.
</p>
ChainMapper usage pattern:
<p>
<pre>
...
Job = new Job(conf);
Configuration mapAConf = new Configuration(false);
...
ChainMapper.addMapper(job, AMap.class, LongWritable.class, Text.class,
Text.class, Text.class, true, mapAConf);
Configuration mapBConf = new Configuration(false);
...
ChainMapper.addMapper(job, BMap.class, Text.class, Text.class,
LongWritable.class, Text.class, false, mapBConf);
...
job.waitForComplettion(true);
...
</pre></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/mapreduce/lib/chain/ChainMapper.html#ChainMapper--">ChainMapper</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/mapreduce/lib/chain/ChainMapper.html#addMapper-org.apache.hadoop.mapreduce.Job-java.lang.Class-java.lang.Class-java.lang.Class-java.lang.Class-java.lang.Class-org.apache.hadoop.conf.Configuration-">addMapper</a></span>(<a href="../../../../../../org/apache/hadoop/mapreduce/Job.html" title="class in org.apache.hadoop.mapreduce">Job</a>&nbsp;job,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/mapreduce/Mapper.html" title="class in org.apache.hadoop.mapreduce">Mapper</a>&gt;&nbsp;klass,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;inputKeyClass,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;inputValueClass,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;outputKeyClass,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;outputValueClass,
<a href="../../../../../../org/apache/hadoop/conf/Configuration.html" title="class in org.apache.hadoop.conf">Configuration</a>&nbsp;mapperConf)</code>
<div class="block">Adds a <a href="../../../../../../org/apache/hadoop/mapreduce/Mapper.html" title="class in org.apache.hadoop.mapreduce"><code>Mapper</code></a> class to the chain mapper.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/mapreduce/lib/chain/ChainMapper.html#run-org.apache.hadoop.mapreduce.Mapper.Context-">run</a></span>(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)</code>
<div class="block">Expert users can override this method for more complete control over the
execution of the Mapper.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/mapreduce/lib/chain/ChainMapper.html#setup-org.apache.hadoop.mapreduce.Mapper.Context-">setup</a></span>(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)</code>
<div class="block">Called once at the beginning of the task.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.mapreduce.Mapper">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.hadoop.mapreduce.<a href="../../../../../../org/apache/hadoop/mapreduce/Mapper.html" title="class in org.apache.hadoop.mapreduce">Mapper</a></h3>
<code><a href="../../../../../../org/apache/hadoop/mapreduce/Mapper.html#cleanup-org.apache.hadoop.mapreduce.Mapper.Context-">cleanup</a>, <a href="../../../../../../org/apache/hadoop/mapreduce/Mapper.html#map-KEYIN-VALUEIN-org.apache.hadoop.mapreduce.Mapper.Context-">map</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="ChainMapper--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ChainMapper</h4>
<pre>public&nbsp;ChainMapper()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="addMapper-org.apache.hadoop.mapreduce.Job-java.lang.Class-java.lang.Class-java.lang.Class-java.lang.Class-java.lang.Class-org.apache.hadoop.conf.Configuration-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addMapper</h4>
<pre>public static&nbsp;void&nbsp;addMapper(<a href="../../../../../../org/apache/hadoop/mapreduce/Job.html" title="class in org.apache.hadoop.mapreduce">Job</a>&nbsp;job,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/mapreduce/Mapper.html" title="class in org.apache.hadoop.mapreduce">Mapper</a>&gt;&nbsp;klass,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;inputKeyClass,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;inputValueClass,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;outputKeyClass,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;outputValueClass,
<a href="../../../../../../org/apache/hadoop/conf/Configuration.html" title="class in org.apache.hadoop.conf">Configuration</a>&nbsp;mapperConf)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Adds a <a href="../../../../../../org/apache/hadoop/mapreduce/Mapper.html" title="class in org.apache.hadoop.mapreduce"><code>Mapper</code></a> class to the chain mapper.
<p>
The key and values are passed from one element of the chain to the next, by
value. For the added Mapper the configuration given for it,
<code>mapperConf</code>, have precedence over the job's Configuration. This
precedence is in effect when the task is running.
</p>
<p>
IMPORTANT: There is no need to specify the output key/value classes for the
ChainMapper, this is done by the addMapper for the last mapper in the chain
</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>job</code> - The job.</dd>
<dd><code>klass</code> - the Mapper class to add.</dd>
<dd><code>inputKeyClass</code> - mapper input key class.</dd>
<dd><code>inputValueClass</code> - mapper input value class.</dd>
<dd><code>outputKeyClass</code> - mapper output key class.</dd>
<dd><code>outputValueClass</code> - mapper output value class.</dd>
<dd><code>mapperConf</code> - a configuration for the Mapper class. It is recommended to use a
Configuration without default values using the
<code>Configuration(boolean loadDefaults)</code> constructor with
FALSE.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="setup-org.apache.hadoop.mapreduce.Mapper.Context-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setup</h4>
<pre>protected&nbsp;void&nbsp;setup(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/mapreduce/Mapper.html#setup-org.apache.hadoop.mapreduce.Mapper.Context-">Mapper</a></code></span></div>
<div class="block">Called once at the beginning of the task.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/mapreduce/Mapper.html#setup-org.apache.hadoop.mapreduce.Mapper.Context-">setup</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/mapreduce/Mapper.html" title="class in org.apache.hadoop.mapreduce">Mapper</a>&lt;<a href="../../../../../../org/apache/hadoop/mapreduce/lib/chain/ChainMapper.html" title="type parameter in ChainMapper">KEYIN</a>,<a href="../../../../../../org/apache/hadoop/mapreduce/lib/chain/ChainMapper.html" title="type parameter in ChainMapper">VALUEIN</a>,<a href="../../../../../../org/apache/hadoop/mapreduce/lib/chain/ChainMapper.html" title="type parameter in ChainMapper">KEYOUT</a>,<a href="../../../../../../org/apache/hadoop/mapreduce/lib/chain/ChainMapper.html" title="type parameter in ChainMapper">VALUEOUT</a>&gt;</code></dd>
</dl>
</li>
</ul>
<a name="run-org.apache.hadoop.mapreduce.Mapper.Context-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>run</h4>
<pre>public&nbsp;void&nbsp;run(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/mapreduce/Mapper.html#run-org.apache.hadoop.mapreduce.Mapper.Context-">Mapper</a></code></span></div>
<div class="block">Expert users can override this method for more complete control over the
execution of the Mapper.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/mapreduce/Mapper.html#run-org.apache.hadoop.mapreduce.Mapper.Context-">run</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/mapreduce/Mapper.html" title="class in org.apache.hadoop.mapreduce">Mapper</a>&lt;<a href="../../../../../../org/apache/hadoop/mapreduce/lib/chain/ChainMapper.html" title="type parameter in ChainMapper">KEYIN</a>,<a href="../../../../../../org/apache/hadoop/mapreduce/lib/chain/ChainMapper.html" title="type parameter in ChainMapper">VALUEIN</a>,<a href="../../../../../../org/apache/hadoop/mapreduce/lib/chain/ChainMapper.html" title="type parameter in ChainMapper">KEYOUT</a>,<a href="../../../../../../org/apache/hadoop/mapreduce/lib/chain/ChainMapper.html" title="type parameter in ChainMapper">VALUEOUT</a>&gt;</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ChainMapper.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../../org/apache/hadoop/mapreduce/lib/chain/ChainReducer.html" title="class in org.apache.hadoop.mapreduce.lib.chain"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/hadoop/mapreduce/lib/chain/ChainMapper.html" target="_top">Frames</a></li>
<li><a href="ChainMapper.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2021 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>