blob: 461f36f7c49ccfa6d4b3a1db3c6b2da468a7a883 [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>View (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="View (Apache Beam 2.47.0)";
}
}
catch(err) {
}
//-->
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":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><a href="../../../../../org/apache/beam/sdk/transforms/Values.html" title="class in org.apache.beam.sdk.transforms"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/beam/sdk/transforms/View.AsIterable.html" title="class in org.apache.beam.sdk.transforms"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/beam/sdk/transforms/View.html" target="_top">Frames</a></li>
<li><a href="View.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.transforms</div>
<h2 title="Class View" class="title">Class View</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.beam.sdk.transforms.View</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">View</span>
extends java.lang.Object</pre>
<div class="block">Transforms for creating <a href="../../../../../org/apache/beam/sdk/values/PCollectionView.html" title="interface in org.apache.beam.sdk.values"><code>PCollectionViews</code></a> from <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollections</code></a> (to read them as side inputs).
<p>While a <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection&lt;ElemT&gt;</code></a> has many values of type <code>ElemT</code> per
window, a <a href="../../../../../org/apache/beam/sdk/values/PCollectionView.html" title="interface in org.apache.beam.sdk.values"><code>PCollectionView&lt;ViewT&gt;</code></a> has a single value of type <code>ViewT</code> for each window. It can be thought of as a mapping from windows to values of type <code>ViewT</code>. The transforms here represent ways of converting the <code>ElemT</code> values in a window
into a <code>ViewT</code> for that window.
<p>When a <a href="../../../../../org/apache/beam/sdk/transforms/ParDo.html" title="class in org.apache.beam.sdk.transforms"><code>ParDo</code></a> transform is processing a main input element in a window <code>w</code> and a
<a href="../../../../../org/apache/beam/sdk/values/PCollectionView.html" title="interface in org.apache.beam.sdk.values"><code>PCollectionView</code></a> is read via <a href="../../../../../org/apache/beam/sdk/transforms/DoFn.ProcessContext.html#sideInput-org.apache.beam.sdk.values.PCollectionView-"><code>DoFn.ProcessContext.sideInput(org.apache.beam.sdk.values.PCollectionView&lt;T&gt;)</code></a>, the value of the view
for <code>w</code> is returned.
<p>The SDK supports viewing a <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a>, per window, as a single value, a <code>List</code>,
an <code>Iterable</code>, a <code>Map</code>, or a multimap (iterable-valued <code>Map</code>).
<p>For a <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a> that contains a single value of type <code>T</code> per window, such as
the output of <a href="../../../../../org/apache/beam/sdk/transforms/Combine.html#globally-org.apache.beam.sdk.transforms.SerializableFunction-"><code>Combine.globally(org.apache.beam.sdk.transforms.SerializableFunction&lt;java.lang.Iterable&lt;V&gt;, V&gt;)</code></a>, use <a href="../../../../../org/apache/beam/sdk/transforms/View.html#asSingleton--"><code>asSingleton()</code></a> to prepare it for use as a
side input:
<pre><code>
PCollectionView&lt;T&gt; output = someOtherPCollection
.apply(Combine.globally(...))
.apply(View.&lt;T&gt;asSingleton());
</code></pre>
<p>For a small <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a> with windows that can fit entirely in memory, use <a href="../../../../../org/apache/beam/sdk/transforms/View.html#asList--"><code>asList()</code></a> to prepare it for use as a <code>List</code>. When read as a side input, the entire
list for a window will be cached in memory.
<pre><code>
PCollectionView&lt;List&lt;T&gt;&gt; output =
smallPCollection.apply(View.&lt;T&gt;asList());
</code></pre>
<p>If a <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a> of <code>KV&lt;K, V&gt;</code> is known to have a single value per window for
each key, then use <a href="../../../../../org/apache/beam/sdk/transforms/View.html#asMap--"><code>asMap()</code></a> to view it as a <code>Map&lt;K, V&gt;</code>:
<pre><code>
PCollectionView&lt;Map&lt;K, V&gt; output =
somePCollection.apply(View.&lt;K, V&gt;asMap());
</code></pre>
<p>Otherwise, to access a <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a> of <code>KV&lt;K, V&gt;</code> as a <code>Map&lt;K,
Iterable&lt;V&gt;&gt;</code> side input, use <a href="../../../../../org/apache/beam/sdk/transforms/View.html#asMultimap--"><code>asMultimap()</code></a>:
<pre><code>
PCollectionView&lt;Map&lt;K, Iterable&lt;V&gt;&gt; output =
somePCollection.apply(View.&lt;K, Iterable&lt;V&gt;&gt;asMultimap());
</code></pre>
<p>To iterate over an entire window of a <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a> via side input, use <a href="../../../../../org/apache/beam/sdk/transforms/View.html#asIterable--"><code>asIterable()</code></a>:
<pre><code>
PCollectionView&lt;Iterable&lt;T&gt;&gt; output =
somePCollection.apply(View.&lt;T&gt;asIterable());
</code></pre>
<p>Both <a href="../../../../../org/apache/beam/sdk/transforms/View.html#asMultimap--"><code>asMultimap()</code></a> and <a href="../../../../../org/apache/beam/sdk/transforms/View.html#asMap--"><code>asMap()</code></a> are useful for implementing lookup
based "joins" with the main input, when the side input is small enough to fit into memory.
<p>For example, if you represent a page on a website via some <code>Page</code> object and have some
type <code>UrlVisits</code> logging that a URL was visited, you could convert these to more fully
structured <code>PageVisit</code> objects using a side input, something like the following:
<pre><code>
PCollection&lt;Page&gt; pages = ... // pages fit into memory
PCollection&lt;UrlVisit&gt; urlVisits = ... // very large collection
final PCollectionView&lt;Map&lt;URL, Page&gt;&gt; urlToPageView = pages
.apply(WithKeys.of( ... )) // extract the URL from the page
.apply(View.&lt;URL, Page&gt;asMap());
PCollection&lt;PageVisit&gt; pageVisits = urlVisits
.apply(ParDo.withSideInputs(urlToPageView)
.of(new DoFn&lt;UrlVisit, PageVisit&gt;() </code>{
<code> @Override
void processElement(ProcessContext context) {
UrlVisit urlVisit = context.element();
Map&lt;URL, Page&gt; urlToPage = context.sideInput(urlToPageView);
Page page = urlToPage.get(urlVisit.getUrl());
c.output(new PageVisit(page, urlVisit.getVisitData()));
}
</code>}));
</pre>
<p>See <a href="../../../../../org/apache/beam/sdk/transforms/ParDo.SingleOutput.html#withSideInputs-org.apache.beam.sdk.values.PCollectionView...-"><code>ParDo.SingleOutput.withSideInputs(org.apache.beam.sdk.values.PCollectionView&lt;?&gt;...)</code></a> for details on how to access this variable
inside a <a href="../../../../../org/apache/beam/sdk/transforms/ParDo.html" title="class in org.apache.beam.sdk.transforms"><code>ParDo</code></a> over another <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a>.</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/transforms/View.AsIterable.html" title="class in org.apache.beam.sdk.transforms">View.AsIterable</a>&lt;<a href="../../../../../org/apache/beam/sdk/transforms/View.AsIterable.html" title="type parameter in View.AsIterable">T</a>&gt;</span></code>
<div class="block"><b><i>For internal use only; no backwards-compatibility guarantees.</i></b></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/transforms/View.AsList.html" title="class in org.apache.beam.sdk.transforms">View.AsList</a>&lt;<a href="../../../../../org/apache/beam/sdk/transforms/View.AsList.html" title="type parameter in View.AsList">T</a>&gt;</span></code>
<div class="block"><b><i>For internal use only; no backwards-compatibility guarantees.</i></b></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/transforms/View.AsMap.html" title="class in org.apache.beam.sdk.transforms">View.AsMap</a>&lt;<a href="../../../../../org/apache/beam/sdk/transforms/View.AsMap.html" title="type parameter in View.AsMap">K</a>,<a href="../../../../../org/apache/beam/sdk/transforms/View.AsMap.html" title="type parameter in View.AsMap">V</a>&gt;</span></code>
<div class="block"><b><i>For internal use only; no backwards-compatibility guarantees.</i></b></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/transforms/View.AsMultimap.html" title="class in org.apache.beam.sdk.transforms">View.AsMultimap</a>&lt;<a href="../../../../../org/apache/beam/sdk/transforms/View.AsMultimap.html" title="type parameter in View.AsMultimap">K</a>,<a href="../../../../../org/apache/beam/sdk/transforms/View.AsMultimap.html" title="type parameter in View.AsMultimap">V</a>&gt;</span></code>
<div class="block"><b><i>For internal use only; no backwards-compatibility guarantees.</i></b></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/transforms/View.AsSingleton.html" title="class in org.apache.beam.sdk.transforms">View.AsSingleton</a>&lt;<a href="../../../../../org/apache/beam/sdk/transforms/View.AsSingleton.html" title="type parameter in View.AsSingleton">T</a>&gt;</span></code>
<div class="block"><b><i>For internal use only; no backwards-compatibility guarantees.</i></b></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/transforms/View.CreatePCollectionView.html" title="class in org.apache.beam.sdk.transforms">View.CreatePCollectionView</a>&lt;<a href="../../../../../org/apache/beam/sdk/transforms/View.CreatePCollectionView.html" title="type parameter in View.CreatePCollectionView">ElemT</a>,<a href="../../../../../org/apache/beam/sdk/transforms/View.CreatePCollectionView.html" title="type parameter in View.CreatePCollectionView">ViewT</a>&gt;</span></code>
<div class="block"><b><i>For internal use only; no backwards-compatibility guarantees.</i></b></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/transforms/View.ToListViewDoFn.html" title="class in org.apache.beam.sdk.transforms">View.ToListViewDoFn</a>&lt;<a href="../../../../../org/apache/beam/sdk/transforms/View.ToListViewDoFn.html" title="type parameter in View.ToListViewDoFn">T</a>&gt;</span></code>
<div class="block">Provides an index to value mapping using a random starting index and also provides an offset
range for each window seen.</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/transforms/View.AsIterable.html" title="class in org.apache.beam.sdk.transforms">View.AsIterable</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/transforms/View.html#asIterable--">asIterable</a></span>()</code>
<div class="block">Returns a <a href="../../../../../org/apache/beam/sdk/transforms/View.AsIterable.html" title="class in org.apache.beam.sdk.transforms"><code>View.AsIterable</code></a> transform that takes a <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a> as input and
produces a <a href="../../../../../org/apache/beam/sdk/values/PCollectionView.html" title="interface in org.apache.beam.sdk.values"><code>PCollectionView</code></a> mapping each window to an <code>Iterable</code> of the values in
that window.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../../org/apache/beam/sdk/transforms/View.AsList.html" title="class in org.apache.beam.sdk.transforms">View.AsList</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/transforms/View.html#asList--">asList</a></span>()</code>
<div class="block">Returns a <a href="../../../../../org/apache/beam/sdk/transforms/View.AsList.html" title="class in org.apache.beam.sdk.transforms"><code>View.AsList</code></a> transform that takes a <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a> and returns a <a href="../../../../../org/apache/beam/sdk/values/PCollectionView.html" title="interface in org.apache.beam.sdk.values"><code>PCollectionView</code></a> mapping each window to a <code>List</code> containing all of the elements in the
window.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static &lt;K,V&gt;&nbsp;<a href="../../../../../org/apache/beam/sdk/transforms/View.AsMap.html" title="class in org.apache.beam.sdk.transforms">View.AsMap</a>&lt;K,V&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/transforms/View.html#asMap--">asMap</a></span>()</code>
<div class="block">Returns a <a href="../../../../../org/apache/beam/sdk/transforms/View.AsMap.html" title="class in org.apache.beam.sdk.transforms"><code>View.AsMap</code></a> transform that takes a <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection&lt;KV&lt;K,
V&gt;&gt;</code></a> as input and produces a <a href="../../../../../org/apache/beam/sdk/values/PCollectionView.html" title="interface in org.apache.beam.sdk.values"><code>PCollectionView</code></a> mapping each window to a <code>Map&lt;K, V&gt;</code>.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static &lt;K,V&gt;&nbsp;<a href="../../../../../org/apache/beam/sdk/transforms/View.AsMultimap.html" title="class in org.apache.beam.sdk.transforms">View.AsMultimap</a>&lt;K,V&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/transforms/View.html#asMultimap--">asMultimap</a></span>()</code>
<div class="block">Returns a <a href="../../../../../org/apache/beam/sdk/transforms/View.AsMultimap.html" title="class in org.apache.beam.sdk.transforms"><code>View.AsMultimap</code></a> transform that takes a <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection&lt;KV&lt;K, V&gt;&gt;</code></a> as input and produces a <a href="../../../../../org/apache/beam/sdk/values/PCollectionView.html" title="interface in org.apache.beam.sdk.values"><code>PCollectionView</code></a> mapping each
window to its contents as a <code>Map&lt;K, Iterable&lt;V&gt;&gt;</code> for use as a side
input.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../../org/apache/beam/sdk/transforms/View.AsSingleton.html" title="class in org.apache.beam.sdk.transforms">View.AsSingleton</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/transforms/View.html#asSingleton--">asSingleton</a></span>()</code>
<div class="block">Returns a <a href="../../../../../org/apache/beam/sdk/transforms/View.AsSingleton.html" title="class in org.apache.beam.sdk.transforms"><code>View.AsSingleton</code></a> transform that takes a <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a> with a single value
per window as input and produces a <a href="../../../../../org/apache/beam/sdk/values/PCollectionView.html" title="interface in org.apache.beam.sdk.values"><code>PCollectionView</code></a> that returns the value in the main
input window when read as a side input.</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="asSingleton--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>asSingleton</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/beam/sdk/transforms/View.AsSingleton.html" title="class in org.apache.beam.sdk.transforms">View.AsSingleton</a>&lt;T&gt;&nbsp;asSingleton()</pre>
<div class="block">Returns a <a href="../../../../../org/apache/beam/sdk/transforms/View.AsSingleton.html" title="class in org.apache.beam.sdk.transforms"><code>View.AsSingleton</code></a> transform that takes a <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a> with a single value
per window as input and produces a <a href="../../../../../org/apache/beam/sdk/values/PCollectionView.html" title="interface in org.apache.beam.sdk.values"><code>PCollectionView</code></a> that returns the value in the main
input window when read as a side input.
<pre><code>
PCollection&lt;InputT&gt; input = ...
CombineFn&lt;InputT, OutputT&gt; yourCombineFn = ...
PCollectionView&lt;OutputT&gt; output = input
.apply(Combine.globally(yourCombineFn))
.apply(View.&lt;OutputT&gt;asSingleton());
</code></pre>
<p>If the input <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a> is empty, throws <code>NoSuchElementException</code>
in the consuming <a href="../../../../../org/apache/beam/sdk/transforms/DoFn.html" title="class in org.apache.beam.sdk.transforms"><code>DoFn</code></a>.
<p>If the input <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a> contains more than one element, throws <code>IllegalArgumentException</code> in the consuming <a href="../../../../../org/apache/beam/sdk/transforms/DoFn.html" title="class in org.apache.beam.sdk.transforms"><code>DoFn</code></a>.</div>
</li>
</ul>
<a name="asList--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>asList</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/beam/sdk/transforms/View.AsList.html" title="class in org.apache.beam.sdk.transforms">View.AsList</a>&lt;T&gt;&nbsp;asList()</pre>
<div class="block">Returns a <a href="../../../../../org/apache/beam/sdk/transforms/View.AsList.html" title="class in org.apache.beam.sdk.transforms"><code>View.AsList</code></a> transform that takes a <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a> and returns a <a href="../../../../../org/apache/beam/sdk/values/PCollectionView.html" title="interface in org.apache.beam.sdk.values"><code>PCollectionView</code></a> mapping each window to a <code>List</code> containing all of the elements in the
window.
<p>This view should only be used if random access and/or size of the PCollection is required.
<a href="../../../../../org/apache/beam/sdk/transforms/View.html#asIterable--"><code>asIterable()</code></a> will perform significantly better for sequential access.
<p>Some runners may require that the view fits in memory.</div>
</li>
</ul>
<a name="asIterable--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>asIterable</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/beam/sdk/transforms/View.AsIterable.html" title="class in org.apache.beam.sdk.transforms">View.AsIterable</a>&lt;T&gt;&nbsp;asIterable()</pre>
<div class="block">Returns a <a href="../../../../../org/apache/beam/sdk/transforms/View.AsIterable.html" title="class in org.apache.beam.sdk.transforms"><code>View.AsIterable</code></a> transform that takes a <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a> as input and
produces a <a href="../../../../../org/apache/beam/sdk/values/PCollectionView.html" title="interface in org.apache.beam.sdk.values"><code>PCollectionView</code></a> mapping each window to an <code>Iterable</code> of the values in
that window.
<p>Some runners may require that the view fits in memory.</div>
</li>
</ul>
<a name="asMap--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>asMap</h4>
<pre>public static&nbsp;&lt;K,V&gt;&nbsp;<a href="../../../../../org/apache/beam/sdk/transforms/View.AsMap.html" title="class in org.apache.beam.sdk.transforms">View.AsMap</a>&lt;K,V&gt;&nbsp;asMap()</pre>
<div class="block">Returns a <a href="../../../../../org/apache/beam/sdk/transforms/View.AsMap.html" title="class in org.apache.beam.sdk.transforms"><code>View.AsMap</code></a> transform that takes a <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection&lt;KV&lt;K,
V&gt;&gt;</code></a> as input and produces a <a href="../../../../../org/apache/beam/sdk/values/PCollectionView.html" title="interface in org.apache.beam.sdk.values"><code>PCollectionView</code></a> mapping each window to a <code>Map&lt;K, V&gt;</code>. It is required that each key of the input be associated with a single value,
per window. If this is not the case, precede this view with <code>Combine.perKey</code>, as in the
example below, or alternatively use <a href="../../../../../org/apache/beam/sdk/transforms/View.html#asMultimap--"><code>asMultimap()</code></a>.
<pre><code>
PCollection&lt;KV&lt;K, V&gt;&gt; input = ...
CombineFn&lt;V, OutputT&gt; yourCombineFn = ...
PCollectionView&lt;Map&lt;K, OutputT&gt;&gt; output = input
.apply(Combine.perKey(yourCombineFn))
.apply(View.&lt;K, OutputT&gt;asMap());
</code></pre>
<p>Some runners may require that the view fits in memory.</div>
</li>
</ul>
<a name="asMultimap--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>asMultimap</h4>
<pre>public static&nbsp;&lt;K,V&gt;&nbsp;<a href="../../../../../org/apache/beam/sdk/transforms/View.AsMultimap.html" title="class in org.apache.beam.sdk.transforms">View.AsMultimap</a>&lt;K,V&gt;&nbsp;asMultimap()</pre>
<div class="block">Returns a <a href="../../../../../org/apache/beam/sdk/transforms/View.AsMultimap.html" title="class in org.apache.beam.sdk.transforms"><code>View.AsMultimap</code></a> transform that takes a <a href="../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection&lt;KV&lt;K, V&gt;&gt;</code></a> as input and produces a <a href="../../../../../org/apache/beam/sdk/values/PCollectionView.html" title="interface in org.apache.beam.sdk.values"><code>PCollectionView</code></a> mapping each
window to its contents as a <code>Map&lt;K, Iterable&lt;V&gt;&gt;</code> for use as a side
input. In contrast to <a href="../../../../../org/apache/beam/sdk/transforms/View.html#asMap--"><code>asMap()</code></a>, it is not required that the keys in the input
collection be unique.
<pre><code>
PCollection&lt;KV&lt;K, V&gt;&gt; input = ... // maybe more than one occurrence of a some keys
PCollectionView&lt;Map&lt;K, Iterable&lt;V&gt;&gt;&gt; output = input.apply(View.&lt;K, V&gt;asMultimap());
</code></pre>
<p>Some runners may require that the view fits in memory.</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><a href="../../../../../org/apache/beam/sdk/transforms/Values.html" title="class in org.apache.beam.sdk.transforms"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/beam/sdk/transforms/View.AsIterable.html" title="class in org.apache.beam.sdk.transforms"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/beam/sdk/transforms/View.html" target="_top">Frames</a></li>
<li><a href="View.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>