blob: 343f4aab7607cccead85420b2c72807266f314a9 [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 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>AdvancedScanResultConsumer (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)</title>
<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="AdvancedScanResultConsumer (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":18,"i1":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],16:["t5","Default 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/AdvancedScanResultConsumer.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/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html" target="_top">Frames</a></li>
<li><a href="AdvancedScanResultConsumer.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><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&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>Constr&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.hbase.client</div>
<h2 title="Interface AdvancedScanResultConsumer" class="title">Interface AdvancedScanResultConsumer</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><a href="../../../../../org/apache/hadoop/hbase/client/ScanResultConsumerBase.html" title="interface in org.apache.hadoop.hbase.client">ScanResultConsumerBase</a></dd>
</dl>
<hr>
<br>
<pre>@InterfaceAudience.Public
public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html#line.42">AdvancedScanResultConsumer</a>
extends <a href="../../../../../org/apache/hadoop/hbase/client/ScanResultConsumerBase.html" title="interface in org.apache.hadoop.hbase.client">ScanResultConsumerBase</a></pre>
<div class="block">This is the low level API for asynchronous scan.
<p>
All results that match the given scan object will be passed to this class by calling
<a href="../../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html#onNext-org.apache.hadoop.hbase.client.Result:A-org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController-"><code>onNext(Result[], ScanController)</code></a>. <a href="../../../../../org/apache/hadoop/hbase/client/ScanResultConsumerBase.html#onComplete--"><code>ScanResultConsumerBase.onComplete()</code></a> means the scan is finished, and
<a href="../../../../../org/apache/hadoop/hbase/client/ScanResultConsumerBase.html#onError-java.lang.Throwable-"><code>ScanResultConsumerBase.onError(Throwable)</code></a> means we hit an unrecoverable error and the scan is terminated.
<a href="../../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html#onHeartbeat-org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController-"><code>onHeartbeat(ScanController)</code></a> means the RS is still working but we can not get a valid
result to call <a href="../../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html#onNext-org.apache.hadoop.hbase.client.Result:A-org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController-"><code>onNext(Result[], ScanController)</code></a>. This is usually because the matched
results are too sparse, for example, a filter which almost filters out everything is specified.
<p>
Notice that, all the methods here will be called directly in the thread which we send request to
HBase service. So if you want the asynchronous scanner fetch data from HBase in background while
you process the returned data, you need to move the processing work to another thread to make the
<a href="../../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html#onNext-org.apache.hadoop.hbase.client.Result:A-org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController-"><code>onNext(Result[], ScanController)</code></a> call return immediately. And please do NOT do any time
consuming tasks in these methods unless you know what you are doing.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.0.0</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Interface and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static interface&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">AdvancedScanResultConsumer.ScanController</a></span></code>
<div class="block">Used to suspend or stop a scan, or get a scan cursor if available.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static interface&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.ScanResumer.html" title="interface in org.apache.hadoop.hbase.client">AdvancedScanResultConsumer.ScanResumer</a></span></code>
<div class="block">Used to resume a scan.</div>
</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="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t5" class="tableTab"><span><a href="javascript:show(16);">Default 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>default void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html#onHeartbeat-org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController-">onHeartbeat</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">AdvancedScanResultConsumer.ScanController</a>&nbsp;controller)</code>
<div class="block">Indicate that there is a heartbeat message but we have not cumulated enough cells to call
<a href="../../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html#onNext-org.apache.hadoop.hbase.client.Result:A-org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController-"><code>onNext(Result[], ScanController)</code></a>.</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/hbase/client/AdvancedScanResultConsumer.html#onNext-org.apache.hadoop.hbase.client.Result:A-org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController-">onNext</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>[]&nbsp;results,
<a href="../../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">AdvancedScanResultConsumer.ScanController</a>&nbsp;controller)</code>
<div class="block">Indicate that we have receive some data.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.client.ScanResultConsumerBase">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScanResultConsumerBase.html" title="interface in org.apache.hadoop.hbase.client">ScanResultConsumerBase</a></h3>
<code><a href="../../../../../org/apache/hadoop/hbase/client/ScanResultConsumerBase.html#onComplete--">onComplete</a>, <a href="../../../../../org/apache/hadoop/hbase/client/ScanResultConsumerBase.html#onError-java.lang.Throwable-">onError</a>, <a href="../../../../../org/apache/hadoop/hbase/client/ScanResultConsumerBase.html#onScanMetricsCreated-org.apache.hadoop.hbase.client.metrics.ScanMetrics-">onScanMetricsCreated</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="onNext-org.apache.hadoop.hbase.client.Result:A-org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onNext</h4>
<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html#line.101">onNext</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>[]&nbsp;results,
<a href="../../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">AdvancedScanResultConsumer.ScanController</a>&nbsp;controller)</pre>
<div class="block">Indicate that we have receive some data.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>results</code> - the data fetched from HBase service.</dd>
<dd><code>controller</code> - used to suspend or terminate the scan. Notice that the <code>controller</code>
instance is only valid within scope of onNext method. You can only call its method in
onNext, do NOT store it and call it later outside onNext.</dd>
</dl>
</li>
</ul>
<a name="onHeartbeat-org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>onHeartbeat</h4>
<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html#line.119">onHeartbeat</a>(<a href="../../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">AdvancedScanResultConsumer.ScanController</a>&nbsp;controller)</pre>
<div class="block">Indicate that there is a heartbeat message but we have not cumulated enough cells to call
<a href="../../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html#onNext-org.apache.hadoop.hbase.client.Result:A-org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController-"><code>onNext(Result[], ScanController)</code></a>.
<p>
Note that this method will always be called when RS returns something to us but we do not have
enough cells to call <a href="../../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html#onNext-org.apache.hadoop.hbase.client.Result:A-org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController-"><code>onNext(Result[], ScanController)</code></a>. Sometimes it may not be a
'heartbeat' message for RS, for example, we have a large row with many cells and size limit is
exceeded before sending all the cells for this row. For RS it does send some data to us and the
time limit has not been reached, but we can not return the data to client so here we call this
method to tell client we have already received something.
<p>
This method give you a chance to terminate a slow scan operation.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>controller</code> - used to suspend or terminate the scan. Notice that the <code>controller</code>
instance is only valid within the scope of onHeartbeat method. You can only call its
method in onHeartbeat, do NOT store it and call it later outside onHeartbeat.</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/AdvancedScanResultConsumer.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/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html" target="_top">Frames</a></li>
<li><a href="AdvancedScanResultConsumer.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><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&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>Constr&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; 2007&#x2013;2021 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>