This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 2846813e937 Publishing website 2025/05/05 05:44:19 at commit c9a0e90
2846813e937 is described below
commit 2846813e9372d2e1c21eaeeb6c63d8e4a97b2d86
Author: runner <runner@main-runner-frrkx-tkjlf>
AuthorDate: Mon May 5 05:44:19 2025 +0000
Publishing website 2025/05/05 05:44:19 at commit c9a0e90
---
website/generated-content/documentation/index.xml | 95 ++++++++++++++++++++++
.../documentation/programming-guide/index.html | 59 +++++++++++++-
website/generated-content/get-started/index.xml | 70 ++++++++++++++++
.../get-started/quickstart-java/index.html | 3 +
website/generated-content/sitemap.xml | 2 +-
5 files changed, 226 insertions(+), 3 deletions(-)
diff --git a/website/generated-content/documentation/index.xml
b/website/generated-content/documentation/index.xml
index 8f2d366dd41..d701f34e79d 100644
--- a/website/generated-content/documentation/index.xml
+++ b/website/generated-content/documentation/index.xml
@@ -13837,6 +13837,101 @@ bags larger than available memory.</p>
</span></span><span class="line"><span class="cl"><span
class="p">}</span></span></span></code></pre></div>
</div>
</div>
+<h4 id="setstate">SetState</h4>
+<p>A common use case for state is to accumulate unique elements.
<code>SetState</code> allows for accumulating an unordered set
+of elements.</p>
+<p>
+<div class='language-java snippet'>
+<div class="notebook-skip code-snippet">
+<a class="copy" type="button" data-bs-toggle="tooltip"
data-bs-placement="bottom" title="Copy to clipboard">
+<img src="/images/copy-icon.svg"/>
+</a>
+<div class="highlight"><pre tabindex="0" class="chroma"><code
class="language-java" data-lang="java"><span class="line"><span
class="cl"><span class="n">PCollection</span><span
class="o">&lt;</span><span class="n">KV</span><span
class="o">&lt;</span><span class="n">String</span><span
class="o">,</span> <span class="n">ValueT</span><span
class="o">&gt;&gt;</span> <span class="n">perUser</span>
<span cl [...]
+</span></span><span class="line"><span class="cl"><span
class="n">perUser</span><span class="o">.</span><span
class="na">apply</span><span class="o">(</span><span
class="n">ParDo</span><span class="o">.</span><span
class="na">of</span><span class="o">(</span><span
class="k">new</span> <span class="n">DoFn</span><span
class="o">&lt;</span><span class="n">KV</span><span
class="o">&lt;</span>&l [...]
+</span></span><span class="line"><span class="cl"> <span
class="nd">@StateId</span><span class="o">(</span><span
class="s">&#34;state&#34;</span><span class="o">)</span>
<span class="kd">private</span> <span class="kd">final</span>
<span class="n">StateSpec</span><span
class="o">&lt;</span><span class="n">SetState</span><span
class="o">&lt;</span><span class="n">ValueT</span><span
class="o">& [...]
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span
class="nd">@ProcessElement</span> <span class="kd">public</span>
<span class="kt">void</span> <span
class="nf">process</span><span class="o">(</span>
+</span></span><span class="line"><span class="cl"> <span
class="nd">@Element</span> <span class="n">KV</span><span
class="o">&lt;</span><span class="n">String</span><span
class="o">,</span> <span class="n">ValueT</span><span
class="o">&gt;</span> <span class="n">element</span><span
class="o">,</span>
+</span></span><span class="line"><span class="cl"> <span
class="nd">@StateId</span><span class="o">(</span><span
class="s">&#34;state&#34;</span><span class="o">)</span>
<span class="n">SetState</span><span
class="o">&lt;</span><span class="n">ValueT</span><span
class="o">&gt;</span> <span class="n">state</span><span
class="o">)</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl"> <span
class="c1">// Add the current element to the set state for this key.
+</span></span></span><span class="line"><span
class="cl"><span class="c1"></span> <span
class="n">state</span><span class="o">.</span><span
class="na">add</span><span class="o">(</span><span
class="n">element</span><span class="o">.</span><span
class="na">getValue</span><span class="o">());</span>
+</span></span><span class="line"><span class="cl"> <span
class="k">if</span> <span class="o">(</span><span
class="n">shouldFetch</span><span class="o">())</span> <span
class="o">{</span>
+</span></span><span class="line"><span class="cl"> <span
class="c1">// Occasionally we fetch and process the values.
+</span></span></span><span class="line"><span
class="cl"><span class="c1"></span> <span
class="n">Iterable</span><span class="o">&lt;</span><span
class="n">ValueT</span><span class="o">&gt;</span> <span
class="n">values</span> <span class="o">=</span> <span
class="n">state</span><span class="o">.</span><span
class="na">read</span><span class="o">();</span>
+</span></span><span class="line"><span class="cl"> <span
class="n">processValues</span><span class="o">(</span><span
class="n">values</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl"> <span
class="n">state</span><span class="o">.</span><span
class="na">clear</span><span class="o">();</span> <span
class="c1">// Clear the state for this key.
+</span></span></span><span class="line"><span
class="cl"><span class="c1"></span> <span class="o">}</span>
+</span></span><span class="line"><span class="cl"> <span
class="o">}</span>
+</span></span><span class="line"><span class="cl"><span
class="o">}));</span></span></span></code></pre></div>
+</div>
+</div>
+<div class='language-py snippet'>
+<div class="notebook-skip code-snippet">
+<a class="copy" type="button" data-bs-toggle="tooltip"
data-bs-placement="bottom" title="Copy to clipboard">
+<img src="/images/copy-icon.svg"/>
+</a>
+<div class="highlight"><pre tabindex="0" class="chroma"><code
class="language-py" data-lang="py"><span class="line"><span
class="cl"><span class="k">class</span> <span
class="nc">SetStateDoFn</span><span class="p">(</span><span
class="n">DoFn</span><span class="p">):</span>
+</span></span><span class="line"><span class="cl"> <span
class="n">UNIQUE_ELEMENTS</span> <span class="o">=</span> <span
class="n">SetStateSpec</span><span class="p">(</span><span
class="s1">&#39;buffer&#39;</span><span class="p">,</span>
<span class="n">coders</span><span class="o">.</span><span
class="n">VarIntCoder</span><span class="p">())</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span
class="k">def</span> <span class="nf">process</span><span
class="p">(</span><span class="bp">self</span><span
class="p">,</span> <span class="n">element_pair</span><span
class="p">,</span> <span class="n">state</span><span
class="o">=</span><span class="n">DoFn</span><span
class="o">.</span><span class="n">StateParam</span><span
class="p">(</s [...]
+</span></span><span class="line"><span class="cl"> <span
class="n">state</span><span class="o">.</span><span
class="n">add</span><span class="p">(</span><span
class="n">element_pair</span><span class="p">[</span><span
class="mi">1</span><span class="p">])</span>
+</span></span><span class="line"><span class="cl"> <span
class="k">if</span> <span class="n">should_fetch</span><span
class="p">():</span>
+</span></span><span class="line"><span class="cl"> <span
class="n">unique_elements</span> <span class="o">=</span> <span
class="nb">list</span><span class="p">(</span><span
class="n">state</span><span class="o">.</span><span
class="n">read</span><span class="p">())</span>
+</span></span><span class="line"><span class="cl"> <span
class="n">process_values</span><span class="p">(</span><span
class="n">unique_elements</span><span class="p">)</span>
+</span></span><span class="line"><span class="cl"> <span
class="n">state</span><span class="o">.</span><span
class="n">clear</span><span class="p">()</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span
class="n">_</span> <span class="o">=</span> <span
class="p">(</span><span class="n">p</span> <span
class="o">|</span> <span class="s1">&#39;Read per
user&#39;</span> <span class="o">&gt;&gt;</span> <span
class="n">ReadPerUser</span><span class="p">()</span>
+</span></span><span class="line"><span class="cl"> <span
class="o">|</span> <span class="s1">&#39;Set state
pardo&#39;</span> <span class="o">&gt;&gt;</span> <span
class="n">beam</span><span class="o">.</span><span
class="n">ParDo</span><span class="p">(</span><span
class="n">SetStateDoFn</span><span
class="p">()))</span></span></span></code></pre></div>
+</div>
+</div>
+</p>
+<h4 id="orderliststate">OrderListState</h4>
+<p><code>OrderListState</code> state that accumulate elements in an
ordered List.</p>
+<p>
+<div class='language-java snippet'>
+<div class="notebook-skip code-snippet">
+<a class="copy" type="button" data-bs-toggle="tooltip"
data-bs-placement="bottom" title="Copy to clipboard">
+<img src="/images/copy-icon.svg"/>
+</a>
+<div class="highlight"><pre tabindex="0" class="chroma"><code
class="language-java" data-lang="java"><span class="line"><span
class="cl"><span class="n">PCollection</span><span
class="o">&lt;</span><span class="n">KV</span><span
class="o">&lt;</span><span class="n">String</span><span
class="o">,</span> <span class="n">ValueT</span><span
class="o">&gt;&gt;</span> <span class="n">perUser</span>
<span cl [...]
+</span></span><span class="line"><span class="cl"><span
class="n">perUser</span><span class="o">.</span><span
class="na">apply</span><span class="o">(</span><span
class="n">ParDo</span><span class="o">.</span><span
class="na">of</span><span class="o">(</span><span
class="k">new</span> <span class="n">DoFn</span><span
class="o">&lt;</span><span class="n">KV</span><span
class="o">&lt;</span>&l [...]
+</span></span><span class="line"><span class="cl"> <span
class="nd">@StateId</span><span class="o">(</span><span
class="s">&#34;state&#34;</span><span class="o">)</span>
<span class="kd">private</span> <span class="kd">final</span>
<span class="n">StateSpec</span><span
class="o">&lt;</span><span
class="n">OrderedListState</span><span
class="o">&lt;</span><span class="n">ValueT</span><span cla
[...]
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span
class="nd">@ProcessElement</span> <span class="kd">public</span>
<span class="kt">void</span> <span
class="nf">process</span><span class="o">(</span>
+</span></span><span class="line"><span class="cl"> <span
class="nd">@Element</span> <span class="n">KV</span><span
class="o">&lt;</span><span class="n">String</span><span
class="o">,</span> <span class="n">ValueT</span><span
class="o">&gt;</span> <span class="n">element</span><span
class="o">,</span>
+</span></span><span class="line"><span class="cl"> <span
class="nd">@StateId</span><span class="o">(</span><span
class="s">&#34;state&#34;</span><span class="o">)</span>
<span class="n">SetState</span><span
class="o">&lt;</span><span class="n">ValueT</span><span
class="o">&gt;</span> <span class="n">state</span><span
class="o">)</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl"> <span
class="c1">// Add the current element to the set state for this key.
+</span></span></span><span class="line"><span
class="cl"><span class="c1"></span> <span
class="n">state</span><span class="o">.</span><span
class="na">add</span><span class="o">(</span><span
class="n">element</span><span class="o">.</span><span
class="na">getValue</span><span class="o">());</span>
+</span></span><span class="line"><span class="cl"> <span
class="k">if</span> <span class="o">(</span><span
class="n">shouldFetch</span><span class="o">())</span> <span
class="o">{</span>
+</span></span><span class="line"><span class="cl"> <span
class="c1">// Occasionally we fetch and process the values.
+</span></span></span><span class="line"><span
class="cl"><span class="c1"></span> <span
class="n">Iterable</span><span class="o">&lt;</span><span
class="n">ValueT</span><span class="o">&gt;</span> <span
class="n">values</span> <span class="o">=</span> <span
class="n">state</span><span class="o">.</span><span
class="na">read</span><span class="o">();</span>
+</span></span><span class="line"><span class="cl"> <span
class="n">processValues</span><span class="o">(</span><span
class="n">values</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl"> <span
class="n">state</span><span class="o">.</span><span
class="na">clear</span><span class="o">();</span> <span
class="c1">// Clear the state for this key.
+</span></span></span><span class="line"><span
class="cl"><span class="c1"></span> <span class="o">}</span>
+</span></span><span class="line"><span class="cl"> <span
class="o">}</span>
+</span></span><span class="line"><span class="cl"><span
class="o">}));</span></span></span></code></pre></div>
+</div>
+</div>
+<div class='language-py snippet'>
+<div class="notebook-skip code-snippet">
+<a class="copy" type="button" data-bs-toggle="tooltip"
data-bs-placement="bottom" title="Copy to clipboard">
+<img src="/images/copy-icon.svg"/>
+</a>
+<div class="highlight"><pre tabindex="0" class="chroma"><code
class="language-py" data-lang="py"><span class="line"><span
class="cl"><span class="k">class</span> <span
class="nc">OrderedListStateDoFn</span><span class="p">(</span><span
class="n">DoFn</span><span class="p">):</span>
+</span></span><span class="line"><span class="cl"> <span
class="n">STATE_ELEMENTS</span> <span class="o">=</span> <span
class="n">OrderedListStateSpec</span><span class="p">(</span><span
class="s1">&#39;buffer&#39;</span><span class="p">,</span>
<span class="n">coders</span><span class="o">.</span><span
class="n">ListCoder</span><span class="p">())</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span
class="k">def</span> <span class="nf">process</span><span
class="p">(</span><span class="bp">self</span><span
class="p">,</span> <span class="n">element_pair</span><span
class="p">,</span> <span class="n">state</span><span
class="o">=</span><span class="n">DoFn</span><span
class="o">.</span><span class="n">StateParam</span><span
class="p">(</s [...]
+</span></span><span class="line"><span class="cl"> <span
class="n">state</span><span class="o">.</span><span
class="n">add</span><span class="p">(</span><span
class="n">element_pair</span><span class="p">[</span><span
class="mi">1</span><span class="p">])</span>
+</span></span><span class="line"><span class="cl"> <span
class="k">if</span> <span class="n">should_fetch</span><span
class="p">():</span>
+</span></span><span class="line"><span class="cl"> <span
class="n">elements</span> <span class="o">=</span> <span
class="nb">list</span><span class="p">(</span><span
class="n">state</span><span class="o">.</span><span
class="n">read</span><span class="p">())</span>
+</span></span><span class="line"><span class="cl"> <span
class="n">process_values</span><span class="p">(</span><span
class="n">elements</span><span class="p">)</span>
+</span></span><span class="line"><span class="cl"> <span
class="n">state</span><span class="o">.</span><span
class="n">clear</span><span class="p">()</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span
class="n">_</span> <span class="o">=</span> <span
class="p">(</span><span class="n">p</span> <span
class="o">|</span> <span class="s1">&#39;Read per
user&#39;</span> <span class="o">&gt;&gt;</span> <span
class="n">ReadPerUser</span><span class="p">()</span>
+</span></span><span class="line"><span class="cl"> <span
class="o">|</span> <span class="s1">&#39;Set state
pardo&#39;</span> <span class="o">&gt;&gt;</span> <span
class="n">beam</span><span class="o">.</span><span
class="n">ParDo</span><span class="p">(</span><span
class="n">OrderedListStateDoFn</span><span
class="p">()))</span></span></span></code></pre></div>
+</div>
+</div>
+</p>
<h3 id="deferred-state-reads">11.2. Deferred state reads</h3>
<p>When a <code>DoFn</code> contains multiple state specifications,
reading each one in order can be slow. Calling the <code>read()</code>
function
on a state can cause the runner to perform a blocking read. Performing
multiple blocking reads in sequence adds latency
diff --git
a/website/generated-content/documentation/programming-guide/index.html
b/website/generated-content/documentation/programming-guide/index.html
index f727994ed1d..71579afa20f 100644
--- a/website/generated-content/documentation/programming-guide/index.html
+++ b/website/generated-content/documentation/programming-guide/index.html
@@ -37,7 +37,7 @@
<img class=banner-img-mobile
src=/images/banners/tour-of-beam/tour-of-beam-mobile.png alt="Start Tour of
Beam"></a></div><div class=swiper-slide><a
href=https://beam.apache.org/documentation/ml/overview/><img
class=banner-img-desktop
src=/images/banners/machine-learning/machine-learning-desktop.jpg alt="Machine
Learning">
<img class=banner-img-mobile
src=/images/banners/machine-learning/machine-learning-mobile.jpg alt="Machine
Learning"></a></div></div><div class=swiper-pagination></div><div
class=swiper-button-prev></div><div
class=swiper-button-next></div></div><script
src=/js/swiper-bundle.min.min.e0e8f81b0b15728d35ff73c07f42ddbb17a108d6f23df4953cb3e60df7ade675.js></script>
<script
src=/js/sliders/top-banners.min.afa7d0a19acf7a3b28ca369490b3d401a619562a2a4c9612577be2f66a4b9855.js></script>
-<script>function showSearch(){addPlaceholder();var
e,t=document.querySelector(".searchBar");t.classList.remove("disappear"),e=document.querySelector("#iconsBar"),e.classList.add("disappear")}function
addPlaceholder(){$("input:text").attr("placeholder","What are you looking
for?")}function endSearch(){var
e,t=document.querySelector(".searchBar");t.classList.add("disappear"),e=document.querySelector("#iconsBar"),e.classList.remove("disappear")}function
blockScroll(){$("body").toggleClass(" [...]
+<script>function showSearch(){addPlaceholder();var
e,t=document.querySelector(".searchBar");t.classList.remove("disappear"),e=document.querySelector("#iconsBar"),e.classList.add("disappear")}function
addPlaceholder(){$("input:text").attr("placeholder","What are you looking
for?")}function endSearch(){var
e,t=document.querySelector(".searchBar");t.classList.add("disappear"),e=document.querySelector("#iconsBar"),e.classList.remove("disappear")}function
blockScroll(){$("body").toggleClass(" [...]
Beam SDKs to create data processing pipelines. It provides guidance for using
the Beam SDK classes to build and test your pipeline. The programming guide is
not intended as an exhaustive reference, but as a language-agnostic, high-level
@@ -4195,7 +4195,62 @@ bags larger than available memory.</p><div
class='language-java snippet'><div cl
</span></span><span class=line><span class=cl> <span class=p>}</span>
</span></span><span class=line><span class=cl>
</span></span><span class=line><span class=cl> <span class=k>return</span>
<span class=kc>nil</span>
-</span></span><span class=line><span class=cl><span
class=p>}</span></span></span></code></pre></div></div></div><h3
id=deferred-state-reads>11.2. Deferred state reads</h3><p>When a
<code>DoFn</code> contains multiple state specifications, reading each one in
order can be slow. Calling the <code>read()</code> function
+</span></span><span class=line><span class=cl><span
class=p>}</span></span></span></code></pre></div></div></div><h4
id=setstate>SetState</h4><p>A common use case for state is to accumulate unique
elements. <code>SetState</code> allows for accumulating an unordered set
+of elements.</p><p><div class='language-java snippet'><div
class="notebook-skip code-snippet"><a class=copy type=button
data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img
src=/images/copy-icon.svg></a><div class=highlight><pre tabindex=0
class=chroma><code class=language-java data-lang=java><span class=line><span
class=cl><span class=n>PCollection</span><span class=o><</span><span
class=n>KV</span><span class=o><</span><span class=n>String</span><span cl
[...]
+</span></span><span class=line><span class=cl><span
class=n>perUser</span><span class=o>.</span><span class=na>apply</span><span
class=o>(</span><span class=n>ParDo</span><span class=o>.</span><span
class=na>of</span><span class=o>(</span><span class=k>new</span> <span
class=n>DoFn</span><span class=o><</span><span class=n>KV</span><span
class=o><</span><span class=n>String</span><span class=o>,</span> <span
class=n>ValueT</span><span class=o>>,</span> <span class=n>OutputT</spa [...]
+</span></span><span class=line><span class=cl> <span
class=nd>@StateId</span><span class=o>(</span><span
class=s>"state"</span><span class=o>)</span> <span
class=kd>private</span> <span class=kd>final</span> <span
class=n>StateSpec</span><span class=o><</span><span
class=n>SetState</span><span class=o><</span><span
class=n>ValueT</span><span class=o>>></span> <span
class=n>uniqueElements</span> <span class=o>=</span> <span
class=n>StateSpecs</span><span class=o>.</sp [...]
+</span></span><span class=line><span class=cl>
+</span></span><span class=line><span class=cl> <span
class=nd>@ProcessElement</span> <span class=kd>public</span> <span
class=kt>void</span> <span class=nf>process</span><span class=o>(</span>
+</span></span><span class=line><span class=cl> <span
class=nd>@Element</span> <span class=n>KV</span><span class=o><</span><span
class=n>String</span><span class=o>,</span> <span class=n>ValueT</span><span
class=o>></span> <span class=n>element</span><span class=o>,</span>
+</span></span><span class=line><span class=cl> <span
class=nd>@StateId</span><span class=o>(</span><span
class=s>"state"</span><span class=o>)</span> <span
class=n>SetState</span><span class=o><</span><span
class=n>ValueT</span><span class=o>></span> <span class=n>state</span><span
class=o>)</span> <span class=o>{</span>
+</span></span><span class=line><span class=cl> <span class=c1>// Add the
current element to the set state for this key.
+</span></span></span><span class=line><span class=cl><span class=c1></span>
<span class=n>state</span><span class=o>.</span><span class=na>add</span><span
class=o>(</span><span class=n>element</span><span class=o>.</span><span
class=na>getValue</span><span class=o>());</span>
+</span></span><span class=line><span class=cl> <span class=k>if</span>
<span class=o>(</span><span class=n>shouldFetch</span><span class=o>())</span>
<span class=o>{</span>
+</span></span><span class=line><span class=cl> <span class=c1>//
Occasionally we fetch and process the values.
+</span></span></span><span class=line><span class=cl><span class=c1></span>
<span class=n>Iterable</span><span class=o><</span><span
class=n>ValueT</span><span class=o>></span> <span class=n>values</span>
<span class=o>=</span> <span class=n>state</span><span class=o>.</span><span
class=na>read</span><span class=o>();</span>
+</span></span><span class=line><span class=cl> <span
class=n>processValues</span><span class=o>(</span><span
class=n>values</span><span class=o>);</span>
+</span></span><span class=line><span class=cl> <span
class=n>state</span><span class=o>.</span><span class=na>clear</span><span
class=o>();</span> <span class=c1>// Clear the state for this key.
+</span></span></span><span class=line><span class=cl><span class=c1></span>
<span class=o>}</span>
+</span></span><span class=line><span class=cl> <span class=o>}</span>
+</span></span><span class=line><span class=cl><span
class=o>}));</span></span></span></code></pre></div></div></div><div
class='language-py snippet'><div class="notebook-skip code-snippet"><a
class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom
title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div
class=highlight><pre tabindex=0 class=chroma><code class=language-py
data-lang=py><span class=line><span class=cl><span class=k>class</span> <span
class=nc>SetStat [...]
+</span></span><span class=line><span class=cl> <span
class=n>UNIQUE_ELEMENTS</span> <span class=o>=</span> <span
class=n>SetStateSpec</span><span class=p>(</span><span
class=s1>'buffer'</span><span class=p>,</span> <span
class=n>coders</span><span class=o>.</span><span
class=n>VarIntCoder</span><span class=p>())</span>
+</span></span><span class=line><span class=cl>
+</span></span><span class=line><span class=cl> <span class=k>def</span> <span
class=nf>process</span><span class=p>(</span><span class=bp>self</span><span
class=p>,</span> <span class=n>element_pair</span><span class=p>,</span> <span
class=n>state</span><span class=o>=</span><span class=n>DoFn</span><span
class=o>.</span><span class=n>StateParam</span><span class=p>(</span><span
class=n>UNIQUE_ELEMENTS</span><span class=p>)):</span>
+</span></span><span class=line><span class=cl> <span
class=n>state</span><span class=o>.</span><span class=n>add</span><span
class=p>(</span><span class=n>element_pair</span><span class=p>[</span><span
class=mi>1</span><span class=p>])</span>
+</span></span><span class=line><span class=cl> <span class=k>if</span>
<span class=n>should_fetch</span><span class=p>():</span>
+</span></span><span class=line><span class=cl> <span
class=n>unique_elements</span> <span class=o>=</span> <span
class=nb>list</span><span class=p>(</span><span class=n>state</span><span
class=o>.</span><span class=n>read</span><span class=p>())</span>
+</span></span><span class=line><span class=cl> <span
class=n>process_values</span><span class=p>(</span><span
class=n>unique_elements</span><span class=p>)</span>
+</span></span><span class=line><span class=cl> <span
class=n>state</span><span class=o>.</span><span class=n>clear</span><span
class=p>()</span>
+</span></span><span class=line><span class=cl>
+</span></span><span class=line><span class=cl><span class=n>_</span> <span
class=o>=</span> <span class=p>(</span><span class=n>p</span> <span
class=o>|</span> <span class=s1>'Read per user'</span> <span
class=o>>></span> <span class=n>ReadPerUser</span><span class=p>()</span>
+</span></span><span class=line><span class=cl> <span class=o>|</span>
<span class=s1>'Set state pardo'</span> <span class=o>>></span>
<span class=n>beam</span><span class=o>.</span><span class=n>ParDo</span><span
class=p>(</span><span class=n>SetStateDoFn</span><span
class=p>()))</span></span></span></code></pre></div></div></div></p><h4
id=orderliststate>OrderListState</h4><p><code>OrderListState</code> state that
accumulate elements in an ordered List.</p><p><div cl [...]
+</span></span><span class=line><span class=cl><span
class=n>perUser</span><span class=o>.</span><span class=na>apply</span><span
class=o>(</span><span class=n>ParDo</span><span class=o>.</span><span
class=na>of</span><span class=o>(</span><span class=k>new</span> <span
class=n>DoFn</span><span class=o><</span><span class=n>KV</span><span
class=o><</span><span class=n>String</span><span class=o>,</span> <span
class=n>ValueT</span><span class=o>>,</span> <span class=n>OutputT</spa [...]
+</span></span><span class=line><span class=cl> <span
class=nd>@StateId</span><span class=o>(</span><span
class=s>"state"</span><span class=o>)</span> <span
class=kd>private</span> <span class=kd>final</span> <span
class=n>StateSpec</span><span class=o><</span><span
class=n>OrderedListState</span><span class=o><</span><span
class=n>ValueT</span><span class=o>>></span> <span
class=n>uniqueElements</span> <span class=o>=</span> <span
class=n>StateSpecs</span><span class [...]
+</span></span><span class=line><span class=cl>
+</span></span><span class=line><span class=cl> <span
class=nd>@ProcessElement</span> <span class=kd>public</span> <span
class=kt>void</span> <span class=nf>process</span><span class=o>(</span>
+</span></span><span class=line><span class=cl> <span
class=nd>@Element</span> <span class=n>KV</span><span class=o><</span><span
class=n>String</span><span class=o>,</span> <span class=n>ValueT</span><span
class=o>></span> <span class=n>element</span><span class=o>,</span>
+</span></span><span class=line><span class=cl> <span
class=nd>@StateId</span><span class=o>(</span><span
class=s>"state"</span><span class=o>)</span> <span
class=n>SetState</span><span class=o><</span><span
class=n>ValueT</span><span class=o>></span> <span class=n>state</span><span
class=o>)</span> <span class=o>{</span>
+</span></span><span class=line><span class=cl> <span class=c1>// Add the
current element to the set state for this key.
+</span></span></span><span class=line><span class=cl><span class=c1></span>
<span class=n>state</span><span class=o>.</span><span class=na>add</span><span
class=o>(</span><span class=n>element</span><span class=o>.</span><span
class=na>getValue</span><span class=o>());</span>
+</span></span><span class=line><span class=cl> <span class=k>if</span>
<span class=o>(</span><span class=n>shouldFetch</span><span class=o>())</span>
<span class=o>{</span>
+</span></span><span class=line><span class=cl> <span class=c1>//
Occasionally we fetch and process the values.
+</span></span></span><span class=line><span class=cl><span class=c1></span>
<span class=n>Iterable</span><span class=o><</span><span
class=n>ValueT</span><span class=o>></span> <span class=n>values</span>
<span class=o>=</span> <span class=n>state</span><span class=o>.</span><span
class=na>read</span><span class=o>();</span>
+</span></span><span class=line><span class=cl> <span
class=n>processValues</span><span class=o>(</span><span
class=n>values</span><span class=o>);</span>
+</span></span><span class=line><span class=cl> <span
class=n>state</span><span class=o>.</span><span class=na>clear</span><span
class=o>();</span> <span class=c1>// Clear the state for this key.
+</span></span></span><span class=line><span class=cl><span class=c1></span>
<span class=o>}</span>
+</span></span><span class=line><span class=cl> <span class=o>}</span>
+</span></span><span class=line><span class=cl><span
class=o>}));</span></span></span></code></pre></div></div></div><div
class='language-py snippet'><div class="notebook-skip code-snippet"><a
class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom
title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div
class=highlight><pre tabindex=0 class=chroma><code class=language-py
data-lang=py><span class=line><span class=cl><span class=k>class</span> <span
class=nc>Ordered [...]
+</span></span><span class=line><span class=cl> <span
class=n>STATE_ELEMENTS</span> <span class=o>=</span> <span
class=n>OrderedListStateSpec</span><span class=p>(</span><span
class=s1>'buffer'</span><span class=p>,</span> <span
class=n>coders</span><span class=o>.</span><span class=n>ListCoder</span><span
class=p>())</span>
+</span></span><span class=line><span class=cl>
+</span></span><span class=line><span class=cl> <span class=k>def</span> <span
class=nf>process</span><span class=p>(</span><span class=bp>self</span><span
class=p>,</span> <span class=n>element_pair</span><span class=p>,</span> <span
class=n>state</span><span class=o>=</span><span class=n>DoFn</span><span
class=o>.</span><span class=n>StateParam</span><span class=p>(</span><span
class=n>STATE_ELEMENTS</span><span class=p>)):</span>
+</span></span><span class=line><span class=cl> <span
class=n>state</span><span class=o>.</span><span class=n>add</span><span
class=p>(</span><span class=n>element_pair</span><span class=p>[</span><span
class=mi>1</span><span class=p>])</span>
+</span></span><span class=line><span class=cl> <span class=k>if</span>
<span class=n>should_fetch</span><span class=p>():</span>
+</span></span><span class=line><span class=cl> <span
class=n>elements</span> <span class=o>=</span> <span class=nb>list</span><span
class=p>(</span><span class=n>state</span><span class=o>.</span><span
class=n>read</span><span class=p>())</span>
+</span></span><span class=line><span class=cl> <span
class=n>process_values</span><span class=p>(</span><span
class=n>elements</span><span class=p>)</span>
+</span></span><span class=line><span class=cl> <span
class=n>state</span><span class=o>.</span><span class=n>clear</span><span
class=p>()</span>
+</span></span><span class=line><span class=cl>
+</span></span><span class=line><span class=cl><span class=n>_</span> <span
class=o>=</span> <span class=p>(</span><span class=n>p</span> <span
class=o>|</span> <span class=s1>'Read per user'</span> <span
class=o>>></span> <span class=n>ReadPerUser</span><span class=p>()</span>
+</span></span><span class=line><span class=cl> <span class=o>|</span>
<span class=s1>'Set state pardo'</span> <span class=o>>></span>
<span class=n>beam</span><span class=o>.</span><span class=n>ParDo</span><span
class=p>(</span><span class=n>OrderedListStateDoFn</span><span
class=p>()))</span></span></span></code></pre></div></div></div></p><h3
id=deferred-state-reads>11.2. Deferred state reads</h3><p>When a
<code>DoFn</code> contains multiple state specifications, r [...]
on a state can cause the runner to perform a blocking read. Performing
multiple blocking reads in sequence adds latency
to element processing. If you know that a state will always be read, you can
annotate it as @AlwaysFetched, and then the
runner can prefetch all of the states necessary. For example:</p><div
class='language-java snippet'><div class="notebook-skip code-snippet"><a
class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom
title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div
class=highlight><pre tabindex=0 class=chroma><code class=language-java
data-lang=java><span class=line><span class=cl><span
class=n>PCollection</span><span class=o><</span><span class=n>KV</span><span
class=o> [...]
diff --git a/website/generated-content/get-started/index.xml
b/website/generated-content/get-started/index.xml
index a7a65423262..fb730ed91eb 100644
--- a/website/generated-content/get-started/index.xml
+++ b/website/generated-content/get-started/index.xml
@@ -5983,6 +5983,76 @@ java -cp target/word-count-beam-bundled-0.1.jar
org.apache.beam.examples.WordCou
</div>
</div>
</p>
+<p>For Windows PowerShell:</p>
+<p>
+<div class='runner-direct snippet'>
+<div class="notebook-skip code-snippet">
+<a class="copy" type="button" data-bs-toggle="tooltip"
data-bs-placement="bottom" title="Copy to clipboard">
+<img src="/images/copy-icon.svg"/>
+</a>
+<pre tabindex="0"><code class="language-direct"
data-lang="direct">.\gradlew clean execute -D
mainClass=org.apache.beam.examples.WordCount \
+--args=&#34;--inputFile=sample.txt
--output=counts&#34;</code></pre>
+</div>
+</div>
+<div class='runner-flink snippet'>
+<div class="notebook-skip code-snippet">
+<a class="copy" type="button" data-bs-toggle="tooltip"
data-bs-placement="bottom" title="Copy to clipboard">
+<img src="/images/copy-icon.svg"/>
+</a>
+<pre tabindex="0"><code class="language-flink" data-lang="flink">TODO:
document Flink on Gradle:
https://github.com/apache/beam/issues/21498</code></pre>
+</div>
+</div>
+<div class='runner-flinkCluster snippet'>
+<div class="notebook-skip code-snippet">
+<a class="copy" type="button" data-bs-toggle="tooltip"
data-bs-placement="bottom" title="Copy to clipboard">
+<img src="/images/copy-icon.svg"/>
+</a>
+<pre tabindex="0"><code class="language-flinkCluster"
data-lang="flinkCluster">TODO: document FlinkCluster on Gradle:
https://github.com/apache/beam/issues/21499</code></pre>
+</div>
+</div>
+<div class='runner-spark snippet'>
+<div class="notebook-skip code-snippet">
+<a class="copy" type="button" data-bs-toggle="tooltip"
data-bs-placement="bottom" title="Copy to clipboard">
+<img src="/images/copy-icon.svg"/>
+</a>
+<pre tabindex="0"><code class="language-spark" data-lang="spark">TODO:
document Spark on Gradle:
https://github.com/apache/beam/issues/21502</code></pre>
+</div>
+</div>
+<div class='runner-dataflow snippet'>
+<div class="notebook-skip code-snippet">
+<a class="copy" type="button" data-bs-toggle="tooltip"
data-bs-placement="bottom" title="Copy to clipboard">
+<img src="/images/copy-icon.svg"/>
+</a>
+<pre tabindex="0"><code class="language-dataflow"
data-lang="dataflow">.\gradlew clean execute
-DmainClass=org.apache.beam.examples.WordCount \
+--args=&#34;--project=&lt;your-gcp-project&gt;
--inputFile=gs://apache-beam-samples/shakespeare/* \
+--output=gs://&lt;your-gcs-bucket&gt;/counts
--runner=DataflowRunner&#34; -Pdataflow-runner</code></pre>
+</div>
+</div>
+<div class='runner-samza snippet'>
+<div class="notebook-skip code-snippet">
+<a class="copy" type="button" data-bs-toggle="tooltip"
data-bs-placement="bottom" title="Copy to clipboard">
+<img src="/images/copy-icon.svg"/>
+</a>
+<pre tabindex="0"><code class="language-samza" data-lang="samza">TODO:
document Samza on Gradle:
https://github.com/apache/beam/issues/21500</code></pre>
+</div>
+</div>
+<div class='runner-nemo snippet'>
+<div class="notebook-skip code-snippet">
+<a class="copy" type="button" data-bs-toggle="tooltip"
data-bs-placement="bottom" title="Copy to clipboard">
+<img src="/images/copy-icon.svg"/>
+</a>
+<pre tabindex="0"><code class="language-nemo" data-lang="nemo">TODO:
document Nemo on Gradle:
https://github.com/apache/beam/issues/21503</code></pre>
+</div>
+</div>
+<div class='runner-jet snippet'>
+<div class="notebook-skip code-snippet">
+<a class="copy" type="button" data-bs-toggle="tooltip"
data-bs-placement="bottom" title="Copy to clipboard">
+<img src="/images/copy-icon.svg"/>
+</a>
+<pre tabindex="0"><code class="language-jet" data-lang="jet">TODO:
document Jet on Gradle:
https://github.com/apache/beam/issues/21501</code></pre>
+</div>
+</div>
+</p>
<h2 id="inspect-the-results">Inspect the results</h2>
<p>After the pipeline has completed, you can view the output. There might be
multiple output files prefixed by <code>count</code>. The number of
output files is decided
diff --git a/website/generated-content/get-started/quickstart-java/index.html
b/website/generated-content/get-started/quickstart-java/index.html
index 960623d0a90..9f08df64d62 100644
--- a/website/generated-content/get-started/quickstart-java/index.html
+++ b/website/generated-content/get-started/quickstart-java/index.html
@@ -135,6 +135,9 @@ java -cp target/word-count-beam-bundled-0.1.jar
org.apache.beam.examples.WordCou
java -cp target/word-count-beam-bundled-0.1.jar
org.apache.beam.examples.WordCount `
--runner=JetRunner --jetLocalMode=3 --inputFile=$pwd/sample.txt
--output=counts</code></pre></div></div></p><h3
id=run-wordcount-using-gradle>Run WordCount using Gradle</h3><p>For Unix
shells:</p><p><div class='runner-direct snippet'><div class="notebook-skip
code-snippet"><a class=copy type=button data-bs-toggle=tooltip
data-bs-placement=bottom title="Copy to clipboard"><img
src=/images/copy-icon.svg></a><pre tabindex=0><code class=language-direct
data-lang=direct>gradle clean execu [...]
--args="--inputFile=sample.txt
--output=counts"</code></pre></div></div><div class='runner-flink
snippet'><div class="notebook-skip code-snippet"><a class=copy type=button
data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img
src=/images/copy-icon.svg></a><pre tabindex=0><code class=language-flink
data-lang=flink>TODO: document Flink on Gradle:
https://github.com/apache/beam/issues/21498</code></pre></div></div><div
class='runner-flinkCluster snippet' [...]
+ --args="--project=<your-gcp-project>
--inputFile=gs://apache-beam-samples/shakespeare/* \
+ --output=gs://<your-gcs-bucket>/counts --runner=DataflowRunner"
-Pdataflow-runner</code></pre></div></div><div class='runner-samza
snippet'><div class="notebook-skip code-snippet"><a class=copy type=button
data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img
src=/images/copy-icon.svg></a><pre tabindex=0><code class=language-samza
data-lang=samza>TODO: document Samza on Gradle:
https://github.com/apache/beam/issues/21500</code></pre></div></div><div [...]
+--args="--inputFile=sample.txt
--output=counts"</code></pre></div></div><div class='runner-flink
snippet'><div class="notebook-skip code-snippet"><a class=copy type=button
data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img
src=/images/copy-icon.svg></a><pre tabindex=0><code class=language-flink
data-lang=flink>TODO: document Flink on Gradle:
https://github.com/apache/beam/issues/21498</code></pre></div></div><div
class='runner-flinkCluster snippet'><di [...]
--args="--project=<your-gcp-project>
--inputFile=gs://apache-beam-samples/shakespeare/* \
--output=gs://<your-gcs-bucket>/counts --runner=DataflowRunner"
-Pdataflow-runner</code></pre></div></div><div class='runner-samza
snippet'><div class="notebook-skip code-snippet"><a class=copy type=button
data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img
src=/images/copy-icon.svg></a><pre tabindex=0><code class=language-samza
data-lang=samza>TODO: document Samza on Gradle:
https://github.com/apache/beam/issues/21500</code></pre></div></div><div [...]
multiple output files prefixed by <code>count</code>. The number of output
files is decided
diff --git a/website/generated-content/sitemap.xml
b/website/generated-content/sitemap.xml
index 49b275922db..c1e79879d58 100644
--- a/website/generated-content/sitemap.xml
+++ b/website/generated-content/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>/blog/beam-2.64.0/</loc><lastmod>2025-05-04T15:09:37-07:00</lastmod></url><url><loc>/categories/blog/</loc><lastmod>2025-05-04T15:09:37-07:00</lastmod></url><url><loc>/blog/</loc><lastmod>2025-05-04T15:09:37-07:00</lastmod></url><url><loc>/categories/</loc><lastmod>2025-05-04T15:09:37-07:00</lastmod></url><url><loc>/catego
[...]
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>/blog/beam-2.64.0/</loc><lastmod>2025-05-04T18:52:55-07:00</lastmod></url><url><loc>/categories/blog/</loc><lastmod>2025-05-04T18:52:55-07:00</lastmod></url><url><loc>/blog/</loc><lastmod>2025-05-04T18:52:55-07:00</lastmod></url><url><loc>/categories/</loc><lastmod>2025-05-04T18:52:55-07:00</lastmod></url><url><loc>/catego
[...]
\ No newline at end of file