blob: 2013c73df4b317672bbdb1eaee0a4b9274675b94 [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:15:28 GMT 2021 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>INativeComparable (Apache Hadoop MapReduce NativeTask 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="INativeComparable (Apache Hadoop MapReduce NativeTask 3.3.1 API)";
}
}
catch(err) {
}
//-->
</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/INativeComparable.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><a href="../../../../../org/apache/hadoop/mapred/nativetask/ICombineHandler.html" title="interface in org.apache.hadoop.mapred.nativetask"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/hadoop/mapred/nativetask/INativeHandler.html" title="interface in org.apache.hadoop.mapred.nativetask"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/mapred/nativetask/INativeComparable.html" target="_top">Frames</a></li>
<li><a href="INativeComparable.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>Constr&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li>Method</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.mapred.nativetask</div>
<h2 title="Interface INativeComparable" class="title">Interface INativeComparable</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../../org/apache/hadoop/mapred/nativetask/serde/BoolWritableSerializer.html" title="class in org.apache.hadoop.mapred.nativetask.serde">BoolWritableSerializer</a>, <a href="../../../../../org/apache/hadoop/mapred/nativetask/serde/BytesWritableSerializer.html" title="class in org.apache.hadoop.mapred.nativetask.serde">BytesWritableSerializer</a>, <a href="../../../../../org/apache/hadoop/mapred/nativetask/serde/ByteWritableSerializer.html" title="class in org.apache.hadoop.mapred.nativetask.serde">ByteWritableSerializer</a>, <a href="../../../../../org/apache/hadoop/mapred/nativetask/serde/DoubleWritableSerializer.html" title="class in org.apache.hadoop.mapred.nativetask.serde">DoubleWritableSerializer</a>, <a href="../../../../../org/apache/hadoop/mapred/nativetask/serde/FloatWritableSerializer.html" title="class in org.apache.hadoop.mapred.nativetask.serde">FloatWritableSerializer</a>, <a href="../../../../../org/apache/hadoop/mapred/nativetask/serde/IntWritableSerializer.html" title="class in org.apache.hadoop.mapred.nativetask.serde">IntWritableSerializer</a>, <a href="../../../../../org/apache/hadoop/mapred/nativetask/serde/LongWritableSerializer.html" title="class in org.apache.hadoop.mapred.nativetask.serde">LongWritableSerializer</a>, <a href="../../../../../org/apache/hadoop/mapred/nativetask/serde/NullWritableSerializer.html" title="class in org.apache.hadoop.mapred.nativetask.serde">NullWritableSerializer</a>, <a href="../../../../../org/apache/hadoop/mapred/nativetask/serde/TextSerializer.html" title="class in org.apache.hadoop.mapred.nativetask.serde">TextSerializer</a>, <a href="../../../../../org/apache/hadoop/mapred/nativetask/serde/VIntWritableSerializer.html" title="class in org.apache.hadoop.mapred.nativetask.serde">VIntWritableSerializer</a>, <a href="../../../../../org/apache/hadoop/mapred/nativetask/serde/VLongWritableSerializer.html" title="class in org.apache.hadoop.mapred.nativetask.serde">VLongWritableSerializer</a></dd>
</dl>
<hr>
<br>
<pre>@InterfaceAudience.Public
@InterfaceStability.Evolving
public interface <span class="typeNameLabel">INativeComparable</span></pre>
<div class="block">Any key type that is comparable at native side must implement this interface.
A native comparator function should have the ComparatorPtr type:
<code>
typedef int (*ComparatorPtr)(const char * src, uint32_t srcLength,
const char * dest, uint32_t destLength);
</code>
Keys are in serialized format at native side. The function has passed in
the keys' locations and lengths such that we can compare them in the same
logic as their Java comparator.
For example, a HiveKey serialized as an int field (containing the length of
raw bytes) + raw bytes.
When comparing two HiveKeys, we first read the length field and then
compare the raw bytes by invoking the BytesComparator provided by our library.
We pass the location and length of raw bytes into BytesComparator.
<code>
int HivePlatform::HiveKeyComparator(const char * src, uint32_t srcLength,
const char * dest, uint32_t destLength) {
uint32_t sl = bswap(*(uint32_t*)src);
uint32_t dl = bswap(*(uint32_t*)dest);
return NativeObjectFactory::BytesComparator(src + 4, sl, dest + 4, dl);
}
</code></div>
</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/INativeComparable.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><a href="../../../../../org/apache/hadoop/mapred/nativetask/ICombineHandler.html" title="interface in org.apache.hadoop.mapred.nativetask"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/hadoop/mapred/nativetask/INativeHandler.html" title="interface in org.apache.hadoop.mapred.nativetask"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/mapred/nativetask/INativeComparable.html" target="_top">Frames</a></li>
<li><a href="INativeComparable.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>Constr&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2008&#x2013;2021 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>