<!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:36 PDT 2018 -->
<title>CoGroupByKey (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="CoGroupByKey (Apache Beam 2.8.0-SNAPSHOT)";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":9,"i1":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance 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><a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGbkResultSchema.html" title="class in org.apache.beam.sdk.transforms.join"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/beam/sdk/transforms/join/KeyedPCollectionTuple.html" title="class in org.apache.beam.sdk.transforms.join"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/beam/sdk/transforms/join/CoGroupByKey.html" target="_top">Frames</a></li>
<li><a href="CoGroupByKey.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>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields.inherited.from.class.org.apache.beam.sdk.transforms.PTransform">Field</a>&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.transforms.join</div>
<h2 title="Class CoGroupByKey" class="title">Class CoGroupByKey&lt;K&gt;</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html" title="class in org.apache.beam.sdk.transforms">org.apache.beam.sdk.transforms.PTransform</a>&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/join/KeyedPCollectionTuple.html" title="class in org.apache.beam.sdk.transforms.join">KeyedPCollectionTuple</a>&lt;K&gt;,<a href="../../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values">PCollection</a>&lt;<a href="../../../../../../org/apache/beam/sdk/values/KV.html" title="class in org.apache.beam.sdk.values">KV</a>&lt;K,<a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGbkResult.html" title="class in org.apache.beam.sdk.transforms.join">CoGbkResult</a>&gt;&gt;&gt;</li>
<li>
<ul class="inheritance">
<li>org.apache.beam.sdk.transforms.join.CoGroupByKey&lt;K&gt;</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>K</code> - the type of the keys in the input and output <code>PCollection</code>s</dd>
</dl>
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.io.Serializable, <a href="../../../../../../org/apache/beam/sdk/transforms/display/HasDisplayData.html" title="interface in org.apache.beam.sdk.transforms.display">HasDisplayData</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">CoGroupByKey&lt;K&gt;</span>
extends <a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html" title="class in org.apache.beam.sdk.transforms">PTransform</a>&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/join/KeyedPCollectionTuple.html" title="class in org.apache.beam.sdk.transforms.join">KeyedPCollectionTuple</a>&lt;K&gt;,<a href="../../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values">PCollection</a>&lt;<a href="../../../../../../org/apache/beam/sdk/values/KV.html" title="class in org.apache.beam.sdk.values">KV</a>&lt;K,<a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGbkResult.html" title="class in org.apache.beam.sdk.transforms.join">CoGbkResult</a>&gt;&gt;&gt;</pre>
<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 performs a <a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGroupByKey.html" title="class in org.apache.beam.sdk.transforms.join"><code>CoGroupByKey</code></a> on a tuple of tables. A <a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGroupByKey.html" title="class in org.apache.beam.sdk.transforms.join"><code>CoGroupByKey</code></a> groups results from all tables by like keys into <a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGbkResult.html" title="class in org.apache.beam.sdk.transforms.join"><code>CoGbkResult</code></a>s, from which
 the results for any specific table can be accessed by the <a href="../../../../../../org/apache/beam/sdk/values/TupleTag.html" title="class in org.apache.beam.sdk.values"><code>TupleTag</code></a> supplied with the initial table.

 <p>Example of performing a <a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGroupByKey.html" title="class in org.apache.beam.sdk.transforms.join"><code>CoGroupByKey</code></a> followed by a <a href="../../../../../../org/apache/beam/sdk/transforms/ParDo.html" title="class in org.apache.beam.sdk.transforms"><code>ParDo</code></a> that consumes the
 results:

 <pre><code>
 PCollection&lt;KV&lt;K, V1&gt;&gt; pt1 = ...;
 PCollection&lt;KV&lt;K, V2&gt;&gt; pt2 = ...;

 final TupleTag&lt;V1&gt; t1 = new TupleTag&lt;&gt;();
 final TupleTag&lt;V2&gt; t2 = new TupleTag&lt;&gt;();
 PCollection&lt;KV&lt;K, CoGbkResult&gt;&gt; coGbkResultCollection =
   KeyedPCollectionTuple.of(t1, pt1)
                        .and(t2, pt2)
                        .apply(CoGroupByKey.&lt;K&gt;create());

 PCollection&lt;T&gt; finalResultCollection =
   coGbkResultCollection.apply(ParDo.of(
     new DoFn&lt;KV&lt;K, CoGbkResult&gt;, T&gt;() {
       {@literal @}ProcessElement
       public void processElement(ProcessContext c) {
         KV&lt;K, CoGbkResult&gt; e = c.element();
         Iterable&lt;V1&gt; pt1Vals = e.getValue().getAll(t1);
         V2 pt2Val = e.getValue().getOnly(t2);
          ... Do Something ....
         c.output(...some T...);
       }
     }));
 </code></pre></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../serialized-form.html#org.apache.beam.sdk.transforms.join.CoGroupByKey">Serialized Form</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.beam.sdk.transforms.PTransform">
<!--   -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.beam.sdk.transforms.<a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html" title="class in org.apache.beam.sdk.transforms">PTransform</a></h3>
<code><a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html#name">name</a></code></li>
</ul>
</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="t2" class="tableTab"><span><a href="javascript:show(2);">Instance 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;K&gt;&nbsp;<a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGroupByKey.html" title="class in org.apache.beam.sdk.transforms.join">CoGroupByKey</a>&lt;K&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGroupByKey.html#create--">create</a></span>()</code>
<div class="block">Returns a <code>CoGroupByKey&lt;K&gt;</code> <code>PTransform</code>.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values">PCollection</a>&lt;<a href="../../../../../../org/apache/beam/sdk/values/KV.html" title="class in org.apache.beam.sdk.values">KV</a>&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGroupByKey.html" title="type parameter in CoGroupByKey">K</a>,<a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGbkResult.html" title="class in org.apache.beam.sdk.transforms.join">CoGbkResult</a>&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGroupByKey.html#expand-org.apache.beam.sdk.transforms.join.KeyedPCollectionTuple-">expand</a></span>(<a href="../../../../../../org/apache/beam/sdk/transforms/join/KeyedPCollectionTuple.html" title="class in org.apache.beam.sdk.transforms.join">KeyedPCollectionTuple</a>&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGroupByKey.html" title="type parameter in CoGroupByKey">K</a>&gt;&nbsp;input)</code>
<div class="block">Override this method to specify how this <code>PTransform</code> should be expanded on the given
 <code>InputT</code>.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.beam.sdk.transforms.PTransform">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.beam.sdk.transforms.<a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html" title="class in org.apache.beam.sdk.transforms">PTransform</a></h3>
<code><a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html#compose-org.apache.beam.sdk.transforms.SerializableFunction-">compose</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html#getAdditionalInputs--">getAdditionalInputs</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html#getDefaultOutputCoder--">getDefaultOutputCoder</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html#getDefaultOutputCoder-InputT-">getDefaultOutputCoder</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html#getDefaultOutputCoder-InputT-org.apache.beam.sdk.values.PCollection-">getDefaultOutputCoder</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html#getKindString--">getKindString</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html#getName--">getName</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html#populateDisplayData-org.apache.beam.sdk.transforms.display.DisplayData.Builder-">populateDisplayData</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html#toString--">toString</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html#validate-org.apache.beam.sdk.options.PipelineOptions-">validate</a></code></li>
</ul>
<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, 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="create--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>create</h4>
<pre>public static&nbsp;&lt;K&gt;&nbsp;<a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGroupByKey.html" title="class in org.apache.beam.sdk.transforms.join">CoGroupByKey</a>&lt;K&gt;&nbsp;create()</pre>
<div class="block">Returns a <code>CoGroupByKey&lt;K&gt;</code> <code>PTransform</code>.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>K</code> - the type of the keys in the input and output <code>PCollection</code>s</dd>
</dl>
</li>
</ul>
<a name="expand-org.apache.beam.sdk.transforms.join.KeyedPCollectionTuple-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>expand</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values">PCollection</a>&lt;<a href="../../../../../../org/apache/beam/sdk/values/KV.html" title="class in org.apache.beam.sdk.values">KV</a>&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGroupByKey.html" title="type parameter in CoGroupByKey">K</a>,<a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGbkResult.html" title="class in org.apache.beam.sdk.transforms.join">CoGbkResult</a>&gt;&gt;&nbsp;expand(<a href="../../../../../../org/apache/beam/sdk/transforms/join/KeyedPCollectionTuple.html" title="class in org.apache.beam.sdk.transforms.join">KeyedPCollectionTuple</a>&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGroupByKey.html" title="type parameter in CoGroupByKey">K</a>&gt;&nbsp;input)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html#expand-InputT-">PTransform</a></code></span></div>
<div class="block">Override this method to specify how this <code>PTransform</code> should be expanded on the given
 <code>InputT</code>.

 <p>NOTE: This method should not be called directly. Instead apply the <code>PTransform</code> should
 be applied to the <code>InputT</code> using the <code>apply</code> method.

 <p>Composite transforms, which are defined in terms of other transforms, should return the
 output of one of the composed transforms. Non-composite transforms, which do not apply any
 transforms internally, should return a new unbound output and register evaluators (via
 backend-specific registration methods).</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html#expand-InputT-">expand</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/beam/sdk/transforms/PTransform.html" title="class in org.apache.beam.sdk.transforms">PTransform</a>&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/join/KeyedPCollectionTuple.html" title="class in org.apache.beam.sdk.transforms.join">KeyedPCollectionTuple</a>&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGroupByKey.html" title="type parameter in CoGroupByKey">K</a>&gt;,<a href="../../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values">PCollection</a>&lt;<a href="../../../../../../org/apache/beam/sdk/values/KV.html" title="class in org.apache.beam.sdk.values">KV</a>&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGroupByKey.html" title="type parameter in CoGroupByKey">K</a>,<a href="../../../../../../org/apache/beam/sdk/transforms/join/CoGbkResult.html" title="class in org.apache.beam.sdk.transforms.join">CoGbkResult</a>&gt;&gt;&gt;</code></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="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/beam/sdk/transforms/join/CoGbkResultSchema.html" title="class in org.apache.beam.sdk.transforms.join"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/beam/sdk/transforms/join/KeyedPCollectionTuple.html" title="class in org.apache.beam.sdk.transforms.join"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/beam/sdk/transforms/join/CoGroupByKey.html" target="_top">Frames</a></li>
<li><a href="CoGroupByKey.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>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields.inherited.from.class.org.apache.beam.sdk.transforms.PTransform">Field</a>&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>
