<!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_161-google-v7) on Thu Oct 18 16:14:35 PDT 2018 -->
<title>BigtableIO (Apache Beam 2.8.0-SNAPSHOT)</title>
<meta name="date" content="2018-10-18">
<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="BigtableIO (Apache Beam 2.8.0-SNAPSHOT)";
        }
    }
    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/gcp/bigtable/BigtableIO.Read.html" title="class in org.apache.beam.sdk.io.gcp.bigtable"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../index.html?org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.html" target="_top">Frames</a></li>
<li><a href="BigtableIO.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.gcp.bigtable</div>
<h2 title="Class BigtableIO" class="title">Class BigtableIO</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.beam.sdk.io.gcp.bigtable.BigtableIO</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">BigtableIO</span>
extends java.lang.Object</pre>
<div class="block"><a href="../../../../../../../org/apache/beam/sdk/transforms/PTransform.html" title="class in org.apache.beam.sdk.transforms"><code>Transforms</code></a> for reading from and writing to Google Cloud Bigtable.

 <p>For more information about Cloud Bigtable, see the online documentation at <a
 href="https://cloud.google.com/bigtable/">Google Cloud Bigtable</a>.

 <h3>Reading from Cloud Bigtable</h3>

 <p>The Bigtable source returns a set of rows from a single table, returning a <code>PCollection&lt;Row&gt;</code>.

 <p>To configure a Cloud Bigtable source, you must supply a table id, a project id, an instance id
 and optionally a <code>BigtableOptions</code> to provide more specific connection configuration. By
 default, <a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Read.html" title="class in org.apache.beam.sdk.io.gcp.bigtable"><code>BigtableIO.Read</code></a> will read all rows in the table. The row ranges to be read can
 optionally be restricted using <a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Read.html#withKeyRanges-java.util.List-"><code>BigtableIO.Read.withKeyRanges(java.util.List&lt;org.apache.beam.sdk.io.range.ByteKeyRange&gt;)</code></a>, and a <code>RowFilter</code> can
 be specified using <a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Read.html#withRowFilter-com.google.bigtable.v2.RowFilter-"><code>BigtableIO.Read.withRowFilter(com.google.bigtable.v2.RowFilter)</code></a>. For example:

 <pre><code>
 Pipeline p = ...;

 // Scan the entire table.
 p.apply("read",
     BigtableIO.read()
         .withProjectId(projectId)
         .withInstanceId(instanceId)
         .withTableId("table"));

 // Scan a prefix of the table.
 ByteKeyRange keyRange = ...;
 p.apply("read",
     BigtableIO.read()
         .withProjectId(projectId)
         .withInstanceId(instanceId)
         .withTableId("table")
         .withKeyRange(keyRange));

 // Scan a subset of rows that match the specified row filter.
 p.apply("filtered read",
     BigtableIO.read()
         .withProjectId(projectId)
         .withInstanceId(instanceId)
         .withTableId("table")
         .withRowFilter(filter));
 </code></pre>

 <h3>Writing to Cloud Bigtable</h3>

 <p>The Bigtable sink executes a set of row mutations 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&lt;KV&lt;ByteString, Iterable&lt;Mutation&gt;&gt;&gt;</code></a>, where the
 <code>ByteString</code> is the key of the row being mutated, and each <code>Mutation</code> represents an
 idempotent transformation to that row.

 <p>To configure a Cloud Bigtable sink, you must supply a table id, a project id, an instance id
 and optionally a configuration function for <code>BigtableOptions</code> to provide more specific
 connection configuration, for example:

 <pre><code>
 PCollection&lt;KV&lt;ByteString, Iterable&lt;Mutation&gt;&gt;&gt; data = ...;

 data.apply("write",
     BigtableIO.write()
         .withProjectId("project")
         .withInstanceId("instance")
         .withTableId("table"));
 </code></pre>

 <h3>Experimental</h3>

 <p>This connector for Cloud Bigtable is considered experimental and may break or receive
 backwards-incompatible changes in future versions of the Apache Beam SDK. Cloud Bigtable is in
 Beta, and thus it may introduce breaking changes in future revisions of its service or APIs.

 <h3>Permissions</h3>

 <p>Permission requirements depend on the <a href="../../../../../../../org/apache/beam/sdk/PipelineRunner.html" title="class in org.apache.beam.sdk"><code>PipelineRunner</code></a> that is used to execute the
 pipeline. Please refer to the documentation of corresponding <a href="../../../../../../../org/apache/beam/sdk/PipelineRunner.html" title="class in org.apache.beam.sdk"><code>PipelineRunners</code></a> for more details.</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 class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Read.html" title="class in org.apache.beam.sdk.io.gcp.bigtable">BigtableIO.Read</a></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 reads from Google Cloud Bigtable.</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/gcp/bigtable/BigtableIO.Write.html" title="class in org.apache.beam.sdk.io.gcp.bigtable">BigtableIO.Write</a></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 Google Cloud Bigtable.</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 <a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Read.html" title="class in org.apache.beam.sdk.io.gcp.bigtable">BigtableIO.Read</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.html#read--">read</a></span>()</code>
