blob: 37116c7149f37151810069740242acf6fb4a454a [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 -->
<title>KuduIO (Apache Beam 2.47.0)</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="KuduIO (Apache Beam 2.47.0)";
}
}
catch(err) {
}
//-->
var methods = {"i0":9,"i1":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static 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="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/beam/sdk/io/kudu/KuduIO.FormatFunction.html" title="interface in org.apache.beam.sdk.io.kudu"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/beam/sdk/io/kudu/KuduIO.html" target="_top">Frames</a></li>
<li><a href="KuduIO.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.beam.sdk.io.kudu</div>
<h2 title="Class KuduIO" class="title">Class KuduIO</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.beam.sdk.io.kudu.KuduIO</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre><a href="../../../../../../org/apache/beam/sdk/annotations/Experimental.html" title="annotation in org.apache.beam.sdk.annotations">@Experimental</a>(<a href="../../../../../../org/apache/beam/sdk/annotations/Experimental.html#value--">value</a>=<a href="../../../../../../org/apache/beam/sdk/annotations/Experimental.Kind.html#SOURCE_SINK">SOURCE_SINK</a>)
public class <span class="typeNameLabel">KuduIO</span>
extends java.lang.Object</pre>
<div class="block">A bounded source and sink for Kudu.
<p>For more information, see the online documentation at <a
href="https://kudu.apache.org/">Kudu</a>.
<h3>Reading from Kudu</h3>
<p><code>KuduIO</code> provides a source to read and returns a bounded collection of entities as
<code>PCollection&lt;T&gt;</code>. An entity is built by parsing a Kudu <code>RowResult</code> using the provided
<a href="../../../../../../org/apache/beam/sdk/transforms/SerializableFunction.html" title="interface in org.apache.beam.sdk.transforms"><code>SerializableFunction</code></a>.
<p>The following example illustrates various options for configuring the IO:
<pre><code>
pipeline.apply(
KuduIO.&lt;String&gt;read()
.withMasterAddresses("kudu1:8051,kudu2:8051,kudu3:8051")
.withTable("table")
.withParseFn(
(SerializableFunction&lt;RowResult, String&gt;) input -&gt; input.getString(COL_NAME))
.withCoder(StringUtf8Coder.of()));
// above options illustrate a typical minimum set, returns PCollection&lt;String&gt;
</code></pre>
<p><code>withCoder(...)</code> may be omitted if it can be inferred from the @{CoderRegistry}.
However, when using a Lambda Expression or an anonymous inner class to define the function, type
erasure will prohibit this. In such cases you are required to explicitly set the coder as in the
above example.
<p>Optionally, you can provide <code>withPredicates(...)</code> to apply a query to filter rows from
the kudu table.
<p>Optionally, you can provide <code>withProjectedColumns(...)</code> to limit the columns returned
from the Kudu scan to improve performance. The columns required in the <code>ParseFn</code> must be
declared in the projected columns.
<p>Optionally, you can provide <code>withBatchSize(...)</code> to set the number of bytes returned
from the Kudu scanner in each batch.
<p>Optionally, you can provide <code>withFaultTolerent(...)</code> to enforce the read scan to resume
a scan on another tablet server if the current server fails.
<h3>Writing to Kudu</h3>
<p>The Kudu sink executes a set of operations on a single table. It takes as input a <a href="../../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a> and a <a href="../../../../../../org/apache/beam/sdk/io/kudu/KuduIO.FormatFunction.html" title="interface in org.apache.beam.sdk.io.kudu"><code>KuduIO.FormatFunction</code></a> which is responsible for converting the
input into an idempotent transformation on a row.
<p>To configure a Kudu sink, you must supply the Kudu master addresses, the table name and a
<a href="../../../../../../org/apache/beam/sdk/io/kudu/KuduIO.FormatFunction.html" title="interface in org.apache.beam.sdk.io.kudu"><code>KuduIO.FormatFunction</code></a> to convert the input records, for example:
<pre><code>
PCollection&lt;MyType&gt; data = ...;
FormatFunction&lt;MyType&gt; fn = ...;
data.apply("write",
KuduIO.write()
.withMasterAddresses("kudu1:8051,kudu2:8051,kudu3:8051")
.withTable("table")
.withFormatFn(fn));
</code></pre>
<h3>Experimental</h3>
<code>KuduIO</code> does not support authentication in this release.</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">Class 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/beam/sdk/io/kudu/KuduIO.FormatFunction.html" title="interface in org.apache.beam.sdk.io.kudu">KuduIO.FormatFunction</a>&lt;<a href="../../../../../../org/apache/beam/sdk/io/kudu/KuduIO.FormatFunction.html" title="type parameter in KuduIO.FormatFunction">T</a>&gt;</span></code>
<div class="block">An interface used by the KuduIO Write to convert an input record into an Operation to apply as
a mutation in Kudu.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/io/kudu/KuduIO.Read.html" title="class in org.apache.beam.sdk.io.kudu">KuduIO.Read</a>&lt;<a href="../../../../../../org/apache/beam/sdk/io/kudu/KuduIO.Read.html" title="type parameter in KuduIO.Read">T</a>&gt;</span></code>
<div class="block">Implementation of <a href="../../../../../../org/apache/beam/sdk/io/kudu/KuduIO.html#read--"><code>read()</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/io/kudu/KuduIO.Write.html" title="class in org.apache.beam.sdk.io.kudu">KuduIO.Write</a>&lt;<a href="../../../../../../org/apache/beam/sdk/io/kudu/KuduIO.Write.html" title="type parameter in KuduIO.Write">T</a>&gt;</span></code>
<div class="block">A <a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html" title="class in org.apache.beam.sdk.transforms"><code>PTransform</code></a> that writes to Kudu.</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="t1" class="tableTab"><span><a href="javascript:show(1);">Static 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 &lt;T&gt;&nbsp;<a href="../../../../../../org/apache/beam/sdk/io/kudu/KuduIO.Read.html" title="class in org.apache.beam.sdk.io.kudu">KuduIO.Read</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/io/kudu/KuduIO.html#read--">read</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../../../org/apache/beam/sdk/io/kudu/KuduIO.Write.html" title="class in org.apache.beam.sdk.io.kudu">KuduIO.Write</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/io/kudu/KuduIO.html#write--">write</a></span>()</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</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="read--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>read</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../../org/apache/beam/sdk/io/kudu/KuduIO.Read.html" title="class in org.apache.beam.sdk.io.kudu">KuduIO.Read</a>&lt;T&gt;&nbsp;read()</pre>
</li>
</ul>
<a name="write--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>write</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../../org/apache/beam/sdk/io/kudu/KuduIO.Write.html" title="class in org.apache.beam.sdk.io.kudu">KuduIO.Write</a>&lt;T&gt;&nbsp;write()</pre>
</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="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/beam/sdk/io/kudu/KuduIO.FormatFunction.html" title="interface in org.apache.beam.sdk.io.kudu"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/beam/sdk/io/kudu/KuduIO.html" target="_top">Frames</a></li>
<li><a href="KuduIO.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 ======= -->
</body>
</html>