blob: 48ba477c98a04e5e7de6d9f4d25f1db089d6f50c [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>BatchSizePredictor (Drill : 1.20.3 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="BatchSizePredictor (Drill : 1.20.3 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract 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/BatchSizePredictor.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/drill/exec/physical/impl/join/BatchSizePredictor.Factory.html" title="interface in org.apache.drill.exec.physical.impl.join"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../index.html?org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html" target="_top">Frames</a></li>
<li><a href="BatchSizePredictor.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.drill.exec.physical.impl.join</div>
<h2 title="Interface BatchSizePredictor" class="title">Interface BatchSizePredictor</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/drill/exec/physical/impl/join/BatchSizePredictorImpl.html" title="class in org.apache.drill.exec.physical.impl.join">BatchSizePredictorImpl</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">BatchSizePredictor</span></pre>
<div class="block">This class predicts the sizes of batches given an input batch.
<h4>Invariants</h4>
<ul>
<li>The <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html" title="interface in org.apache.drill.exec.physical.impl.join"><code>BatchSizePredictor</code></a> assumes that a <a href="../../../../../../../org/apache/drill/exec/record/RecordBatch.html" title="interface in org.apache.drill.exec.record"><code>RecordBatch</code></a> is in a state where it can return a valid record count.</li>
</ul></div>
</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/drill/exec/physical/impl/join/BatchSizePredictor.Factory.html" title="interface in org.apache.drill.exec.physical.impl.join">BatchSizePredictor.Factory</a></span></code>
<div class="block">A factory for creating <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html" title="interface in org.apache.drill.exec.physical.impl.join"><code>BatchSizePredictor</code></a>s.</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></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>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#getBatchSize--">getBatchSize</a></span>()</code>
<div class="block">Gets the batchSize computed in the call to <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#updateStats--"><code>updateStats()</code></a>.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#getNumRecords--">getNumRecords</a></span>()</code>
<div class="block">Gets the number of records computed in the call to <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#updateStats--"><code>updateStats()</code></a>.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#hadDataLastTime--">hadDataLastTime</a></span>()</code>
<div class="block">True if the input batch had records in the last call to <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#updateStats--"><code>updateStats()</code></a>.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#predictBatchSize-int-boolean-">predictBatchSize</a></span>(int&nbsp;desiredNumRecords,
boolean&nbsp;reserveHash)</code>
<div class="block">Predicts the size of a batch using the current collected stats.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#updateStats--">updateStats</a></span>()</code>
<div class="block">This method can be called multiple times to collect stats about the latest data in the provided record batch.</div>
</td>
</tr>
</table>
</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="getBatchSize--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBatchSize</h4>
<pre>long&nbsp;getBatchSize()</pre>
<div class="block">Gets the batchSize computed in the call to <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#updateStats--"><code>updateStats()</code></a>. Returns 0 if <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#hadDataLastTime--"><code>hadDataLastTime()</code></a> is false.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Gets the batchSize computed in the call to <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#updateStats--"><code>updateStats()</code></a>. Returns 0 if <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#hadDataLastTime--"><code>hadDataLastTime()</code></a> is false.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#updateStats--"><code>updateStats()</code></a> was never called.</dd>
</dl>
</li>
</ul>
<a name="getNumRecords--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNumRecords</h4>
<pre>int&nbsp;getNumRecords()</pre>
<div class="block">Gets the number of records computed in the call to <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#updateStats--"><code>updateStats()</code></a>. Returns 0 if <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#hadDataLastTime--"><code>hadDataLastTime()</code></a> is false.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Gets the number of records computed in the call to <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#updateStats--"><code>updateStats()</code></a>. Returns 0 if <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#hadDataLastTime--"><code>hadDataLastTime()</code></a> is false.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#updateStats--"><code>updateStats()</code></a> was never called.</dd>
</dl>
</li>
</ul>
<a name="hadDataLastTime--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hadDataLastTime</h4>
<pre>boolean&nbsp;hadDataLastTime()</pre>
<div class="block">True if the input batch had records in the last call to <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#updateStats--"><code>updateStats()</code></a>. False otherwise.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>True if the input batch had records in the last call to <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#updateStats--"><code>updateStats()</code></a>. False otherwise.</dd>
</dl>
</li>
</ul>
<a name="updateStats--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>updateStats</h4>
<pre>void&nbsp;updateStats()</pre>
<div class="block">This method can be called multiple times to collect stats about the latest data in the provided record batch. These
stats are used to predict batch sizes. If the batch currently has no data, this method is a noop. This method must be
called at least once before <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#predictBatchSize-int-boolean-"><code>predictBatchSize(int, boolean)</code></a>.</div>
</li>
</ul>
<a name="predictBatchSize-int-boolean-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>predictBatchSize</h4>
<pre>long&nbsp;predictBatchSize(int&nbsp;desiredNumRecords,
boolean&nbsp;reserveHash)</pre>
<div class="block">Predicts the size of a batch using the current collected stats.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>desiredNumRecords</code> - The number of records contained in the batch whose size we want to predict.</dd>
<dd><code>reserveHash</code> - Whether or not to include a column containing hash values.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The size of the predicted batch.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#hadDataLastTime--"><code>hadDataLastTime()</code></a> is false or <a href="../../../../../../../org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html#updateStats--"><code>updateStats()</code></a> was not called.</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/BatchSizePredictor.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/drill/exec/physical/impl/join/BatchSizePredictor.Factory.html" title="interface in org.apache.drill.exec.physical.impl.join"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../index.html?org/apache/drill/exec/physical/impl/join/BatchSizePredictor.html" target="_top">Frames</a></li>
<li><a href="BatchSizePredictor.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; 1970 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>