<div class="block">Creates an uninitialized <a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Read.html" title="class in org.apache.beam.sdk.io.gcp.bigtable"><code>BigtableIO.Read</code></a>.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static <a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Write.html" title="class in org.apache.beam.sdk.io.gcp.bigtable">BigtableIO.Write</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.html#write--">write</a></span>()</code>
<div class="block">Creates an uninitialized <a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Write.html" title="class in org.apache.beam.sdk.io.gcp.bigtable"><code>BigtableIO.Write</code></a>.</div>
</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><a href="../../../../../../../org/apache/beam/sdk/annotations/Experimental.html" title="annotation in org.apache.beam.sdk.annotations">@Experimental</a>
public static&nbsp;<a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Read.html" title="class in org.apache.beam.sdk.io.gcp.bigtable">BigtableIO.Read</a>&nbsp;read()</pre>
<div class="block">Creates an uninitialized <a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Read.html" title="class in org.apache.beam.sdk.io.gcp.bigtable"><code>BigtableIO.Read</code></a>. Before use, the <code>Read</code> must be
 initialized with a <a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Read.html#withInstanceId-org.apache.beam.sdk.options.ValueProvider-"><code>BigtableIO.Read.withInstanceId(org.apache.beam.sdk.options.ValueProvider&lt;java.lang.String&gt;)</code></a> and <a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Read.html#withProjectId-org.apache.beam.sdk.options.ValueProvider-"><code>BigtableIO.Read.withProjectId(org.apache.beam.sdk.options.ValueProvider&lt;java.lang.String&gt;)</code></a> that specifies the source Cloud Bigtable instance, and a <a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Read.html#withTableId-org.apache.beam.sdk.options.ValueProvider-"><code>BigtableIO.Read.withTableId(org.apache.beam.sdk.options.ValueProvider&lt;java.lang.String&gt;)</code></a> that specifies which table to read. A <code>RowFilter</code> may also
 optionally be specified using <a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Read.html#withRowFilter-com.google.bigtable.v2.RowFilter-"><code>BigtableIO.Read.withRowFilter(RowFilter)</code></a>.</div>
</li>
</ul>
<a name="write--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>write</h4>
<pre><a href="../../../../../../../org/apache/beam/sdk/annotations/Experimental.html" title="annotation in org.apache.beam.sdk.annotations">@Experimental</a>
public static&nbsp;<a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Write.html" title="class in org.apache.beam.sdk.io.gcp.bigtable">BigtableIO.Write</a>&nbsp;write()</pre>
<div class="block">Creates an uninitialized <a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Write.html" title="class in org.apache.beam.sdk.io.gcp.bigtable"><code>BigtableIO.Write</code></a>. Before use, the <code>Write</code> must be
 initialized with a <a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Write.html#withProjectId-org.apache.beam.sdk.options.ValueProvider-"><code>BigtableIO.Write.withProjectId(org.apache.beam.sdk.options.ValueProvider&lt;java.lang.String&gt;)</code></a> and <a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Write.html#withInstanceId-org.apache.beam.sdk.options.ValueProvider-"><code>BigtableIO.Write.withInstanceId(org.apache.beam.sdk.options.ValueProvider&lt;java.lang.String&gt;)</code></a> that specifies the destination Cloud Bigtable instance, and a
 <a href="../../../../../../../org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.Write.html#withTableId-org.apache.beam.sdk.options.ValueProvider-"><code>BigtableIO.Write.withTableId(org.apache.beam.sdk.options.ValueProvider&lt;java.lang.String&gt;)</code></a> that specifies which table to write.</div>
</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/gcp/bigtable/BigtableIO.Read.html" title="class in org.apache.beam.sdk.io.gcp.bigtable"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../index.html?org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.html" target="_top">Frames</a></li>
<li><a href="BigtableIO.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>
