blob: f362b7c5600a73b3e4738971112ae370da32e889 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>AdvancedScanResultConsumer (Apache HBase 4.0.0-alpha-1-SNAPSHOT API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.hadoop.hbase.client, interface: AdvancedScanResultConsumer">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">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#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<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="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.hadoop.hbase.client</a></div>
<h1 title="Interface AdvancedScanResultConsumer" class="title">Interface AdvancedScanResultConsumer</h1>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Superinterfaces:</dt>
<dd><code><a href="ScanResultConsumerBase.html" title="interface in org.apache.hadoop.hbase.client">ScanResultConsumerBase</a></code></dd>
</dl>
<dl class="notes">
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="AsyncTableResultScanner.html" title="class in org.apache.hadoop.hbase.client">AsyncTableResultScanner</a></code>, <code><a href="../ClientMetaTableAccessor.MetaTableScanResultConsumer.html" title="class in org.apache.hadoop.hbase">ClientMetaTableAccessor.MetaTableScanResultConsumer</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="annotations">@Public
</span><span class="modifiers">public interface </span><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html#line-40">AdvancedScanResultConsumer</a></span><span class="extends-implements">
extends <a href="ScanResultConsumerBase.html" title="interface in org.apache.hadoop.hbase.client">ScanResultConsumerBase</a></span></div>
<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="#onNext(org.apache.hadoop.hbase.client.Result%5B%5D,org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController)"><code>onNext(Result[], ScanController)</code></a>. <a href="ScanResultConsumerBase.html#onComplete()"><code>ScanResultConsumerBase.onComplete()</code></a> means the scan is finished, and
<a href="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="#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="#onNext(org.apache.hadoop.hbase.client.Result%5B%5D,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="#onNext(org.apache.hadoop.hbase.client.Result%5B%5D,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 class="notes">
<dt>Since:</dt>
<dd>2.0.0</dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="caption"><span>Nested Classes</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Interface</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static interface&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="AdvancedScanResultConsumer.ScanController.html" class="type-name-link" title="interface in org.apache.hadoop.hbase.client">AdvancedScanResultConsumer.ScanController</a></code></div>
<div class="col-last even-row-color">
<div class="block">Used to suspend or stop a scan, or get a scan cursor if available.</div>
</div>
<div class="col-first odd-row-color"><code>static interface&nbsp;</code></div>
<div class="col-second odd-row-color"><code><a href="AdvancedScanResultConsumer.ScanResumer.html" class="type-name-link" title="interface in org.apache.hadoop.hbase.client">AdvancedScanResultConsumer.ScanResumer</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Used to resume a scan.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab5" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab5', 3)" class="table-tab">Default Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#onHeartbeat(org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController)" class="member-name-link">onHeartbeat</a><wbr>(<a href="AdvancedScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">AdvancedScanResultConsumer.ScanController</a>&nbsp;controller)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
<div class="block">Indicate that there is a heartbeat message but we have not cumulated enough cells to call
<a href="#onNext(org.apache.hadoop.hbase.client.Result%5B%5D,org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController)"><code>onNext(Result[], ScanController)</code></a>.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#onNext(org.apache.hadoop.hbase.client.Result%5B%5D,org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController)" class="member-name-link">onNext</a><wbr>(<a href="Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>[]&nbsp;results,
<a href="AdvancedScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">AdvancedScanResultConsumer.ScanController</a>&nbsp;controller)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Indicate that we have receive some data.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.hadoop.hbase.client.ScanResultConsumerBase">Methods inherited from interface&nbsp;org.apache.hadoop.hbase.client.<a href="ScanResultConsumerBase.html" title="interface in org.apache.hadoop.hbase.client">ScanResultConsumerBase</a></h3>
<code><a href="ScanResultConsumerBase.html#onComplete()">onComplete</a>, <a href="ScanResultConsumerBase.html#onError(java.lang.Throwable)">onError</a>, <a href="ScanResultConsumerBase.html#onScanMetricsCreated(org.apache.hadoop.hbase.client.metrics.ScanMetrics)">onScanMetricsCreated</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="onNext(org.apache.hadoop.hbase.client.Result[],org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController)">
<h3>onNext</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html#line-100">onNext</a></span><wbr><span class="parameters">(<a href="Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>[]&nbsp;results,
<a href="AdvancedScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">AdvancedScanResultConsumer.ScanController</a>&nbsp;controller)</span></div>
<div class="block">Indicate that we have receive some data.</div>
<dl class="notes">
<dt>Parameters:</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>
</section>
</li>
<li>
<section class="detail" id="onHeartbeat(org.apache.hadoop.hbase.client.AdvancedScanResultConsumer.ScanController)">
<h3>onHeartbeat</h3>
<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html#line-119">onHeartbeat</a></span><wbr><span class="parameters">(<a href="AdvancedScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">AdvancedScanResultConsumer.ScanController</a>&nbsp;controller)</span></div>
<div class="block">Indicate that there is a heartbeat message but we have not cumulated enough cells to call
<a href="#onNext(org.apache.hadoop.hbase.client.Result%5B%5D,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="#onNext(org.apache.hadoop.hbase.client.Result%5B%5D,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 class="notes">
<dt>Parameters:</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>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2007&#x2013;2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>