You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by gi...@apache.org on 2020/05/28 03:12:45 UTC

[beam] branch asf-site updated: Publishing website 2020/05/28 03:12:32 at commit c4f03a8

This is an automated email from the ASF dual-hosted git repository.

git-site-role 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 2881e17  Publishing website 2020/05/28 03:12:32 at commit c4f03a8
2881e17 is described below

commit 2881e177707b0b00aa1ff294b1a0f1833bf57a76
Author: jenkins <bu...@apache.org>
AuthorDate: Thu May 28 03:12:33 2020 +0000

    Publishing website 2020/05/28 03:12:32 at commit c4f03a8
---
 website/generated-content/.htaccess                |   2 +-
 .../mapreduce => blog/beam-2.21.0}/index.html      | 208 +++++-----
 website/generated-content/blog/index.html          |  29 ++
 website/generated-content/blog/index.xml           | 145 ++++++-
 .../review-input-streaming-connectors/index.html   |  22 +-
 .../blog/splittable-do-fn/index.html               |  10 +-
 .../generated-content/blog/test-stream/index.html  |   2 +-
 .../generated-content/categories/blog/index.xml    | 145 ++++++-
 website/generated-content/categories/index.xml     |   2 +-
 website/generated-content/contribute/index.xml     |   4 +-
 .../contribute/ptransform-style-guide/index.html   |   4 +-
 .../sql/calcite/aggregate-functions/index.html     |   4 +-
 .../dsls/sql/calcite/data-types/index.html         |   4 +-
 .../dsls/sql/calcite/lexical-structure/index.html  |   4 +-
 .../dsls/sql/calcite/overview/index.html           |   4 +-
 .../dsls/sql/calcite/query-syntax/index.html       |   4 +-
 .../dsls/sql/calcite/scalar-functions/index.html   |   4 +-
 .../extensions/create-external-table/index.html    |   4 +-
 .../dsls/sql/extensions/joins/index.html           |   4 +-
 .../dsls/sql/extensions/set/index.html             |   4 +-
 .../extensions/user-defined-functions/index.html   |   4 +-
 .../extensions/windowing-and-triggering/index.html |   4 +-
 .../documentation/dsls/sql/overview/index.html     |  10 +-
 .../documentation/dsls/sql/shell/index.html        |   4 +-
 .../documentation/dsls/sql/walkthrough/index.html  |  10 +-
 .../sql/zetasql/aggregate-functions/index.html     |   4 +-
 .../sql/zetasql/conditional-expressions/index.html |   4 +-
 .../dsls/sql/zetasql/conversion-rules/index.html   |   4 +-
 .../dsls/sql/zetasql/data-types/index.html         |   4 +-
 .../dsls/sql/zetasql/lexical/index.html            |   4 +-
 .../dsls/sql/zetasql/math-functions/index.html     |   4 +-
 .../dsls/sql/zetasql/operators/index.html          |   4 +-
 .../dsls/sql/zetasql/overview/index.html           |   4 +-
 .../dsls/sql/zetasql/query-syntax/index.html       |   4 +-
 .../dsls/sql/zetasql/string-functions/index.html   |   4 +-
 .../dsls/sql/zetasql/syntax/index.html             |   4 +-
 website/generated-content/documentation/index.xml  |  50 +--
 .../io/built-in/google-bigquery/index.html         |  14 +-
 .../documentation/io/built-in/index.html           |   4 +
 .../documentation/io/built-in/parquet/index.html   |   8 +-
 .../io/developing-io-python/index.html             |   6 +-
 .../pipelines/test-your-pipeline/index.html        |   4 +-
 .../documentation/programming-guide/index.html     |  16 +-
 .../documentation/runners/dataflow/index.html      |   6 +-
 .../documentation/runners/direct/index.html        |  14 +-
 .../documentation/runners/flink/index.html         |   6 +-
 .../documentation/runners/gearpump/index.html      |   4 +-
 .../documentation/runners/jstorm/index.html        |   2 +-
 .../documentation/runners/mapreduce/index.html     |   2 +-
 .../documentation/runners/samza/index.html         |   2 +-
 .../documentation/runners/spark/index.html         |   2 +-
 .../sdks/feature-comparison/index.html             |   4 +-
 .../documentation/sdks/go/index.html               |   4 +-
 .../sdks/java-dependencies/index.html              |   8 +-
 .../documentation/sdks/java-extensions/index.html  |   4 +-
 .../documentation/sdks/java-thirdparty/index.html  |   4 +-
 .../documentation/sdks/java/euphoria/index.html    |   6 +-
 .../documentation/sdks/java/index.html             |   4 +-
 .../sdks/java/testing/nexmark/index.html           |   8 +-
 .../sdks/python-dependencies/index.html            |   6 +-
 .../sdks/python-pipeline-dependencies/index.html   |   4 +-
 .../documentation/sdks/python-streaming/index.html |   4 +-
 .../sdks/python-type-safety/index.html             |   4 +-
 .../documentation/sdks/python/index.html           |   4 +-
 website/generated-content/feed.xml                 | 434 ++++++---------------
 .../get-started/downloads/index.html               |  22 +-
 website/generated-content/get-started/index.xml    |  29 +-
 .../get-started/quickstart-java/index.html         |   4 +-
 .../get-started/wordcount-example/index.html       |   4 +-
 website/generated-content/index.html               |  14 +-
 website/generated-content/sitemap.xml              |  61 +--
 71 files changed, 768 insertions(+), 689 deletions(-)

diff --git a/website/generated-content/.htaccess b/website/generated-content/.htaccess
index 2ccc960..916c755 100644
--- a/website/generated-content/.htaccess
+++ b/website/generated-content/.htaccess
@@ -21,4 +21,4 @@ RewriteRule ^(.*)$ https://beam.apache.org/$1 [L,R=301]
 # The following redirect maintains the previously supported URLs.
 RedirectMatch permanent "/documentation/sdks/(javadoc|pydoc)(.*)" "https://beam.apache.org/releases/$1$2"
 # Keep this updated to point to the current release.
-RedirectMatch "/releases/([^/]+)/current(.*)" "https://beam.apache.org/releases/$1/2.20.0$2"
+RedirectMatch "/releases/([^/]+)/current(.*)" "https://beam.apache.org/releases/$1/2.21.0$2"
diff --git a/website/generated-content/documentation/runners/mapreduce/index.html b/website/generated-content/blog/beam-2.21.0/index.html
similarity index 53%
copy from website/generated-content/documentation/runners/mapreduce/index.html
copy to website/generated-content/blog/beam-2.21.0/index.html
index 4d62d27..8c75817 100644
--- a/website/generated-content/documentation/runners/mapreduce/index.html
+++ b/website/generated-content/blog/beam-2.21.0/index.html
@@ -9,7 +9,7 @@
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1">
 
-<title>Apache Hadoop MapReduce Runner</title>
+<title>Apache Beam 2.21.0</title>
 <meta name="description" content="Apache Beam is an open source, unified model and set of language-specific SDKs for defining and executing data processing workflows, and also data ingestion and integration flows, supporting Enterprise Integration Patterns (EIPs) and Domain Specific Languages (DSLs). Dataflow pipelines simplify the mechanics of large-scale batch and streaming data processing and can run on a number of runtimes like Apache Flink, Apache Spark, and Google Cloud Dataflow (a [...]
  
 <link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400" rel="stylesheet">
@@ -34,7 +34,7 @@
 <script src="/js/page-nav.js"></script>
 
 <link rel="alternate" type="application/rss+xml" title="Apache Beam" href="/feed.xml">
-<link rel="canonical" href="/documentation/runners/mapreduce/" data-proofer-ignore>
+<link rel="canonical" href="/blog/beam-2.21.0/" data-proofer-ignore>
 <link rel="shortcut icon" type="image/x-icon" href="/images/favicon.ico">
 <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.4.1/css/all.css" integrity="sha384-5sAR7xN1Nv6T6+dT2mhtzEpVJvfS3NScPQTrOxhwjIuvcA67KV2R5Jz6kr4abQsz" crossorigin="anonymous">
  
@@ -47,7 +47,7 @@
   ga('send', 'pageview');
 </script>
 </head>
-<body class="body" data-spy="scroll" data-target=".page-nav" data-offset="0">
+<body class="body">
   
 
 <nav class="header navbar navbar-fixed-top">
@@ -121,7 +121,7 @@
         </li>
         <li>
           
-          <a href="https://github.com/apache/beam/edit/master/website/www/site/content/en/documentation/runners/mapreduce.md" data-proofer-ignore>
+          <a href="https://github.com/apache/beam/edit/master/website/www/site/content/en/blog/beam-2.21.0.md" data-proofer-ignore>
             <i class="far fa-edit fa-lg" alt="Edit on GitHub" title="Edit on GitHub"></i>
           </a>
         </li>
@@ -129,111 +129,129 @@
     </div>
 </nav>
 
-  <div class="clearfix container-main-content">
-    <div class="section-nav closed" data-offset-top="90" data-offset-bottom="500">
-      <span class="section-nav-back glyphicon glyphicon-menu-left"></span>
-      <nav>
-        <ul class="section-nav-list" data-section-nav>
-          
-
-<li><span class="section-nav-list-main-title">Runners</span></li>
-<li><a href="/documentation/runners/capability-matrix/">Capability Matrix</a></li>
-<li><a href="/documentation/runners/direct/">Direct Runner</a></li>
-<li><a href="/documentation/runners/apex/">Apache Apex</a></li>
-<li><a href="/documentation/runners/flink/">Apache Flink</a></li>
-<li><a href="/documentation/runners/gearpump/">Apache Gearpump</a></li>
-<li><a href="/documentation/runners/nemo/">Apache Nemo</a></li>
-<li><a href="/documentation/runners/samza/">Apache Samza</a></li>
-<li><a href="/documentation/runners/spark/">Apache Spark</a></li>
-<li><a href="/documentation/runners/dataflow/">Google Cloud Dataflow</a></li>
-<li><a href="/documentation/runners/jet/">Hazelcast Jet</a></li>
-
-        </ul>
-      </nav>
-    </div>
+  <div class="body__contained">
+    
+    
+    <article class="post" itemscope itemtype="http://schema.org/BlogPosting">
 
-    <nav class="page-nav clearfix" data-offset-top="90" data-offset-bottom="500">
-      <nav id="TableOfContents">
-  <ul>
-    <li><a href="#apache-hadoop-mapreduce-runner-prerequisites-and-setup">Apache Hadoop MapReduce Runner prerequisites and setup</a></li>
-    <li><a href="#deploying-apache-hadoop-mapreduce-with-your-application">Deploying Apache Hadoop MapReduce with your application</a></li>
-    <li><a href="#pipeline-options-for-the-apache-hadoop-mapreduce-runner">Pipeline options for the Apache Hadoop MapReduce Runner</a></li>
-  </ul>
-</nav>
-    </nav>
+      <header class="post-header">
+        <h1 class="post-title" itemprop="name headline">Apache Beam 2.21.0</h1>
+        <p class="post-meta"><time datetime="2020-05-27T00:00:01-08:00" itemprop="datePublished">May 27, 2020</time>
+         •
+            
+            
+                
+                
+                  
+            
+        
+        </p>
+      </header>
 
-    <div class="body__contained body__section-nav">
-      <!--
+      <div class="post-content" itemprop="articleBody">
+        <!--
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
-
 http://www.apache.org/licenses/LICENSE-2.0
-
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 -->
-<h1 id="using-the-apache-hadoop-mapreduce-runner">Using the Apache Hadoop MapReduce Runner</h1>
-<p>The Apache Hadoop MapReduce Runner can be used to execute Beam pipelines using <a href="https://hadoop.apache.org/">Apache Hadoop</a>.</p>
-<p>The <a href="/documentation/runners/capability-matrix/">Beam Capability Matrix</a> documents the currently supported capabilities of the Apache Hadoop MapReduce Runner.</p>
-<h2 id="apache-hadoop-mapreduce-runner-prerequisites-and-setup">Apache Hadoop MapReduce Runner prerequisites and setup</h2>
-<p>You need to have an Apache Hadoop environment with either <a href="https://hadoop.apache.org/docs/r1.2.1/single_node_setup.html">Single Node Setup</a> or <a href="https://hadoop.apache.org/docs/r1.2.1/cluster_setup.html">Cluster Setup</a></p>
-<p>The Apache Hadoop MapReduce runner currently supports Apache Hadoop version 2.8.1.</p>
-<p>You can add a dependency on the latest version of the Apache Hadoop MapReduce runner by adding the following to your pom.xml:</p>
-<pre><code>&lt;dependency&gt;
-  &lt;groupId&gt;org.apache.beam&lt;/groupId&gt;
-  &lt;artifactId&gt;beam-runners-mapreduce&lt;/artifactId&gt;
-  &lt;version&gt;2.20.0&lt;/version&gt;
-&lt;/dependency&gt;
-</code></pre><h2 id="deploying-apache-hadoop-mapreduce-with-your-application">Deploying Apache Hadoop MapReduce with your application</h2>
-<p>To execute in a local Hadoop environment, use this command:</p>
-<pre><code>$ mvn exec:java -Dexec.mainClass=org.apache.beam.examples.WordCount \
-    -Pmapreduce-runner \
-    -Dexec.args=&quot;--runner=MapReduceRunner \
-      --inputFile=/path/to/pom.xml \
-      --output=/path/to/counts \
-      --fileOutputDir=&lt;directory for intermediate outputs&gt;&quot;
-</code></pre><p>To execute in a Hadoop cluster, package your program along with all dependencies in a fat jar.</p>
-<p>If you are following through the <a href="/get-started/quickstart-java/">Beam Java SDK Quickstart</a>, you can run this command:</p>
-<pre><code>$ mvn package -Pflink-runner
-</code></pre><p>For actually running the pipeline you would use this command</p>
-<pre><code>$ yarn jar word-count-beam-bundled-0.1.jar \
-    org.apache.beam.examples.WordCount \
-    --runner=MapReduceRunner \
-    --inputFile=/path/to/pom.xml \
-      --output=/path/to/counts \
-      --fileOutputDir=&lt;directory for intermediate outputs&gt;&quot;
-</code></pre><h2 id="pipeline-options-for-the-apache-hadoop-mapreduce-runner">Pipeline options for the Apache Hadoop MapReduce Runner</h2>
-<p>When executing your pipeline with the Apache Hadoop MapReduce Runner, you should consider the following pipeline options.</p>
-<table class="table table-bordered">
-<tr>
-  <th>Field</th>
-  <th>Description</th>
-  <th>Default Value</th>
-</tr>
-<tr>
-  <td><code>runner</code></td>
-  <td>The pipeline runner to use. This option allows you to determine the pipeline runner at runtime.</td>
-  <td>Set to <code>MapReduceRunner</code> to run using Apache Hadoop MapReduce.</td>
-</tr>
-<tr>
-  <td><code>jarClass</code></td>
-  <td>The jar class of the user Beam program.</td>
-  <td>JarClassInstanceFactory.class</td>
-</tr>
-<tr>
-  <td><code>fileOutputDir</code></td>
-  <td>The directory for output files.</td>
-  <td>"/tmp/mapreduce/"</td>
-</tr>
-</table>
+<p>We are happy to present the new 2.21.0 release of Beam. This release includes both improvements and new functionality.
+See the <a href="/get-started/downloads/#xxxx-xxxx">download page</a> for this release.
+For more information on changes in 2.21.0, check out the
+<a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12319527&amp;version=12347143">detailed release notes</a>.</p>
+<h2 id="ios">I/Os</h2>
+<ul>
+<li>Python: Deprecated module <code>apache_beam.io.gcp.datastore.v1</code> has been removed
+as the client it uses is out of date and does not support Python 3
+(<a href="https://issues.apache.org/jira/browse/BEAM-9529">BEAM-9529</a>).
+Please migrate your code to use
+<a href="https://beam.apache.org/releases/pydoc/current/apache_beam.io.gcp.datastore.v1new.datastoreio.html">apache_beam.io.gcp.datastore.<strong>v1new</strong></a>.
+See the updated
+<a href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/cookbook/datastore_wordcount.py">datastore_wordcount</a>
+for example usage.</li>
+<li>Python SDK: Added integration tests and updated batch write functionality for Google Cloud Spanner transform (<a href="https://issues.apache.org/jira/browse/BEAM-8949">BEAM-8949</a>).</li>
+</ul>
+<h2 id="new-features--improvements">New Features / Improvements</h2>
+<ul>
+<li>
+<p>Python SDK will now use Python 3 type annotations as pipeline type hints.
+(<a href="https://github.com/apache/beam/pull/10717">#10717</a>)</p>
+<p>If you suspect that this feature is causing your pipeline to fail, calling
+<code>apache_beam.typehints.disable_type_annotations()</code> before pipeline creation
+will disable is completely, and decorating specific functions (such as
+<code>process()</code>) with <code>@apache_beam.typehints.no_annotations</code> will disable it
+for that function.</p>
+<p>More details will be in
+<a href="https://beam.apache.org/documentation/sdks/python-type-safety/">Ensuring Python Type Safety</a>
+and an upcoming
+<a href="https://beam.apache.org/blog/python/typing/2020/03/06/python-typing.html">blog post</a>.</p>
+</li>
+<li>
+<p>Java SDK: Introducing the concept of options in Beam Schema’s. These options add extra
+context to fields and schemas. This replaces the current Beam metadata that is present
+in a FieldType only, options are available in fields and row schemas. Schema options are
+fully typed and can contain complex rows. <em>Remark: Schema aware is still experimental.</em>
+(<a href="https://issues.apache.org/jira/browse/BEAM-9035">BEAM-9035</a>)</p>
+</li>
+<li>
+<p>Java SDK: The protobuf extension is fully schema aware and also includes protobuf option
+conversion to beam schema options. <em>Remark: Schema aware is still experimental.</em>
+(<a href="https://issues.apache.org/jira/browse/BEAM-9044">BEAM-9044</a>)</p>
+</li>
+<li>
+<p>Added ability to write to BigQuery via Avro file loads (Python) (<a href="https://issues.apache.org/jira/browse/BEAM-8841">BEAM-8841</a>)</p>
+<p>By default, file loads will be done using JSON, but it is possible to
+specify the temp_file_format parameter to perform file exports with AVRO.
+AVRO-based file loads work by exporting Python types into Avro types, so
+to switch to Avro-based loads, you will need to change your data types
+from Json-compatible types (string-type dates and timestamp, long numeric
+values as strings) into Python native types that are written to Avro
+(Python&rsquo;s date, datetime types, decimal, etc). For more information
+see <a href="https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro#avro_conversions">https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro#avro_conversions</a>.</p>
+</li>
+<li>
+<p>Added integration of Java SDK with Google Cloud AI VideoIntelligence service
+(<a href="https://issues.apache.org/jira/browse/BEAM-9147">BEAM-9147</a>)</p>
+</li>
+<li>
+<p>Added integration of Java SDK with Google Cloud AI natural language processing API
+(<a href="https://issues.apache.org/jira/browse/BEAM-9634">BEAM-9634</a>)</p>
+</li>
+<li>
+<p><code>docker-pull-licenses</code> tag was introduced. Licenses/notices of third party dependencies will be added to the docker images when <code>docker-pull-licenses</code> was set.
+The files are added to <code>/opt/apache/beam/third_party_licenses/</code>.
+By default, no licenses/notices are added to the docker images. (<a href="https://issues.apache.org/jira/browse/BEAM-9136">BEAM-9136</a>)</p>
+</li>
+</ul>
+<h2 id="breaking-changes">Breaking Changes</h2>
+<ul>
+<li>Dataflow runner now requires the <code>--region</code> option to be set, unless a default value is set in the environment (<a href="https://issues.apache.org/jira/browse/BEAM-9199">BEAM-9199</a>). See <a href="https://cloud.google.com/dataflow/docs/concepts/regional-endpoints">here</a> for more details.</li>
+<li>HBaseIO.ReadAll now requires a PCollection of HBaseIO.Read objects instead of HBaseQuery objects (<a href="https://issues.apache.org/jira/browse/BEAM-9279">BEAM-9279</a>).</li>
+<li>ProcessContext.updateWatermark has been removed in favor of using a WatermarkEstimator (<a href="https://issues.apache.org/jira/browse/BEAM-9430">BEAM-9430</a>).</li>
+<li>Coder inference for PCollection of Row objects has been disabled (<a href="https://issues.apache.org/jira/browse/BEAM-9569">BEAM-9569</a>).</li>
+<li>Go SDK docker images are no longer released until further notice.</li>
+</ul>
+<h2 id="deprecations">Deprecations</h2>
+<ul>
+<li>Java SDK: Beam Schema FieldType.getMetadata is now deprecated and is replaced by the Beam
+Schema Options, it will be removed in version <code>2.23.0</code>. (<a href="https://issues.apache.org/jira/browse/BEAM-9704">BEAM-9704</a>)</li>
+<li>The <code>--zone</code> option in the Dataflow runner is now deprecated. Please use <code>--worker_zone</code> instead. (<a href="https://issues.apache.org/jira/browse/BEAM-9716">BEAM-9716</a>)</li>
+</ul>
+<h2 id="list-of-contributors">List of Contributors</h2>
+<p>According to git shortlog, the following people contributed to the 2.21.0 release. Thank you to all contributors!</p>
+<p>Aaron Meihm, Adrian Eka, Ahmet Altay, AldairCoronel, Alex Van Boxel, Alexey Romanenko, Andrew Crites, Andrew Pilloud, Ankur Goenka, Badrul (Taki) Chowdhury, Bartok Jozsef, Boyuan Zhang, Brian Hulette, brucearctor, bumblebee-coming, Chad Dombrova, Chamikara Jayalath, Chie Hayashida, Chris Gorgolewski, Chuck Yang, Colm O hEigeartaigh, Curtis &ldquo;Fjord&rdquo; Hawthorne, Daniel Mills, Daniel Oliveira, David Yan, Elias Djurfeldt, Emiliano Capoccia, Etienne Chauchot, Fernando Diaz, Filip [...]
 
-    </div>
-  </div>
+      </div>
 
+    </article>
+
+  </div>
+  
 
 <footer class="footer">
   <div class="footer__contained">
diff --git a/website/generated-content/blog/index.html b/website/generated-content/blog/index.html
index a6e32c1..b449b47 100644
--- a/website/generated-content/blog/index.html
+++ b/website/generated-content/blog/index.html
@@ -138,6 +138,35 @@
     
         
 
+        <h3><a class="post-link" href="/blog/beam-2.21.0/">Apache Beam 2.21.0</a></h3>
+        <p><i>
+            May 27, 2020
+             •
+                
+                
+                    
+                    
+                    
+                        ibzib
+                    
+                
+            
+        </i></p>
+
+        We are happy to present the new 2.
+
+        
+            <p>
+                <a class="btn btn-default btn-sm" href="/blog/beam-2.21.0/" role="button">
+                Read more&nbsp;<span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span>
+                </a>
+            </p>
+        
+
+        <hr>
+    
+        
+
         <h3><a class="post-link" href="/blog/beam-summit-digital-2020/">Beam Summit Digital Is Coming - Register Now!</a></h3>
         <p><i>
             May 8, 2020
diff --git a/website/generated-content/blog/index.xml b/website/generated-content/blog/index.xml
index d5ad1b6..b5b95b4 100644
--- a/website/generated-content/blog/index.xml
+++ b/website/generated-content/blog/index.xml
@@ -4,7 +4,7 @@
     <link>/blog/</link>
     <description>Recent content in Blogs on Apache Beam</description>
     <generator>Hugo -- gohugo.io</generator>
-    <lastBuildDate>Fri, 08 May 2020 00:00:01 -0800</lastBuildDate>
+    <lastBuildDate>Wed, 27 May 2020 00:00:01 -0800</lastBuildDate>
     
 	  <atom:link href="/blog/index.xml" rel="self" type="application/rss+xml" />
     
@@ -15,6 +15,115 @@
     
     
     <item>
+      <title>Blog: Apache Beam 2.21.0</title>
+      <link>/blog/beam-2.21.0/</link>
+      <pubDate>Wed, 27 May 2020 00:00:01 -0800</pubDate>
+      
+      <guid>/blog/beam-2.21.0/</guid>
+      <description>
+        
+        
+        &lt;!--
+Licensed under the Apache License, Version 2.0 (the &#34;License&#34;);
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an &#34;AS IS&#34; BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+--&gt;
+&lt;p&gt;We are happy to present the new 2.21.0 release of Beam. This release includes both improvements and new functionality.
+See the &lt;a href=&#34;/get-started/downloads/#xxxx-xxxx&#34;&gt;download page&lt;/a&gt; for this release.
+For more information on changes in 2.21.0, check out the
+&lt;a href=&#34;https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12319527&amp;amp;version=12347143&#34;&gt;detailed release notes&lt;/a&gt;.&lt;/p&gt;
+&lt;h2 id=&#34;ios&#34;&gt;I/Os&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;Python: Deprecated module &lt;code&gt;apache_beam.io.gcp.datastore.v1&lt;/code&gt; has been removed
+as the client it uses is out of date and does not support Python 3
+(&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9529&#34;&gt;BEAM-9529&lt;/a&gt;).
+Please migrate your code to use
+&lt;a href=&#34;https://beam.apache.org/releases/pydoc/current/apache_beam.io.gcp.datastore.v1new.datastoreio.html&#34;&gt;apache_beam.io.gcp.datastore.&lt;strong&gt;v1new&lt;/strong&gt;&lt;/a&gt;.
+See the updated
+&lt;a href=&#34;https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/cookbook/datastore_wordcount.py&#34;&gt;datastore_wordcount&lt;/a&gt;
+for example usage.&lt;/li&gt;
+&lt;li&gt;Python SDK: Added integration tests and updated batch write functionality for Google Cloud Spanner transform (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-8949&#34;&gt;BEAM-8949&lt;/a&gt;).&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;new-features--improvements&#34;&gt;New Features / Improvements&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;
+&lt;p&gt;Python SDK will now use Python 3 type annotations as pipeline type hints.
+(&lt;a href=&#34;https://github.com/apache/beam/pull/10717&#34;&gt;#10717&lt;/a&gt;)&lt;/p&gt;
+&lt;p&gt;If you suspect that this feature is causing your pipeline to fail, calling
+&lt;code&gt;apache_beam.typehints.disable_type_annotations()&lt;/code&gt; before pipeline creation
+will disable is completely, and decorating specific functions (such as
+&lt;code&gt;process()&lt;/code&gt;) with &lt;code&gt;@apache_beam.typehints.no_annotations&lt;/code&gt; will disable it
+for that function.&lt;/p&gt;
+&lt;p&gt;More details will be in
+&lt;a href=&#34;https://beam.apache.org/documentation/sdks/python-type-safety/&#34;&gt;Ensuring Python Type Safety&lt;/a&gt;
+and an upcoming
+&lt;a href=&#34;https://beam.apache.org/blog/python/typing/2020/03/06/python-typing.html&#34;&gt;blog post&lt;/a&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Java SDK: Introducing the concept of options in Beam Schema’s. These options add extra
+context to fields and schemas. This replaces the current Beam metadata that is present
+in a FieldType only, options are available in fields and row schemas. Schema options are
+fully typed and can contain complex rows. &lt;em&gt;Remark: Schema aware is still experimental.&lt;/em&gt;
+(&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9035&#34;&gt;BEAM-9035&lt;/a&gt;)&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Java SDK: The protobuf extension is fully schema aware and also includes protobuf option
+conversion to beam schema options. &lt;em&gt;Remark: Schema aware is still experimental.&lt;/em&gt;
+(&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9044&#34;&gt;BEAM-9044&lt;/a&gt;)&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Added ability to write to BigQuery via Avro file loads (Python) (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-8841&#34;&gt;BEAM-8841&lt;/a&gt;)&lt;/p&gt;
+&lt;p&gt;By default, file loads will be done using JSON, but it is possible to
+specify the temp_file_format parameter to perform file exports with AVRO.
+AVRO-based file loads work by exporting Python types into Avro types, so
+to switch to Avro-based loads, you will need to change your data types
+from Json-compatible types (string-type dates and timestamp, long numeric
+values as strings) into Python native types that are written to Avro
+(Python&amp;rsquo;s date, datetime types, decimal, etc). For more information
+see &lt;a href=&#34;https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro#avro_conversions&#34;&gt;https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro#avro_conversions&lt;/a&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Added integration of Java SDK with Google Cloud AI VideoIntelligence service
+(&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9147&#34;&gt;BEAM-9147&lt;/a&gt;)&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Added integration of Java SDK with Google Cloud AI natural language processing API
+(&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9634&#34;&gt;BEAM-9634&lt;/a&gt;)&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;&lt;code&gt;docker-pull-licenses&lt;/code&gt; tag was introduced. Licenses/notices of third party dependencies will be added to the docker images when &lt;code&gt;docker-pull-licenses&lt;/code&gt; was set.
+The files are added to &lt;code&gt;/opt/apache/beam/third_party_licenses/&lt;/code&gt;.
+By default, no licenses/notices are added to the docker images. (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9136&#34;&gt;BEAM-9136&lt;/a&gt;)&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;breaking-changes&#34;&gt;Breaking Changes&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;Dataflow runner now requires the &lt;code&gt;--region&lt;/code&gt; option to be set, unless a default value is set in the environment (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9199&#34;&gt;BEAM-9199&lt;/a&gt;). See &lt;a href=&#34;https://cloud.google.com/dataflow/docs/concepts/regional-endpoints&#34;&gt;here&lt;/a&gt; for more details.&lt;/li&gt;
+&lt;li&gt;HBaseIO.ReadAll now requires a PCollection of HBaseIO.Read objects instead of HBaseQuery objects (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9279&#34;&gt;BEAM-9279&lt;/a&gt;).&lt;/li&gt;
+&lt;li&gt;ProcessContext.updateWatermark has been removed in favor of using a WatermarkEstimator (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9430&#34;&gt;BEAM-9430&lt;/a&gt;).&lt;/li&gt;
+&lt;li&gt;Coder inference for PCollection of Row objects has been disabled (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9569&#34;&gt;BEAM-9569&lt;/a&gt;).&lt;/li&gt;
+&lt;li&gt;Go SDK docker images are no longer released until further notice.&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;deprecations&#34;&gt;Deprecations&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;Java SDK: Beam Schema FieldType.getMetadata is now deprecated and is replaced by the Beam
+Schema Options, it will be removed in version &lt;code&gt;2.23.0&lt;/code&gt;. (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9704&#34;&gt;BEAM-9704&lt;/a&gt;)&lt;/li&gt;
+&lt;li&gt;The &lt;code&gt;--zone&lt;/code&gt; option in the Dataflow runner is now deprecated. Please use &lt;code&gt;--worker_zone&lt;/code&gt; instead. (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9716&#34;&gt;BEAM-9716&lt;/a&gt;)&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;list-of-contributors&#34;&gt;List of Contributors&lt;/h2&gt;
+&lt;p&gt;According to git shortlog, the following people contributed to the 2.21.0 release. Thank you to all contributors!&lt;/p&gt;
+&lt;p&gt;Aaron Meihm, Adrian Eka, Ahmet Altay, AldairCoronel, Alex Van Boxel, Alexey Romanenko, Andrew Crites, Andrew Pilloud, Ankur Goenka, Badrul (Taki) Chowdhury, Bartok Jozsef, Boyuan Zhang, Brian Hulette, brucearctor, bumblebee-coming, Chad Dombrova, Chamikara Jayalath, Chie Hayashida, Chris Gorgolewski, Chuck Yang, Colm O hEigeartaigh, Curtis &amp;ldquo;Fjord&amp;rdquo; Hawthorne, Daniel Mills, Daniel Oliveira, David Yan, Elias Djurfeldt, Emiliano Capoccia, Etienne Chauchot, Fernan [...]
+
+      </description>
+    </item>
+    
+    <item>
       <title>Blog: Beam Summit Digital Is Coming - Register Now!</title>
       <link>/blog/beam-summit-digital-2020/</link>
       <pubDate>Fri, 08 May 2020 00:00:01 -0800</pubDate>
@@ -2417,7 +2526,7 @@ limitations under the License.
    &lt;/td&gt;
    &lt;td&gt;Local&lt;br&gt;(Using the &lt;code&gt;file://&lt;/code&gt; URI)
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/TextIO.html&#34;&gt;TextIO&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/TextIO.html&#34;&gt;TextIO&lt;/a&gt;
    &lt;/td&gt;
    &lt;td&gt;&lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spark/streaming/StreamingContext.html#textFileStream-java.lang.String-&#34;&gt;textFileStream&lt;/a&gt;&lt;br&gt;(Spark treats most Unix systems as HDFS-compatible, but the location should be accessible from all nodes)
    &lt;/td&gt;
@@ -2425,7 +2534,7 @@ limitations under the License.
   &lt;tr&gt;
    &lt;td&gt;HDFS&lt;br&gt;(Using the &lt;code&gt;hdfs://&lt;/code&gt; URI)
    &lt;/td&gt;
-    &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/FileIO.html&#34;&gt;FileIO&lt;/a&gt; + &lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/hdfs/HadoopFileSystemOptions.html&#34;&gt;HadoopFileSystemOptions&lt;/a&gt;
+    &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/FileIO.html&#34;&gt;FileIO&lt;/a&gt; + &lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/hdfs/HadoopFileSystemOptions.html&#34;&gt;HadoopFileSystemOptions&lt;/a&gt;
    &lt;/td&gt;
    &lt;td&gt;&lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spark/streaming/util/HdfsUtils.html&#34;&gt;HdfsUtils&lt;/a&gt;
    &lt;/td&gt;
@@ -2435,7 +2544,7 @@ limitations under the License.
    &lt;/td&gt;
    &lt;td&gt;Cloud Storage&lt;br&gt;(Using the &lt;code&gt;gs://&lt;/code&gt; URI)
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/FileIO.html&#34;&gt;FileIO&lt;/a&gt; + &lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/extensions/gcp/options/GcsOptions.html&#34;&gt;GcsOptions&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/FileIO.html&#34;&gt;FileIO&lt;/a&gt; + &lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/extensions/gcp/options/GcsOptions.html&#34;&gt;GcsOptions&lt;/a&gt;
    &lt;/td&gt;
    &lt;td rowspan=&#34;2&#34; &gt;&lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spark/SparkContext.html#hadoopConfiguration--&#34;&gt;hadoopConfiguration&lt;/a&gt;
 and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spark/streaming/StreamingContext.html#textFileStream-java.lang.String-&#34;&gt;textFileStream&lt;/a&gt;
@@ -2444,7 +2553,7 @@ and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spa
   &lt;tr&gt;
    &lt;td&gt;S3&lt;br&gt;(Using the &lt;code&gt;s3://&lt;/code&gt; URI)
    &lt;/td&gt;
-    &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/FileIO.html&#34;&gt;FileIO&lt;/a&gt; + &lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/aws/options/S3Options.html&#34;&gt;S3Options&lt;/a&gt;
+    &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/FileIO.html&#34;&gt;FileIO&lt;/a&gt; + &lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/aws/options/S3Options.html&#34;&gt;S3Options&lt;/a&gt;
    &lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
@@ -2452,7 +2561,7 @@ and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spa
    &lt;/td&gt;
    &lt;td&gt;Kafka
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/kafka/KafkaIO.html&#34;&gt;KafkaIO&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/kafka/KafkaIO.html&#34;&gt;KafkaIO&lt;/a&gt;
    &lt;/td&gt;
    &lt;td&gt;&lt;a href=&#34;https://spark.apache.org/docs/latest/streaming-kafka-0-10-integration.html&#34;&gt;spark-streaming-kafka&lt;/a&gt;
    &lt;/td&gt;
@@ -2460,7 +2569,7 @@ and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spa
   &lt;tr&gt;
    &lt;td&gt;Kinesis
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/kinesis/KinesisIO.html&#34;&gt;KinesisIO&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/kinesis/KinesisIO.html&#34;&gt;KinesisIO&lt;/a&gt;
    &lt;/td&gt;
    &lt;td&gt;&lt;a href=&#34;https://spark.apache.org/docs/latest/streaming-kinesis-integration.html&#34;&gt;spark-streaming-kinesis&lt;/a&gt;
    &lt;/td&gt;
@@ -2468,7 +2577,7 @@ and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spa
   &lt;tr&gt;
    &lt;td&gt;Cloud Pub/Sub
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/gcp/pubsub/PubsubIO.html&#34;&gt;PubsubIO&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/gcp/pubsub/PubsubIO.html&#34;&gt;PubsubIO&lt;/a&gt;
    &lt;/td&gt;
    &lt;td&gt;&lt;a href=&#34;https://github.com/apache/bahir/tree/master/streaming-pubsub&#34;&gt;spark-streaming-pubsub&lt;/a&gt; from &lt;a href=&#34;https://bahir.apache.org&#34;&gt;Apache Bahir&lt;/a&gt;
    &lt;/td&gt;
@@ -2504,7 +2613,7 @@ and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spa
    &lt;/td&gt;
    &lt;td&gt;Local
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.textio.html&#34;&gt;io.textio&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.textio.html&#34;&gt;io.textio&lt;/a&gt;
    &lt;/td&gt;
    &lt;td&gt;&lt;a href=&#34;https://spark.apache.org/docs/latest/api/python/pyspark.streaming.html#pyspark.streaming.StreamingContext.textFileStream&#34;&gt;textFileStream&lt;/a&gt;
    &lt;/td&gt;
@@ -2512,7 +2621,7 @@ and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spa
   &lt;tr&gt;
    &lt;td&gt;HDFS
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.hadoopfilesystem.html&#34;&gt;io.hadoopfilesystem&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.hadoopfilesystem.html&#34;&gt;io.hadoopfilesystem&lt;/a&gt;
    &lt;/td&gt;
    &lt;td&gt;&lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spark/SparkContext.html#hadoopConfiguration--&#34;&gt;hadoopConfiguration&lt;/a&gt; (Access through &lt;code&gt;sc._jsc&lt;/code&gt; with Py4J)
 and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/python/pyspark.streaming.html#pyspark.streaming.StreamingContext.textFileStream&#34;&gt;textFileStream&lt;/a&gt;
@@ -2523,7 +2632,7 @@ and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/python/pyspark.stre
    &lt;/td&gt;
    &lt;td&gt;Google Cloud Storage
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.gcp.gcsio.html&#34;&gt;io.gcp.gcsio&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.gcp.gcsio.html&#34;&gt;io.gcp.gcsio&lt;/a&gt;
    &lt;/td&gt;
    &lt;td rowspan=&#34;2&#34; &gt;&lt;a href=&#34;https://spark.apache.org/docs/latest/api/python/pyspark.streaming.html#pyspark.streaming.StreamingContext.textFileStream&#34;&gt;textFileStream&lt;/a&gt;
    &lt;/td&gt;
@@ -2555,7 +2664,7 @@ and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/python/pyspark.stre
   &lt;tr&gt;
    &lt;td&gt;Cloud Pub/Sub
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.gcp.pubsub.html&#34;&gt;io.gcp.pubsub&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.gcp.pubsub.html&#34;&gt;io.gcp.pubsub&lt;/a&gt;
    &lt;/td&gt;
    &lt;td&gt;N/A
    &lt;/td&gt;
@@ -3680,21 +3789,21 @@ has other limitations that make it insufficient for this task&lt;/em&gt;).&lt;/p
 &lt;/ul&gt;
 &lt;h2 id=&#34;beam-source-api&#34;&gt;Beam Source API&lt;/h2&gt;
 &lt;p&gt;Apache Beam historically provides a Source API
-(&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/BoundedSource.html&#34;&gt;BoundedSource&lt;/a&gt;
+(&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/BoundedSource.html&#34;&gt;BoundedSource&lt;/a&gt;
 and
-&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/UnboundedSource.html&#34;&gt;UnboundedSource&lt;/a&gt;) which does
+&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/UnboundedSource.html&#34;&gt;UnboundedSource&lt;/a&gt;) which does
 not have these limitations and allows development of efficient data sources for
 batch and streaming systems. Pipelines use this API via the
-&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/Read.html&#34;&gt;&lt;code&gt;Read.from(Source)&lt;/code&gt;&lt;/a&gt; built-in &lt;code&gt;PTransform&lt;/code&gt;.&lt;/p&gt;
+&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/Read.html&#34;&gt;&lt;code&gt;Read.from(Source)&lt;/code&gt;&lt;/a&gt; built-in &lt;code&gt;PTransform&lt;/code&gt;.&lt;/p&gt;
 &lt;p&gt;The Source API is largely similar to that of most other data processing
 frameworks, and allows the system to read data in parallel using multiple
 workers, as well as checkpoint and resume reading from an unbounded data source.
 Additionally, the Beam
-&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/BoundedSource.html&#34;&gt;&lt;code&gt;BoundedSource&lt;/code&gt;&lt;/a&gt;
+&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/BoundedSource.html&#34;&gt;&lt;code&gt;BoundedSource&lt;/code&gt;&lt;/a&gt;
 API provides advanced features such as progress reporting and &lt;a href=&#34;/blog/2016/05/18/splitAtFraction-method.html&#34;&gt;dynamic
 rebalancing&lt;/a&gt;
 (which together enable autoscaling), and
-&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/UnboundedSource.html&#34;&gt;&lt;code&gt;UnboundedSource&lt;/code&gt;&lt;/a&gt; supports
+&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/UnboundedSource.html&#34;&gt;&lt;code&gt;UnboundedSource&lt;/code&gt;&lt;/a&gt; supports
 reporting the source&amp;rsquo;s watermark and backlog &lt;em&gt;(until SDF, we believed that
 &amp;ldquo;batch&amp;rdquo; and &amp;ldquo;streaming&amp;rdquo; data sources are fundamentally different and thus
 require fundamentally different APIs)&lt;/em&gt;.&lt;/p&gt;
@@ -5271,7 +5380,7 @@ to the watermark and the progress of processing time, which could not previously
 be controlled within a test.&lt;/p&gt;
 &lt;h2 id=&#34;writing-deterministic-tests-to-emulate-nondeterminism&#34;&gt;Writing Deterministic Tests to Emulate Nondeterminism&lt;/h2&gt;
 &lt;p&gt;The Beam testing infrastructure provides the
-&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/testing/PAssert.html&#34;&gt;PAssert&lt;/a&gt;
+&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/testing/PAssert.html&#34;&gt;PAssert&lt;/a&gt;
 methods, which assert properties about the contents of a PCollection from within
 a pipeline. We have expanded this infrastructure to include
 &lt;a href=&#34;https://github.com/apache/beam/blob/master/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/TestStream.java&#34;&gt;TestStream&lt;/a&gt;,
diff --git a/website/generated-content/blog/review-input-streaming-connectors/index.html b/website/generated-content/blog/review-input-streaming-connectors/index.html
index a34d3bf..8105d6c 100644
--- a/website/generated-content/blog/review-input-streaming-connectors/index.html
+++ b/website/generated-content/blog/review-input-streaming-connectors/index.html
@@ -190,7 +190,7 @@ limitations under the License.
    </td>
    <td>Local<br>(Using the <code>file://</code> URI)
    </td>
-   <td><a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/TextIO.html">TextIO</a>
+   <td><a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/TextIO.html">TextIO</a>
    </td>
    <td><a href="https://spark.apache.org/docs/latest/api/java/org/apache/spark/streaming/StreamingContext.html#textFileStream-java.lang.String-">textFileStream</a><br>(Spark treats most Unix systems as HDFS-compatible, but the location should be accessible from all nodes)
    </td>
@@ -198,7 +198,7 @@ limitations under the License.
   <tr>
    <td>HDFS<br>(Using the <code>hdfs://</code> URI)
    </td>
-    <td><a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/FileIO.html">FileIO</a> + <a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/hdfs/HadoopFileSystemOptions.html">HadoopFileSystemOptions</a>
+    <td><a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/FileIO.html">FileIO</a> + <a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/hdfs/HadoopFileSystemOptions.html">HadoopFileSystemOptions</a>
    </td>
    <td><a href="https://spark.apache.org/docs/latest/api/java/org/apache/spark/streaming/util/HdfsUtils.html">HdfsUtils</a>
    </td>
@@ -208,7 +208,7 @@ limitations under the License.
    </td>
    <td>Cloud Storage<br>(Using the <code>gs://</code> URI)
    </td>
-   <td><a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/FileIO.html">FileIO</a> + <a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/extensions/gcp/options/GcsOptions.html">GcsOptions</a>
+   <td><a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/FileIO.html">FileIO</a> + <a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/extensions/gcp/options/GcsOptions.html">GcsOptions</a>
    </td>
    <td rowspan="2" ><a href="https://spark.apache.org/docs/latest/api/java/org/apache/spark/SparkContext.html#hadoopConfiguration--">hadoopConfiguration</a>
 and <a href="https://spark.apache.org/docs/latest/api/java/org/apache/spark/streaming/StreamingContext.html#textFileStream-java.lang.String-">textFileStream</a>
@@ -217,7 +217,7 @@ and <a href="https://spark.apache.org/docs/latest/api/java/org/apache/spark/stre
   <tr>
    <td>S3<br>(Using the <code>s3://</code> URI)
    </td>
-    <td><a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/FileIO.html">FileIO</a> + <a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/aws/options/S3Options.html">S3Options</a>
+    <td><a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/FileIO.html">FileIO</a> + <a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/aws/options/S3Options.html">S3Options</a>
    </td>
   </tr>
   <tr>
@@ -225,7 +225,7 @@ and <a href="https://spark.apache.org/docs/latest/api/java/org/apache/spark/stre
    </td>
    <td>Kafka
    </td>
-   <td><a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/kafka/KafkaIO.html">KafkaIO</a>
+   <td><a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/kafka/KafkaIO.html">KafkaIO</a>
    </td>
    <td><a href="https://spark.apache.org/docs/latest/streaming-kafka-0-10-integration.html">spark-streaming-kafka</a>
    </td>
@@ -233,7 +233,7 @@ and <a href="https://spark.apache.org/docs/latest/api/java/org/apache/spark/stre
   <tr>
    <td>Kinesis
    </td>
-   <td><a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/kinesis/KinesisIO.html">KinesisIO</a>
+   <td><a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/kinesis/KinesisIO.html">KinesisIO</a>
    </td>
    <td><a href="https://spark.apache.org/docs/latest/streaming-kinesis-integration.html">spark-streaming-kinesis</a>
    </td>
@@ -241,7 +241,7 @@ and <a href="https://spark.apache.org/docs/latest/api/java/org/apache/spark/stre
   <tr>
    <td>Cloud Pub/Sub
    </td>
-   <td><a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/gcp/pubsub/PubsubIO.html">PubsubIO</a>
+   <td><a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/gcp/pubsub/PubsubIO.html">PubsubIO</a>
    </td>
    <td><a href="https://github.com/apache/bahir/tree/master/streaming-pubsub">spark-streaming-pubsub</a> from <a href="https://bahir.apache.org">Apache Bahir</a>
    </td>
@@ -277,7 +277,7 @@ and <a href="https://spark.apache.org/docs/latest/api/java/org/apache/spark/stre
    </td>
    <td>Local
    </td>
-   <td><a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.textio.html">io.textio</a>
+   <td><a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.textio.html">io.textio</a>
    </td>
    <td><a href="https://spark.apache.org/docs/latest/api/python/pyspark.streaming.html#pyspark.streaming.StreamingContext.textFileStream">textFileStream</a>
    </td>
@@ -285,7 +285,7 @@ and <a href="https://spark.apache.org/docs/latest/api/java/org/apache/spark/stre
   <tr>
    <td>HDFS
    </td>
-   <td><a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.hadoopfilesystem.html">io.hadoopfilesystem</a>
+   <td><a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.hadoopfilesystem.html">io.hadoopfilesystem</a>
    </td>
    <td><a href="https://spark.apache.org/docs/latest/api/java/org/apache/spark/SparkContext.html#hadoopConfiguration--">hadoopConfiguration</a> (Access through <code>sc._jsc</code> with Py4J)
 and <a href="https://spark.apache.org/docs/latest/api/python/pyspark.streaming.html#pyspark.streaming.StreamingContext.textFileStream">textFileStream</a>
@@ -296,7 +296,7 @@ and <a href="https://spark.apache.org/docs/latest/api/python/pyspark.streaming.h
    </td>
    <td>Google Cloud Storage
    </td>
-   <td><a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.gcp.gcsio.html">io.gcp.gcsio</a>
+   <td><a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.gcp.gcsio.html">io.gcp.gcsio</a>
    </td>
    <td rowspan="2" ><a href="https://spark.apache.org/docs/latest/api/python/pyspark.streaming.html#pyspark.streaming.StreamingContext.textFileStream">textFileStream</a>
    </td>
@@ -328,7 +328,7 @@ and <a href="https://spark.apache.org/docs/latest/api/python/pyspark.streaming.h
   <tr>
    <td>Cloud Pub/Sub
    </td>
-   <td><a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.gcp.pubsub.html">io.gcp.pubsub</a>
+   <td><a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.gcp.pubsub.html">io.gcp.pubsub</a>
    </td>
    <td>N/A
    </td>
diff --git a/website/generated-content/blog/splittable-do-fn/index.html b/website/generated-content/blog/splittable-do-fn/index.html
index ffd01d4..1a0fc70 100644
--- a/website/generated-content/blog/splittable-do-fn/index.html
+++ b/website/generated-content/blog/splittable-do-fn/index.html
@@ -216,21 +216,21 @@ has other limitations that make it insufficient for this task</em>).</p>
 </ul>
 <h2 id="beam-source-api">Beam Source API</h2>
 <p>Apache Beam historically provides a Source API
-(<a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/BoundedSource.html">BoundedSource</a>
+(<a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/BoundedSource.html">BoundedSource</a>
 and
-<a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/UnboundedSource.html">UnboundedSource</a>) which does
+<a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/UnboundedSource.html">UnboundedSource</a>) which does
 not have these limitations and allows development of efficient data sources for
 batch and streaming systems. Pipelines use this API via the
-<a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/Read.html"><code>Read.from(Source)</code></a> built-in <code>PTransform</code>.</p>
+<a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/Read.html"><code>Read.from(Source)</code></a> built-in <code>PTransform</code>.</p>
 <p>The Source API is largely similar to that of most other data processing
 frameworks, and allows the system to read data in parallel using multiple
 workers, as well as checkpoint and resume reading from an unbounded data source.
 Additionally, the Beam
-<a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/BoundedSource.html"><code>BoundedSource</code></a>
+<a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/BoundedSource.html"><code>BoundedSource</code></a>
 API provides advanced features such as progress reporting and <a href="/blog/2016/05/18/splitAtFraction-method.html">dynamic
 rebalancing</a>
 (which together enable autoscaling), and
-<a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/UnboundedSource.html"><code>UnboundedSource</code></a> supports
+<a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/UnboundedSource.html"><code>UnboundedSource</code></a> supports
 reporting the source&rsquo;s watermark and backlog <em>(until SDF, we believed that
 &ldquo;batch&rdquo; and &ldquo;streaming&rdquo; data sources are fundamentally different and thus
 require fundamentally different APIs)</em>.</p>
diff --git a/website/generated-content/blog/test-stream/index.html b/website/generated-content/blog/test-stream/index.html
index bf48ff4..c913df5 100644
--- a/website/generated-content/blog/test-stream/index.html
+++ b/website/generated-content/blog/test-stream/index.html
@@ -206,7 +206,7 @@ to the watermark and the progress of processing time, which could not previously
 be controlled within a test.</p>
 <h2 id="writing-deterministic-tests-to-emulate-nondeterminism">Writing Deterministic Tests to Emulate Nondeterminism</h2>
 <p>The Beam testing infrastructure provides the
-<a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/testing/PAssert.html">PAssert</a>
+<a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/testing/PAssert.html">PAssert</a>
 methods, which assert properties about the contents of a PCollection from within
 a pipeline. We have expanded this infrastructure to include
 <a href="https://github.com/apache/beam/blob/master/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/TestStream.java">TestStream</a>,
diff --git a/website/generated-content/categories/blog/index.xml b/website/generated-content/categories/blog/index.xml
index a727374..c46e249 100644
--- a/website/generated-content/categories/blog/index.xml
+++ b/website/generated-content/categories/blog/index.xml
@@ -4,7 +4,7 @@
     <link>/categories/blog/</link>
     <description>Recent content in blog on Apache Beam</description>
     <generator>Hugo -- gohugo.io</generator>
-    <lastBuildDate>Fri, 08 May 2020 00:00:01 -0800</lastBuildDate>
+    <lastBuildDate>Wed, 27 May 2020 00:00:01 -0800</lastBuildDate>
     
 	  <atom:link href="/categories/blog/index.xml" rel="self" type="application/rss+xml" />
     
@@ -15,6 +15,115 @@
     
     
     <item>
+      <title>Blog: Apache Beam 2.21.0</title>
+      <link>/blog/beam-2.21.0/</link>
+      <pubDate>Wed, 27 May 2020 00:00:01 -0800</pubDate>
+      
+      <guid>/blog/beam-2.21.0/</guid>
+      <description>
+        
+        
+        &lt;!--
+Licensed under the Apache License, Version 2.0 (the &#34;License&#34;);
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an &#34;AS IS&#34; BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+--&gt;
+&lt;p&gt;We are happy to present the new 2.21.0 release of Beam. This release includes both improvements and new functionality.
+See the &lt;a href=&#34;/get-started/downloads/#xxxx-xxxx&#34;&gt;download page&lt;/a&gt; for this release.
+For more information on changes in 2.21.0, check out the
+&lt;a href=&#34;https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12319527&amp;amp;version=12347143&#34;&gt;detailed release notes&lt;/a&gt;.&lt;/p&gt;
+&lt;h2 id=&#34;ios&#34;&gt;I/Os&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;Python: Deprecated module &lt;code&gt;apache_beam.io.gcp.datastore.v1&lt;/code&gt; has been removed
+as the client it uses is out of date and does not support Python 3
+(&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9529&#34;&gt;BEAM-9529&lt;/a&gt;).
+Please migrate your code to use
+&lt;a href=&#34;https://beam.apache.org/releases/pydoc/current/apache_beam.io.gcp.datastore.v1new.datastoreio.html&#34;&gt;apache_beam.io.gcp.datastore.&lt;strong&gt;v1new&lt;/strong&gt;&lt;/a&gt;.
+See the updated
+&lt;a href=&#34;https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/cookbook/datastore_wordcount.py&#34;&gt;datastore_wordcount&lt;/a&gt;
+for example usage.&lt;/li&gt;
+&lt;li&gt;Python SDK: Added integration tests and updated batch write functionality for Google Cloud Spanner transform (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-8949&#34;&gt;BEAM-8949&lt;/a&gt;).&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;new-features--improvements&#34;&gt;New Features / Improvements&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;
+&lt;p&gt;Python SDK will now use Python 3 type annotations as pipeline type hints.
+(&lt;a href=&#34;https://github.com/apache/beam/pull/10717&#34;&gt;#10717&lt;/a&gt;)&lt;/p&gt;
+&lt;p&gt;If you suspect that this feature is causing your pipeline to fail, calling
+&lt;code&gt;apache_beam.typehints.disable_type_annotations()&lt;/code&gt; before pipeline creation
+will disable is completely, and decorating specific functions (such as
+&lt;code&gt;process()&lt;/code&gt;) with &lt;code&gt;@apache_beam.typehints.no_annotations&lt;/code&gt; will disable it
+for that function.&lt;/p&gt;
+&lt;p&gt;More details will be in
+&lt;a href=&#34;https://beam.apache.org/documentation/sdks/python-type-safety/&#34;&gt;Ensuring Python Type Safety&lt;/a&gt;
+and an upcoming
+&lt;a href=&#34;https://beam.apache.org/blog/python/typing/2020/03/06/python-typing.html&#34;&gt;blog post&lt;/a&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Java SDK: Introducing the concept of options in Beam Schema’s. These options add extra
+context to fields and schemas. This replaces the current Beam metadata that is present
+in a FieldType only, options are available in fields and row schemas. Schema options are
+fully typed and can contain complex rows. &lt;em&gt;Remark: Schema aware is still experimental.&lt;/em&gt;
+(&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9035&#34;&gt;BEAM-9035&lt;/a&gt;)&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Java SDK: The protobuf extension is fully schema aware and also includes protobuf option
+conversion to beam schema options. &lt;em&gt;Remark: Schema aware is still experimental.&lt;/em&gt;
+(&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9044&#34;&gt;BEAM-9044&lt;/a&gt;)&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Added ability to write to BigQuery via Avro file loads (Python) (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-8841&#34;&gt;BEAM-8841&lt;/a&gt;)&lt;/p&gt;
+&lt;p&gt;By default, file loads will be done using JSON, but it is possible to
+specify the temp_file_format parameter to perform file exports with AVRO.
+AVRO-based file loads work by exporting Python types into Avro types, so
+to switch to Avro-based loads, you will need to change your data types
+from Json-compatible types (string-type dates and timestamp, long numeric
+values as strings) into Python native types that are written to Avro
+(Python&amp;rsquo;s date, datetime types, decimal, etc). For more information
+see &lt;a href=&#34;https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro#avro_conversions&#34;&gt;https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro#avro_conversions&lt;/a&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Added integration of Java SDK with Google Cloud AI VideoIntelligence service
+(&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9147&#34;&gt;BEAM-9147&lt;/a&gt;)&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Added integration of Java SDK with Google Cloud AI natural language processing API
+(&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9634&#34;&gt;BEAM-9634&lt;/a&gt;)&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;&lt;code&gt;docker-pull-licenses&lt;/code&gt; tag was introduced. Licenses/notices of third party dependencies will be added to the docker images when &lt;code&gt;docker-pull-licenses&lt;/code&gt; was set.
+The files are added to &lt;code&gt;/opt/apache/beam/third_party_licenses/&lt;/code&gt;.
+By default, no licenses/notices are added to the docker images. (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9136&#34;&gt;BEAM-9136&lt;/a&gt;)&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;breaking-changes&#34;&gt;Breaking Changes&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;Dataflow runner now requires the &lt;code&gt;--region&lt;/code&gt; option to be set, unless a default value is set in the environment (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9199&#34;&gt;BEAM-9199&lt;/a&gt;). See &lt;a href=&#34;https://cloud.google.com/dataflow/docs/concepts/regional-endpoints&#34;&gt;here&lt;/a&gt; for more details.&lt;/li&gt;
+&lt;li&gt;HBaseIO.ReadAll now requires a PCollection of HBaseIO.Read objects instead of HBaseQuery objects (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9279&#34;&gt;BEAM-9279&lt;/a&gt;).&lt;/li&gt;
+&lt;li&gt;ProcessContext.updateWatermark has been removed in favor of using a WatermarkEstimator (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9430&#34;&gt;BEAM-9430&lt;/a&gt;).&lt;/li&gt;
+&lt;li&gt;Coder inference for PCollection of Row objects has been disabled (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9569&#34;&gt;BEAM-9569&lt;/a&gt;).&lt;/li&gt;
+&lt;li&gt;Go SDK docker images are no longer released until further notice.&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;deprecations&#34;&gt;Deprecations&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;Java SDK: Beam Schema FieldType.getMetadata is now deprecated and is replaced by the Beam
+Schema Options, it will be removed in version &lt;code&gt;2.23.0&lt;/code&gt;. (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9704&#34;&gt;BEAM-9704&lt;/a&gt;)&lt;/li&gt;
+&lt;li&gt;The &lt;code&gt;--zone&lt;/code&gt; option in the Dataflow runner is now deprecated. Please use &lt;code&gt;--worker_zone&lt;/code&gt; instead. (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9716&#34;&gt;BEAM-9716&lt;/a&gt;)&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;list-of-contributors&#34;&gt;List of Contributors&lt;/h2&gt;
+&lt;p&gt;According to git shortlog, the following people contributed to the 2.21.0 release. Thank you to all contributors!&lt;/p&gt;
+&lt;p&gt;Aaron Meihm, Adrian Eka, Ahmet Altay, AldairCoronel, Alex Van Boxel, Alexey Romanenko, Andrew Crites, Andrew Pilloud, Ankur Goenka, Badrul (Taki) Chowdhury, Bartok Jozsef, Boyuan Zhang, Brian Hulette, brucearctor, bumblebee-coming, Chad Dombrova, Chamikara Jayalath, Chie Hayashida, Chris Gorgolewski, Chuck Yang, Colm O hEigeartaigh, Curtis &amp;ldquo;Fjord&amp;rdquo; Hawthorne, Daniel Mills, Daniel Oliveira, David Yan, Elias Djurfeldt, Emiliano Capoccia, Etienne Chauchot, Fernan [...]
+
+      </description>
+    </item>
+    
+    <item>
       <title>Blog: Beam Summit Digital Is Coming - Register Now!</title>
       <link>/blog/beam-summit-digital-2020/</link>
       <pubDate>Fri, 08 May 2020 00:00:01 -0800</pubDate>
@@ -2417,7 +2526,7 @@ limitations under the License.
    &lt;/td&gt;
    &lt;td&gt;Local&lt;br&gt;(Using the &lt;code&gt;file://&lt;/code&gt; URI)
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/TextIO.html&#34;&gt;TextIO&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/TextIO.html&#34;&gt;TextIO&lt;/a&gt;
    &lt;/td&gt;
    &lt;td&gt;&lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spark/streaming/StreamingContext.html#textFileStream-java.lang.String-&#34;&gt;textFileStream&lt;/a&gt;&lt;br&gt;(Spark treats most Unix systems as HDFS-compatible, but the location should be accessible from all nodes)
    &lt;/td&gt;
@@ -2425,7 +2534,7 @@ limitations under the License.
   &lt;tr&gt;
    &lt;td&gt;HDFS&lt;br&gt;(Using the &lt;code&gt;hdfs://&lt;/code&gt; URI)
    &lt;/td&gt;
-    &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/FileIO.html&#34;&gt;FileIO&lt;/a&gt; + &lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/hdfs/HadoopFileSystemOptions.html&#34;&gt;HadoopFileSystemOptions&lt;/a&gt;
+    &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/FileIO.html&#34;&gt;FileIO&lt;/a&gt; + &lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/hdfs/HadoopFileSystemOptions.html&#34;&gt;HadoopFileSystemOptions&lt;/a&gt;
    &lt;/td&gt;
    &lt;td&gt;&lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spark/streaming/util/HdfsUtils.html&#34;&gt;HdfsUtils&lt;/a&gt;
    &lt;/td&gt;
@@ -2435,7 +2544,7 @@ limitations under the License.
    &lt;/td&gt;
    &lt;td&gt;Cloud Storage&lt;br&gt;(Using the &lt;code&gt;gs://&lt;/code&gt; URI)
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/FileIO.html&#34;&gt;FileIO&lt;/a&gt; + &lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/extensions/gcp/options/GcsOptions.html&#34;&gt;GcsOptions&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/FileIO.html&#34;&gt;FileIO&lt;/a&gt; + &lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/extensions/gcp/options/GcsOptions.html&#34;&gt;GcsOptions&lt;/a&gt;
    &lt;/td&gt;
    &lt;td rowspan=&#34;2&#34; &gt;&lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spark/SparkContext.html#hadoopConfiguration--&#34;&gt;hadoopConfiguration&lt;/a&gt;
 and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spark/streaming/StreamingContext.html#textFileStream-java.lang.String-&#34;&gt;textFileStream&lt;/a&gt;
@@ -2444,7 +2553,7 @@ and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spa
   &lt;tr&gt;
    &lt;td&gt;S3&lt;br&gt;(Using the &lt;code&gt;s3://&lt;/code&gt; URI)
    &lt;/td&gt;
-    &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/FileIO.html&#34;&gt;FileIO&lt;/a&gt; + &lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/aws/options/S3Options.html&#34;&gt;S3Options&lt;/a&gt;
+    &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/FileIO.html&#34;&gt;FileIO&lt;/a&gt; + &lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/aws/options/S3Options.html&#34;&gt;S3Options&lt;/a&gt;
    &lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
@@ -2452,7 +2561,7 @@ and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spa
    &lt;/td&gt;
    &lt;td&gt;Kafka
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/kafka/KafkaIO.html&#34;&gt;KafkaIO&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/kafka/KafkaIO.html&#34;&gt;KafkaIO&lt;/a&gt;
    &lt;/td&gt;
    &lt;td&gt;&lt;a href=&#34;https://spark.apache.org/docs/latest/streaming-kafka-0-10-integration.html&#34;&gt;spark-streaming-kafka&lt;/a&gt;
    &lt;/td&gt;
@@ -2460,7 +2569,7 @@ and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spa
   &lt;tr&gt;
    &lt;td&gt;Kinesis
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/kinesis/KinesisIO.html&#34;&gt;KinesisIO&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/kinesis/KinesisIO.html&#34;&gt;KinesisIO&lt;/a&gt;
    &lt;/td&gt;
    &lt;td&gt;&lt;a href=&#34;https://spark.apache.org/docs/latest/streaming-kinesis-integration.html&#34;&gt;spark-streaming-kinesis&lt;/a&gt;
    &lt;/td&gt;
@@ -2468,7 +2577,7 @@ and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spa
   &lt;tr&gt;
    &lt;td&gt;Cloud Pub/Sub
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/gcp/pubsub/PubsubIO.html&#34;&gt;PubsubIO&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/gcp/pubsub/PubsubIO.html&#34;&gt;PubsubIO&lt;/a&gt;
    &lt;/td&gt;
    &lt;td&gt;&lt;a href=&#34;https://github.com/apache/bahir/tree/master/streaming-pubsub&#34;&gt;spark-streaming-pubsub&lt;/a&gt; from &lt;a href=&#34;https://bahir.apache.org&#34;&gt;Apache Bahir&lt;/a&gt;
    &lt;/td&gt;
@@ -2504,7 +2613,7 @@ and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spa
    &lt;/td&gt;
    &lt;td&gt;Local
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.textio.html&#34;&gt;io.textio&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.textio.html&#34;&gt;io.textio&lt;/a&gt;
    &lt;/td&gt;
    &lt;td&gt;&lt;a href=&#34;https://spark.apache.org/docs/latest/api/python/pyspark.streaming.html#pyspark.streaming.StreamingContext.textFileStream&#34;&gt;textFileStream&lt;/a&gt;
    &lt;/td&gt;
@@ -2512,7 +2621,7 @@ and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spa
   &lt;tr&gt;
    &lt;td&gt;HDFS
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.hadoopfilesystem.html&#34;&gt;io.hadoopfilesystem&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.hadoopfilesystem.html&#34;&gt;io.hadoopfilesystem&lt;/a&gt;
    &lt;/td&gt;
    &lt;td&gt;&lt;a href=&#34;https://spark.apache.org/docs/latest/api/java/org/apache/spark/SparkContext.html#hadoopConfiguration--&#34;&gt;hadoopConfiguration&lt;/a&gt; (Access through &lt;code&gt;sc._jsc&lt;/code&gt; with Py4J)
 and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/python/pyspark.streaming.html#pyspark.streaming.StreamingContext.textFileStream&#34;&gt;textFileStream&lt;/a&gt;
@@ -2523,7 +2632,7 @@ and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/python/pyspark.stre
    &lt;/td&gt;
    &lt;td&gt;Google Cloud Storage
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.gcp.gcsio.html&#34;&gt;io.gcp.gcsio&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.gcp.gcsio.html&#34;&gt;io.gcp.gcsio&lt;/a&gt;
    &lt;/td&gt;
    &lt;td rowspan=&#34;2&#34; &gt;&lt;a href=&#34;https://spark.apache.org/docs/latest/api/python/pyspark.streaming.html#pyspark.streaming.StreamingContext.textFileStream&#34;&gt;textFileStream&lt;/a&gt;
    &lt;/td&gt;
@@ -2555,7 +2664,7 @@ and &lt;a href=&#34;https://spark.apache.org/docs/latest/api/python/pyspark.stre
   &lt;tr&gt;
    &lt;td&gt;Cloud Pub/Sub
    &lt;/td&gt;
-   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.gcp.pubsub.html&#34;&gt;io.gcp.pubsub&lt;/a&gt;
+   &lt;td&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.gcp.pubsub.html&#34;&gt;io.gcp.pubsub&lt;/a&gt;
    &lt;/td&gt;
    &lt;td&gt;N/A
    &lt;/td&gt;
@@ -3680,21 +3789,21 @@ has other limitations that make it insufficient for this task&lt;/em&gt;).&lt;/p
 &lt;/ul&gt;
 &lt;h2 id=&#34;beam-source-api&#34;&gt;Beam Source API&lt;/h2&gt;
 &lt;p&gt;Apache Beam historically provides a Source API
-(&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/BoundedSource.html&#34;&gt;BoundedSource&lt;/a&gt;
+(&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/BoundedSource.html&#34;&gt;BoundedSource&lt;/a&gt;
 and
-&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/UnboundedSource.html&#34;&gt;UnboundedSource&lt;/a&gt;) which does
+&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/UnboundedSource.html&#34;&gt;UnboundedSource&lt;/a&gt;) which does
 not have these limitations and allows development of efficient data sources for
 batch and streaming systems. Pipelines use this API via the
-&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/Read.html&#34;&gt;&lt;code&gt;Read.from(Source)&lt;/code&gt;&lt;/a&gt; built-in &lt;code&gt;PTransform&lt;/code&gt;.&lt;/p&gt;
+&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/Read.html&#34;&gt;&lt;code&gt;Read.from(Source)&lt;/code&gt;&lt;/a&gt; built-in &lt;code&gt;PTransform&lt;/code&gt;.&lt;/p&gt;
 &lt;p&gt;The Source API is largely similar to that of most other data processing
 frameworks, and allows the system to read data in parallel using multiple
 workers, as well as checkpoint and resume reading from an unbounded data source.
 Additionally, the Beam
-&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/BoundedSource.html&#34;&gt;&lt;code&gt;BoundedSource&lt;/code&gt;&lt;/a&gt;
+&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/BoundedSource.html&#34;&gt;&lt;code&gt;BoundedSource&lt;/code&gt;&lt;/a&gt;
 API provides advanced features such as progress reporting and &lt;a href=&#34;/blog/2016/05/18/splitAtFraction-method.html&#34;&gt;dynamic
 rebalancing&lt;/a&gt;
 (which together enable autoscaling), and
-&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/UnboundedSource.html&#34;&gt;&lt;code&gt;UnboundedSource&lt;/code&gt;&lt;/a&gt; supports
+&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/UnboundedSource.html&#34;&gt;&lt;code&gt;UnboundedSource&lt;/code&gt;&lt;/a&gt; supports
 reporting the source&amp;rsquo;s watermark and backlog &lt;em&gt;(until SDF, we believed that
 &amp;ldquo;batch&amp;rdquo; and &amp;ldquo;streaming&amp;rdquo; data sources are fundamentally different and thus
 require fundamentally different APIs)&lt;/em&gt;.&lt;/p&gt;
@@ -5271,7 +5380,7 @@ to the watermark and the progress of processing time, which could not previously
 be controlled within a test.&lt;/p&gt;
 &lt;h2 id=&#34;writing-deterministic-tests-to-emulate-nondeterminism&#34;&gt;Writing Deterministic Tests to Emulate Nondeterminism&lt;/h2&gt;
 &lt;p&gt;The Beam testing infrastructure provides the
-&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/testing/PAssert.html&#34;&gt;PAssert&lt;/a&gt;
+&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/testing/PAssert.html&#34;&gt;PAssert&lt;/a&gt;
 methods, which assert properties about the contents of a PCollection from within
 a pipeline. We have expanded this infrastructure to include
 &lt;a href=&#34;https://github.com/apache/beam/blob/master/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/TestStream.java&#34;&gt;TestStream&lt;/a&gt;,
diff --git a/website/generated-content/categories/index.xml b/website/generated-content/categories/index.xml
index cd9d834..a016a41 100644
--- a/website/generated-content/categories/index.xml
+++ b/website/generated-content/categories/index.xml
@@ -4,7 +4,7 @@
     <link>/categories/</link>
     <description>Recent content in Categories on Apache Beam</description>
     <generator>Hugo -- gohugo.io</generator>
-    <lastBuildDate>Fri, 08 May 2020 00:00:01 -0800</lastBuildDate>
+    <lastBuildDate>Wed, 27 May 2020 00:00:01 -0800</lastBuildDate>
     
 	  <atom:link href="/categories/index.xml" rel="self" type="application/rss+xml" />
     
diff --git a/website/generated-content/contribute/index.xml b/website/generated-content/contribute/index.xml
index 13ed6c6..7fd427e 100644
--- a/website/generated-content/contribute/index.xml
+++ b/website/generated-content/contribute/index.xml
@@ -2602,8 +2602,8 @@ E.g. when expanding a filepattern into files, log what the filepattern was and h
 &lt;p&gt;Do:&lt;/p&gt;
 &lt;ul&gt;
 &lt;li&gt;Generally, follow the rules of &lt;a href=&#34;https://semver.org/&#34;&gt;semantic versioning&lt;/a&gt;.&lt;/li&gt;
-&lt;li&gt;If the API of the transform is not yet stable, annotate it as &lt;code&gt;@Experimental&lt;/code&gt; (Java) or &lt;code&gt;@experimental&lt;/code&gt; (&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.utils.annotations.html&#34;&gt;Python&lt;/a&gt;).&lt;/li&gt;
-&lt;li&gt;If the API deprecated, annotate it as &lt;code&gt;@Deprecated&lt;/code&gt; (Java) or &lt;code&gt;@deprecated&lt;/code&gt; (&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.utils.annotations.html&#34;&gt;Python&lt;/a&gt;).&lt;/li&gt;
+&lt;li&gt;If the API of the transform is not yet stable, annotate it as &lt;code&gt;@Experimental&lt;/code&gt; (Java) or &lt;code&gt;@experimental&lt;/code&gt; (&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.utils.annotations.html&#34;&gt;Python&lt;/a&gt;).&lt;/li&gt;
+&lt;li&gt;If the API deprecated, annotate it as &lt;code&gt;@Deprecated&lt;/code&gt; (Java) or &lt;code&gt;@deprecated&lt;/code&gt; (&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.utils.annotations.html&#34;&gt;Python&lt;/a&gt;).&lt;/li&gt;
 &lt;li&gt;Pay attention to the stability and versioning of third-party classes exposed by the transform&amp;rsquo;s API: if they are unstable or improperly versioned (do not obey &lt;a href=&#34;https://semver.org/&#34;&gt;semantic versioning&lt;/a&gt;), it is better to wrap them in your own classes.&lt;/li&gt;
 &lt;/ul&gt;
 &lt;p&gt;Do not:&lt;/p&gt;
diff --git a/website/generated-content/contribute/ptransform-style-guide/index.html b/website/generated-content/contribute/ptransform-style-guide/index.html
index 8f3bb8c..0bba8ff 100644
--- a/website/generated-content/contribute/ptransform-style-guide/index.html
+++ b/website/generated-content/contribute/ptransform-style-guide/index.html
@@ -478,8 +478,8 @@ E.g. when expanding a filepattern into files, log what the filepattern was and h
 <p>Do:</p>
 <ul>
 <li>Generally, follow the rules of <a href="https://semver.org/">semantic versioning</a>.</li>
-<li>If the API of the transform is not yet stable, annotate it as <code>@Experimental</code> (Java) or <code>@experimental</code> (<a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.utils.annotations.html">Python</a>).</li>
-<li>If the API deprecated, annotate it as <code>@Deprecated</code> (Java) or <code>@deprecated</code> (<a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.utils.annotations.html">Python</a>).</li>
+<li>If the API of the transform is not yet stable, annotate it as <code>@Experimental</code> (Java) or <code>@experimental</code> (<a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.utils.annotations.html">Python</a>).</li>
+<li>If the API deprecated, annotate it as <code>@Deprecated</code> (Java) or <code>@deprecated</code> (<a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.utils.annotations.html">Python</a>).</li>
 <li>Pay attention to the stability and versioning of third-party classes exposed by the transform&rsquo;s API: if they are unstable or improperly versioned (do not obey <a href="https://semver.org/">semantic versioning</a>), it is better to wrap them in your own classes.</li>
 </ul>
 <p>Do not:</p>
diff --git a/website/generated-content/documentation/dsls/sql/calcite/aggregate-functions/index.html b/website/generated-content/documentation/dsls/sql/calcite/aggregate-functions/index.html
index c7e5eb6..929398e 100644
--- a/website/generated-content/documentation/dsls/sql/calcite/aggregate-functions/index.html
+++ b/website/generated-content/documentation/dsls/sql/calcite/aggregate-functions/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/calcite/data-types/index.html b/website/generated-content/documentation/dsls/sql/calcite/data-types/index.html
index 667f61f..e47cf11 100644
--- a/website/generated-content/documentation/dsls/sql/calcite/data-types/index.html
+++ b/website/generated-content/documentation/dsls/sql/calcite/data-types/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/calcite/lexical-structure/index.html b/website/generated-content/documentation/dsls/sql/calcite/lexical-structure/index.html
index 6273adf..1ac9766 100644
--- a/website/generated-content/documentation/dsls/sql/calcite/lexical-structure/index.html
+++ b/website/generated-content/documentation/dsls/sql/calcite/lexical-structure/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/calcite/overview/index.html b/website/generated-content/documentation/dsls/sql/calcite/overview/index.html
index 05c6517..89425df 100644
--- a/website/generated-content/documentation/dsls/sql/calcite/overview/index.html
+++ b/website/generated-content/documentation/dsls/sql/calcite/overview/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/calcite/query-syntax/index.html b/website/generated-content/documentation/dsls/sql/calcite/query-syntax/index.html
index d6bfd9d..f3f7e0f 100644
--- a/website/generated-content/documentation/dsls/sql/calcite/query-syntax/index.html
+++ b/website/generated-content/documentation/dsls/sql/calcite/query-syntax/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/calcite/scalar-functions/index.html b/website/generated-content/documentation/dsls/sql/calcite/scalar-functions/index.html
index 2d6dbc3..cb3e39b 100644
--- a/website/generated-content/documentation/dsls/sql/calcite/scalar-functions/index.html
+++ b/website/generated-content/documentation/dsls/sql/calcite/scalar-functions/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/extensions/create-external-table/index.html b/website/generated-content/documentation/dsls/sql/extensions/create-external-table/index.html
index 501c6f3..f17ee95 100644
--- a/website/generated-content/documentation/dsls/sql/extensions/create-external-table/index.html
+++ b/website/generated-content/documentation/dsls/sql/extensions/create-external-table/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/extensions/joins/index.html b/website/generated-content/documentation/dsls/sql/extensions/joins/index.html
index 59fa9e5..acbc85a 100644
--- a/website/generated-content/documentation/dsls/sql/extensions/joins/index.html
+++ b/website/generated-content/documentation/dsls/sql/extensions/joins/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/extensions/set/index.html b/website/generated-content/documentation/dsls/sql/extensions/set/index.html
index c251774..16af1cb 100644
--- a/website/generated-content/documentation/dsls/sql/extensions/set/index.html
+++ b/website/generated-content/documentation/dsls/sql/extensions/set/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/extensions/user-defined-functions/index.html b/website/generated-content/documentation/dsls/sql/extensions/user-defined-functions/index.html
index 5bc2eee..36ed102 100644
--- a/website/generated-content/documentation/dsls/sql/extensions/user-defined-functions/index.html
+++ b/website/generated-content/documentation/dsls/sql/extensions/user-defined-functions/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/extensions/windowing-and-triggering/index.html b/website/generated-content/documentation/dsls/sql/extensions/windowing-and-triggering/index.html
index 381147a..fdf0348 100644
--- a/website/generated-content/documentation/dsls/sql/extensions/windowing-and-triggering/index.html
+++ b/website/generated-content/documentation/dsls/sql/extensions/windowing-and-triggering/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/overview/index.html b/website/generated-content/documentation/dsls/sql/overview/index.html
index 8d8c004..58f486a 100644
--- a/website/generated-content/documentation/dsls/sql/overview/index.html
+++ b/website/generated-content/documentation/dsls/sql/overview/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -279,10 +279,10 @@ big data processing. Beam Calcite SQL is the default Beam SQL dialect. Beam Zeta
 <p>To change dialects, pass <a href="https://beam.apache.org/releases/javadoc/current/org/apache/beam/sdk/extensions/sql/package-summary.html">the dialect&rsquo;s full package name</a> to the <a href="https://beam.apache.org/releases/javadoc/current/org/apache/beam/sdk/extensions/sql/impl/BeamSqlPipelineOptions.html#setPlannerName-java.lang.String-"><code>setPlannerName</code></a> method in the <a href="https://beam.apache.org/releases/javadoc/2.15.0/org/apache/beam/sdk/options/PipelineO [...]
 <p>There are two additional concepts you need to know to use SQL in your pipeline:</p>
 <ul>
-<li><a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/extensions/sql/SqlTransform.html">SqlTransform</a>: the interface for creating <code>PTransforms</code> from SQL queries.</li>
-<li><a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/values/Row.html">Row</a>:
+<li><a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/extensions/sql/SqlTransform.html">SqlTransform</a>: the interface for creating <code>PTransforms</code> from SQL queries.</li>
+<li><a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/values/Row.html">Row</a>:
 the type of elements that Beam SQL operates on. A <code>PCollection&lt;Row&gt;</code> plays the role of a table.
-2.20.0</li>
+2.21.0</li>
 </ul>
 <h2 id="walkthrough">Walkthrough</h2>
 <p>The <a href="/documentation/dsls/sql/walkthrough">SQL pipeline walkthrough</a> works through how to use Beam SQL with example code.</p>
diff --git a/website/generated-content/documentation/dsls/sql/shell/index.html b/website/generated-content/documentation/dsls/sql/shell/index.html
index 67323f3..8909a4e 100644
--- a/website/generated-content/documentation/dsls/sql/shell/index.html
+++ b/website/generated-content/documentation/dsls/sql/shell/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/walkthrough/index.html b/website/generated-content/documentation/dsls/sql/walkthrough/index.html
index 3d39cb9..de792f0 100644
--- a/website/generated-content/documentation/dsls/sql/walkthrough/index.html
+++ b/website/generated-content/documentation/dsls/sql/walkthrough/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -267,8 +267,8 @@ limitations under the License.
 <p>Before applying a SQL query to a <code>PCollection</code>, the data in the collection must
 be in <code>Row</code> format. A <code>Row</code> represents a single, immutable record in a Beam SQL
 <code>PCollection</code>. The names and types of the fields/columns in the row are defined
-by its associated <a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/schemas/Schema.html">Schema</a>.
-You can use the <a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/schemas/Schema.html">Schema.builder()</a> to create
+by its associated <a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/schemas/Schema.html">Schema</a>.
+You can use the <a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/schemas/Schema.html">Schema.builder()</a> to create
 <code>Schemas</code>. See <a href="/documentation/dsls/sql/data-types">Data
 Types</a> for more details on supported primitive data types.</p>
 <p>A <code>PCollection&lt;Row&gt;</code> can be obtained multiple ways, for example:</p>
@@ -367,7 +367,7 @@ Types</a> for more details on supported primitive data types.</p>
 </ul>
 <p>Once you have a <code>PCollection&lt;Row&gt;</code> in hand, you may use <code>SqlTransform</code> to apply SQL queries to it.</p>
 <h2 id="sqltransform">SqlTransform</h2>
-<p><a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/extensions/sql/SqlTransform.html"><code>SqlTransform.query(queryString)</code></a> method is the only API to create a <code>PTransform</code>
+<p><a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/extensions/sql/SqlTransform.html"><code>SqlTransform.query(queryString)</code></a> method is the only API to create a <code>PTransform</code>
 from a string representation of the SQL query. You can apply this <code>PTransform</code>
 to either a single <code>PCollection</code> or a <code>PCollectionTuple</code> which holds multiple
 <code>PCollections</code>:</p>
diff --git a/website/generated-content/documentation/dsls/sql/zetasql/aggregate-functions/index.html b/website/generated-content/documentation/dsls/sql/zetasql/aggregate-functions/index.html
index d371a14..e1fb519 100644
--- a/website/generated-content/documentation/dsls/sql/zetasql/aggregate-functions/index.html
+++ b/website/generated-content/documentation/dsls/sql/zetasql/aggregate-functions/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/zetasql/conditional-expressions/index.html b/website/generated-content/documentation/dsls/sql/zetasql/conditional-expressions/index.html
index 03e8274..7db9605 100644
--- a/website/generated-content/documentation/dsls/sql/zetasql/conditional-expressions/index.html
+++ b/website/generated-content/documentation/dsls/sql/zetasql/conditional-expressions/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/zetasql/conversion-rules/index.html b/website/generated-content/documentation/dsls/sql/zetasql/conversion-rules/index.html
index c0ac0da..719bcdf 100644
--- a/website/generated-content/documentation/dsls/sql/zetasql/conversion-rules/index.html
+++ b/website/generated-content/documentation/dsls/sql/zetasql/conversion-rules/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/zetasql/data-types/index.html b/website/generated-content/documentation/dsls/sql/zetasql/data-types/index.html
index 64c13e2..11bae0a 100644
--- a/website/generated-content/documentation/dsls/sql/zetasql/data-types/index.html
+++ b/website/generated-content/documentation/dsls/sql/zetasql/data-types/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/zetasql/lexical/index.html b/website/generated-content/documentation/dsls/sql/zetasql/lexical/index.html
index 38fc7909..170647a 100644
--- a/website/generated-content/documentation/dsls/sql/zetasql/lexical/index.html
+++ b/website/generated-content/documentation/dsls/sql/zetasql/lexical/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/zetasql/math-functions/index.html b/website/generated-content/documentation/dsls/sql/zetasql/math-functions/index.html
index 50f8d71..f6bbb47 100644
--- a/website/generated-content/documentation/dsls/sql/zetasql/math-functions/index.html
+++ b/website/generated-content/documentation/dsls/sql/zetasql/math-functions/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/zetasql/operators/index.html b/website/generated-content/documentation/dsls/sql/zetasql/operators/index.html
index 8350ebd..b744c3e 100644
--- a/website/generated-content/documentation/dsls/sql/zetasql/operators/index.html
+++ b/website/generated-content/documentation/dsls/sql/zetasql/operators/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/zetasql/overview/index.html b/website/generated-content/documentation/dsls/sql/zetasql/overview/index.html
index daf5205..aef3b78 100644
--- a/website/generated-content/documentation/dsls/sql/zetasql/overview/index.html
+++ b/website/generated-content/documentation/dsls/sql/zetasql/overview/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/zetasql/query-syntax/index.html b/website/generated-content/documentation/dsls/sql/zetasql/query-syntax/index.html
index 108dd75..c72d27e 100644
--- a/website/generated-content/documentation/dsls/sql/zetasql/query-syntax/index.html
+++ b/website/generated-content/documentation/dsls/sql/zetasql/query-syntax/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/zetasql/string-functions/index.html b/website/generated-content/documentation/dsls/sql/zetasql/string-functions/index.html
index 8831504..25c44b9 100644
--- a/website/generated-content/documentation/dsls/sql/zetasql/string-functions/index.html
+++ b/website/generated-content/documentation/dsls/sql/zetasql/string-functions/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/dsls/sql/zetasql/syntax/index.html b/website/generated-content/documentation/dsls/sql/zetasql/syntax/index.html
index 3030fa6..eb6fd10 100644
--- a/website/generated-content/documentation/dsls/sql/zetasql/syntax/index.html
+++ b/website/generated-content/documentation/dsls/sql/zetasql/syntax/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/index.xml b/website/generated-content/documentation/index.xml
index 365d87a..4814aef 100644
--- a/website/generated-content/documentation/index.xml
+++ b/website/generated-content/documentation/index.xml
@@ -406,7 +406,7 @@ the implementation of your custom I/O depends on your use case. Before you
 start, read the &lt;a href=&#34;/documentation/io/developing-io-overview/&#34;&gt;new I/O connector overview&lt;/a&gt;
 for an overview of developing a new I/O connector, the available implementation
 options, and how to choose the right option for your use case.&lt;/p&gt;
-&lt;p&gt;This guide covers using the &lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.iobase.html&#34;&gt;Source and FileBasedSink interfaces&lt;/a&gt;
+&lt;p&gt;This guide covers using the &lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.iobase.html&#34;&gt;Source and FileBasedSink interfaces&lt;/a&gt;
 for Python. The Java SDK offers the same functionality, but uses a slightly
 different API. See &lt;a href=&#34;/documentation/io/developing-io-java/&#34;&gt;Developing I/O connectors for Java&lt;/a&gt;
 for information specific to the Java SDK.&lt;/p&gt;
@@ -459,7 +459,7 @@ why you should avoid exposing your sources, and walks through how to create
 a wrapper.&lt;/li&gt;
 &lt;/ul&gt;
 &lt;p&gt;You can find these classes in the
-&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.iobase.html&#34;&gt;apache_beam.io.iobase module&lt;/a&gt;.&lt;/p&gt;
+&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.iobase.html&#34;&gt;apache_beam.io.iobase module&lt;/a&gt;.&lt;/p&gt;
 &lt;h3 id=&#34;implementing-the-boundedsource-subclass&#34;&gt;Implementing the BoundedSource subclass&lt;/h3&gt;
 &lt;p&gt;&lt;code&gt;BoundedSource&lt;/code&gt; represents a finite data set from which the service reads, possibly in parallel. &lt;code&gt;BoundedSource&lt;/code&gt; contains a set of methods that the service uses to split the data set for reading by multiple remote workers.&lt;/p&gt;
 &lt;p&gt;To implement a &lt;code&gt;BoundedSource&lt;/code&gt;, your subclass must override the following methods:&lt;/p&gt;
@@ -616,7 +616,7 @@ demonstrated in the example above. Use a wrapping &lt;code&gt;PTransform&lt;/cod
 &lt;a href=&#34;#ptransform-wrappers&#34;&gt;PTransform wrappers&lt;/a&gt; discusses why you should avoid
 exposing your sources, and walks through how to create a wrapper.&lt;/p&gt;
 &lt;h2 id=&#34;using-the-filebasedsink-abstraction&#34;&gt;Using the FileBasedSink abstraction&lt;/h2&gt;
-&lt;p&gt;If your data source uses files, you can implement the &lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.filebasedsink.html&#34;&gt;FileBasedSink&lt;/a&gt;
+&lt;p&gt;If your data source uses files, you can implement the &lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.filebasedsink.html&#34;&gt;FileBasedSink&lt;/a&gt;
 abstraction to create a file-based sink. For other sinks, use &lt;code&gt;ParDo&lt;/code&gt;,
 &lt;code&gt;GroupByKey&lt;/code&gt;, and other transforms offered by the Beam SDK for Python. See the
 &lt;a href=&#34;/documentation/io/developing-io-overview/&#34;&gt;developing I/O connectors overview&lt;/a&gt;
@@ -1720,7 +1720,7 @@ to &lt;a href=&#34;https://parquet.apache.org&#34;&gt;Apache Parquet&lt;/a&gt; f
             &lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dependency&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
     &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;groupId&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;apache&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;beam&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;groupId&lt;/span&gt;&l [...]
     &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;artifactId&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;beam&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sdks&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;io&lt;/span&gt;&lt;span class= [...]
-    &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span cl [...]
+    &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;21&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span cl [...]
 &lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dependency&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
         &lt;/div&gt;
     
@@ -1736,14 +1736,14 @@ to &lt;a href=&#34;https://parquet.apache.org&#34;&gt;Apache Parquet&lt;/a&gt; f
 
   &lt;span class=&#34;language-java&#34;&gt;&lt;ul&gt;
 &lt;li&gt;&lt;a href=&#34;https://github.com/apache/beam/blob/master/sdks/java/io/parquet/src/main/java/org/apache/beam/sdk/io/parquet/ParquetIO.java&#34;&gt;ParquetIO source code&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/parquet/ParquetIO.html&#34;&gt;ParquetIO Javadoc&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/parquet/ParquetIO.html&#34;&gt;ParquetIO Javadoc&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;&lt;/span&gt;
 
 &lt;!-- Python specific --&gt;
 
 
 
-  &lt;p class=&#34;language-py&#34;&gt;ParquetIO comes preinstalled with the Apache Beam python sdk..2.20.0&lt;/p&gt;
+  &lt;p class=&#34;language-py&#34;&gt;ParquetIO comes preinstalled with the Apache Beam python sdk..2.21.0&lt;/p&gt;
 
 
 
@@ -1755,7 +1755,7 @@ to &lt;a href=&#34;https://parquet.apache.org&#34;&gt;Apache Parquet&lt;/a&gt; f
 
   &lt;span class=&#34;language-py&#34;&gt;&lt;ul&gt;
 &lt;li&gt;&lt;a href=&#34;https://github.com/apache/beam/blob/master/sdks/python/apache_beam/io/parquetio.py&#34;&gt;ParquetIO source code&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.parquetio.html&#34;&gt;ParquetIO Pydoc&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.parquetio.html&#34;&gt;ParquetIO Pydoc&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;&lt;/span&gt;
 
 
@@ -2152,7 +2152,7 @@ asynchronous &amp;ldquo;job&amp;rdquo; (or equivalent) on that back-end.&lt;/p&g
 &lt;h2 id=&#34;creating-a-pipeline&#34;&gt;2. Creating a pipeline&lt;/h2&gt;
 &lt;p&gt;The &lt;code&gt;Pipeline&lt;/code&gt; abstraction encapsulates all the data and steps in your data
 processing task. Your Beam driver program typically starts by constructing a
-&lt;span class=&#34;language-java&#34;&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/Pipeline.html&#34;&gt;Pipeline&lt;/a&gt;&lt;/span&gt;
+&lt;span class=&#34;language-java&#34;&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/Pipeline.html&#34;&gt;Pipeline&lt;/a&gt;&lt;/span&gt;
 &lt;span class=&#34;language-py&#34;&gt;&lt;a href=&#34;https://github.com/apache/beam/blob/master/sdks/python/apache_beam/pipeline.py&#34;&gt;Pipeline&lt;/a&gt;&lt;/span&gt;
 object, and then using that object as the basis for creating the pipeline&amp;rsquo;s data
 sets as &lt;code&gt;PCollection&lt;/code&gt;s and its operations as &lt;code&gt;Transform&lt;/code&gt;s.&lt;/p&gt;
@@ -2426,7 +2426,7 @@ with &lt;code&gt;PipelineOptionsFactory&lt;/code&gt;:&lt;/p&gt;
 
 &lt;p&gt;Now your pipeline can accept &lt;code&gt;--input=value&lt;/code&gt; and &lt;code&gt;--output=value&lt;/code&gt; as command-line arguments.&lt;/p&gt;
 &lt;h2 id=&#34;pcollections&#34;&gt;3. PCollections&lt;/h2&gt;
-&lt;p&gt;The &lt;span class=&#34;language-java&#34;&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/values/PCollection.html&#34;&gt;PCollection&lt;/a&gt;&lt;/span&gt;
+&lt;p&gt;The &lt;span class=&#34;language-java&#34;&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/values/PCollection.html&#34;&gt;PCollection&lt;/a&gt;&lt;/span&gt;
 &lt;span class=&#34;language-py&#34;&gt;&lt;code&gt;PCollection&lt;/code&gt;&lt;/span&gt; abstraction represents a
 potentially distributed, multi-element data set. You can think of a
 &lt;code&gt;PCollection&lt;/code&gt; as &amp;ldquo;pipeline&amp;rdquo; data; Beam transforms use &lt;code&gt;PCollection&lt;/code&gt; objects as
@@ -3467,7 +3467,7 @@ and format data from each collection.&lt;/p&gt;
 
 
 &lt;h4 id=&#34;combine&#34;&gt;4.2.4. Combine&lt;/h4&gt;
-&lt;p&gt;&lt;span class=&#34;language-java&#34;&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/transforms/Combine.html&#34;&gt;&lt;code&gt;Combine&lt;/code&gt;&lt;/a&gt;&lt;/span&gt;
+&lt;p&gt;&lt;span class=&#34;language-java&#34;&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/transforms/Combine.html&#34;&gt;&lt;code&gt;Combine&lt;/code&gt;&lt;/a&gt;&lt;/span&gt;
 &lt;span class=&#34;language-py&#34;&gt;&lt;a href=&#34;https://github.com/apache/beam/blob/master/sdks/python/apache_beam/transforms/core.py&#34;&gt;&lt;code&gt;Combine&lt;/code&gt;&lt;/a&gt;&lt;/span&gt;
 is a Beam transform for combining collections of elements or values in your
 data. &lt;code&gt;Combine&lt;/code&gt; has variants that work on entire &lt;code&gt;PCollection&lt;/code&gt;s, and some that
@@ -3783,7 +3783,7 @@ PerKey must be an associative reduction function or a subclass of &lt;code&gt;Co
 
 
 &lt;h4 id=&#34;flatten&#34;&gt;4.2.5. Flatten&lt;/h4&gt;
-&lt;p&gt;&lt;span class=&#34;language-java&#34;&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/transforms/Flatten.html&#34;&gt;&lt;code&gt;Flatten&lt;/code&gt;&lt;/a&gt;&lt;/span&gt;
+&lt;p&gt;&lt;span class=&#34;language-java&#34;&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/transforms/Flatten.html&#34;&gt;&lt;code&gt;Flatten&lt;/code&gt;&lt;/a&gt;&lt;/span&gt;
 &lt;span class=&#34;language-py&#34;&gt;&lt;a href=&#34;https://github.com/apache/beam/blob/master/sdks/python/apache_beam/transforms/core.py&#34;&gt;&lt;code&gt;Flatten&lt;/code&gt;&lt;/a&gt;&lt;/span&gt;
 is a Beam transform for &lt;code&gt;PCollection&lt;/code&gt; objects that store the same data type.
 &lt;code&gt;Flatten&lt;/code&gt; merges multiple &lt;code&gt;PCollection&lt;/code&gt; objects into a single logical
@@ -3842,7 +3842,7 @@ fixed windows or 4-minute sliding windows starting every 30 seconds.&lt;/p&gt;
 incompatible windows, Beam generates an &lt;code&gt;IllegalStateException&lt;/code&gt; error when your
 pipeline is constructed.&lt;/p&gt;
 &lt;h4 id=&#34;partition&#34;&gt;4.2.6. Partition&lt;/h4&gt;
-&lt;p&gt;&lt;span class=&#34;language-java&#34;&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/transforms/Partition.html&#34;&gt;&lt;code&gt;Partition&lt;/code&gt;&lt;/a&gt;&lt;/span&gt;
+&lt;p&gt;&lt;span class=&#34;language-java&#34;&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/transforms/Partition.html&#34;&gt;&lt;code&gt;Partition&lt;/code&gt;&lt;/a&gt;&lt;/span&gt;
 &lt;span class=&#34;language-py&#34;&gt;&lt;a href=&#34;https://github.com/apache/beam/blob/master/sdks/python/apache_beam/transforms/core.py&#34;&gt;&lt;code&gt;Partition&lt;/code&gt;&lt;/a&gt;&lt;/span&gt;
 is a Beam transform for &lt;code&gt;PCollection&lt;/code&gt; objects that store the same data
 type. &lt;code&gt;Partition&lt;/code&gt; splits a single &lt;code&gt;PCollection&lt;/code&gt; into a fixed number of smaller
@@ -4540,8 +4540,8 @@ transform can make your code more modular and easier to understand.&lt;/p&gt;
 &lt;p&gt;The Beam SDK comes packed with many useful composite transforms. See the API
 reference pages for a list of transforms:&lt;/p&gt;
 &lt;ul&gt;
-&lt;li&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/transforms/package-summary.html&#34;&gt;Pre-written Beam transforms for Java&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.transforms.html&#34;&gt;Pre-written Beam transforms for Python&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/transforms/package-summary.html&#34;&gt;Pre-written Beam transforms for Java&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.transforms.html&#34;&gt;Pre-written Beam transforms for Python&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;h4 id=&#34;composite-transform-example&#34;&gt;4.6.1. An example composite transform&lt;/h4&gt;
 &lt;p&gt;The &lt;code&gt;CountWords&lt;/code&gt; transform in the &lt;a href=&#34;/get-started/wordcount-example/&#34;&gt;WordCount example program&lt;/a&gt;
@@ -6581,7 +6581,7 @@ all the elements are by default part of a single, global window.&lt;/p&gt;
 &lt;p&gt;To use windowing with fixed data sets, you can assign your own timestamps to
 each element. To assign timestamps to elements, use a &lt;code&gt;ParDo&lt;/code&gt; transform with a
 &lt;code&gt;DoFn&lt;/code&gt; that outputs each element with a new timestamp (for example, the
-&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/transforms/WithTimestamps.html&#34;&gt;WithTimestamps&lt;/a&gt;
+&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/transforms/WithTimestamps.html&#34;&gt;WithTimestamps&lt;/a&gt;
 transform in the Beam SDK for Java).&lt;/p&gt;
 &lt;p&gt;To illustrate how windowing with a bounded &lt;code&gt;PCollection&lt;/code&gt; can affect how your
 pipeline processes data, consider the following pipeline:&lt;/p&gt;
@@ -9872,6 +9872,10 @@ limitations under the License.
     &lt;td&gt;&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-1857&#34;&gt;BEAM-1857&lt;/a&gt;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
+    &lt;td&gt;Pub/Sub Lite&lt;/td&gt;&lt;td&gt;Java&lt;/td&gt;
+    &lt;td&gt;&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-10114&#34;&gt;BEAM-10114&lt;/a&gt;&lt;/td&gt;
+  &lt;/tr&gt;
+  &lt;tr&gt;
     &lt;td&gt;RestIO&lt;/td&gt;&lt;td&gt;Java&lt;/td&gt;
     &lt;td&gt;&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-1946&#34;&gt;BEAM-1946&lt;/a&gt;&lt;/td&gt;
   &lt;/tr&gt;
@@ -13369,7 +13373,7 @@ to &lt;a href=&#34;https://cloud.google.com/bigquery&#34;&gt;Google BigQuery&lt;
             &lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dependency&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
     &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;groupId&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;apache&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;beam&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;groupId&lt;/span&gt;&l [...]
     &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;artifactId&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;beam&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sdks&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;java&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;io&lt;/span&gt;&lt;span class= [...]
-    &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span cl [...]
+    &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;21&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span cl [...]
 &lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dependency&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
         &lt;/div&gt;
     
@@ -13385,7 +13389,7 @@ to &lt;a href=&#34;https://cloud.google.com/bigquery&#34;&gt;Google BigQuery&lt;
 
   &lt;span class=&#34;language-java&#34;&gt;&lt;ul&gt;
 &lt;li&gt;&lt;a href=&#34;https://github.com/apache/beam/tree/master/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery&#34;&gt;BigQueryIO source code&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/gcp/bigquery/BigQueryIO.html&#34;&gt;BigQueryIO Javadoc&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/gcp/bigquery/BigQueryIO.html&#34;&gt;BigQueryIO Javadoc&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href=&#34;https://cloud.google.com/bigquery/docs&#34;&gt;Google BigQuery documentation&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;&lt;/span&gt;
 
@@ -13406,7 +13410,7 @@ running &lt;code&gt;pip install apache-beam[gcp]&lt;/code&gt;.&lt;/p&gt;
 
   &lt;span class=&#34;language-py&#34;&gt;&lt;ul&gt;
 &lt;li&gt;&lt;a href=&#34;https://github.com/apache/beam/blob/master/sdks/python/apache_beam/io/gcp/bigquery.py&#34;&gt;BigQueryIO source code&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.gcp.bigquery.html&#34;&gt;BigQueryIO Pydoc&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.gcp.bigquery.html&#34;&gt;BigQueryIO Pydoc&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href=&#34;https://cloud.google.com/bigquery/docs&#34;&gt;Google BigQuery documentation&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;&lt;/span&gt;
 
@@ -13465,10 +13469,10 @@ table name.&lt;/p&gt;
 &lt;p&gt;You can also omit &lt;code&gt;project_id&lt;/code&gt; and use the &lt;code&gt;[dataset_id].[table_id]&lt;/code&gt; format. If
 you omit the project ID, Beam uses the default project ID from your
 &lt;span class=&#34;language-java&#34;&gt;
-&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/extensions/gcp/options/GcpOptions.html&#34;&gt;pipeline options&lt;/a&gt;.
+&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/extensions/gcp/options/GcpOptions.html&#34;&gt;pipeline options&lt;/a&gt;.
 &lt;/span&gt;
 &lt;span class=&#34;language-py&#34;&gt;
-&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.options.pipeline_options.html#apache_beam.options.pipeline_options.GoogleCloudOptions&#34;&gt;pipeline options&lt;/a&gt;.
+&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.options.pipeline_options.html#apache_beam.options.pipeline_options.GoogleCloudOptions&#34;&gt;pipeline options&lt;/a&gt;.
 &lt;/span&gt;&lt;/p&gt;
 
 
@@ -13535,7 +13539,7 @@ the three parts of the BigQuery table name.&lt;/p&gt;
 
 
 
-  &lt;p class=&#34;language-java&#34;&gt;The Beam SDK for Java also provides the &lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/gcp/bigquery/BigQueryHelpers.html&#34;&gt;&lt;code&gt;parseTableSpec&lt;/code&gt;&lt;/a&gt;
+  &lt;p class=&#34;language-java&#34;&gt;The Beam SDK for Java also provides the &lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/gcp/bigquery/BigQueryHelpers.html&#34;&gt;&lt;code&gt;parseTableSpec&lt;/code&gt;&lt;/a&gt;
 helper method, which constructs a &lt;code&gt;TableReference&lt;/code&gt; object from a String that
 contains the fully-qualified BigQuery table name. However, the static factory
 methods for BigQueryIO transforms accept the table name as a String and
@@ -14305,7 +14309,7 @@ do not set the triggering frequency.&lt;/li&gt;
 
 
   &lt;p class=&#34;language-java&#34;&gt;You can use &lt;code&gt;withMethod&lt;/code&gt; to specify the desired insertion method. See
-&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/gcp/bigquery/BigQueryIO.Write.Method.html&#34;&gt;Write.Method&lt;/a&gt;
+&lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/gcp/bigquery/BigQueryIO.Write.Method.html&#34;&gt;Write.Method&lt;/a&gt;
 for the list of the available methods and their restrictions.&lt;/p&gt;
 
 
@@ -15257,7 +15261,7 @@ limitations under the License.
             &lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dependency&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
   &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;groupId&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;apache&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;beam&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;groupId&lt;/span&gt;&lt; [...]
   &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;artifactId&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;beam&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;runners&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jstorm&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;artifactId&lt;/span [...]
-  &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span clas [...]
+  &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;21&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span clas [...]
 &lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dependency&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
         &lt;/div&gt;
     
diff --git a/website/generated-content/documentation/io/built-in/google-bigquery/index.html b/website/generated-content/documentation/io/built-in/google-bigquery/index.html
index 16af1cc..909c4c5 100644
--- a/website/generated-content/documentation/io/built-in/google-bigquery/index.html
+++ b/website/generated-content/documentation/io/built-in/google-bigquery/index.html
@@ -560,7 +560,7 @@ to <a href="https://cloud.google.com/bigquery">Google BigQuery</a> tables.</p>
             <div class="highlight"><pre class="chroma"><code class="language-java" data-lang="java"><span class="o">&lt;</span><span class="n">dependency</span><span class="o">&gt;</span>
     <span class="o">&lt;</span><span class="n">groupId</span><span class="o">&gt;</span><span class="n">org</span><span class="o">.</span><span class="na">apache</span><span class="o">.</span><span class="na">beam</span><span class="o">&lt;/</span><span class="n">groupId</span><span class="o">&gt;</span>
     <span class="o">&lt;</span><span class="n">artifactId</span><span class="o">&gt;</span><span class="n">beam</span><span class="o">-</span><span class="n">sdks</span><span class="o">-</span><span class="n">java</span><span class="o">-</span><span class="n">io</span><span class="o">-</span><span class="n">google</span><span class="o">-</span><span class="n">cloud</span><span class="o">-</span><span class="n">platform</span><span class="o">&lt;/</span><span class="n">artifactId</span><s [...]
-    <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">20</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
+    <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">21</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
 <span class="o">&lt;/</span><span class="n">dependency</span><span class="o">&gt;</span></code></pre></div>
         </div>
     
@@ -576,7 +576,7 @@ to <a href="https://cloud.google.com/bigquery">Google BigQuery</a> tables.</p>
 
   <span class="language-java"><ul>
 <li><a href="https://github.com/apache/beam/tree/master/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery">BigQueryIO source code</a></li>
-<li><a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/gcp/bigquery/BigQueryIO.html">BigQueryIO Javadoc</a></li>
+<li><a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/gcp/bigquery/BigQueryIO.html">BigQueryIO Javadoc</a></li>
 <li><a href="https://cloud.google.com/bigquery/docs">Google BigQuery documentation</a></li>
 </ul></span>
 
@@ -597,7 +597,7 @@ running <code>pip install apache-beam[gcp]</code>.</p>
 
   <span class="language-py"><ul>
 <li><a href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/io/gcp/bigquery.py">BigQueryIO source code</a></li>
-<li><a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.gcp.bigquery.html">BigQueryIO Pydoc</a></li>
+<li><a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.gcp.bigquery.html">BigQueryIO Pydoc</a></li>
 <li><a href="https://cloud.google.com/bigquery/docs">Google BigQuery documentation</a></li>
 </ul></span>
 
@@ -656,10 +656,10 @@ table name.</p>
 <p>You can also omit <code>project_id</code> and use the <code>[dataset_id].[table_id]</code> format. If
 you omit the project ID, Beam uses the default project ID from your
 <span class="language-java">
-<a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/extensions/gcp/options/GcpOptions.html">pipeline options</a>.
+<a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/extensions/gcp/options/GcpOptions.html">pipeline options</a>.
 </span>
 <span class="language-py">
-<a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.options.pipeline_options.html#apache_beam.options.pipeline_options.GoogleCloudOptions">pipeline options</a>.
+<a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.options.pipeline_options.html#apache_beam.options.pipeline_options.GoogleCloudOptions">pipeline options</a>.
 </span></p>
 
 
@@ -726,7 +726,7 @@ the three parts of the BigQuery table name.</p>
 
 
 
-  <p class="language-java">The Beam SDK for Java also provides the <a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/gcp/bigquery/BigQueryHelpers.html"><code>parseTableSpec</code></a>
+  <p class="language-java">The Beam SDK for Java also provides the <a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/gcp/bigquery/BigQueryHelpers.html"><code>parseTableSpec</code></a>
 helper method, which constructs a <code>TableReference</code> object from a String that
 contains the fully-qualified BigQuery table name. However, the static factory
 methods for BigQueryIO transforms accept the table name as a String and
@@ -1496,7 +1496,7 @@ do not set the triggering frequency.</li>
 
 
   <p class="language-java">You can use <code>withMethod</code> to specify the desired insertion method. See
-<a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/gcp/bigquery/BigQueryIO.Write.Method.html">Write.Method</a>
+<a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/gcp/bigquery/BigQueryIO.Write.Method.html">Write.Method</a>
 for the list of the available methods and their restrictions.</p>
 
 
diff --git a/website/generated-content/documentation/io/built-in/index.html b/website/generated-content/documentation/io/built-in/index.html
index bf81147..9c4bda0 100644
--- a/website/generated-content/documentation/io/built-in/index.html
+++ b/website/generated-content/documentation/io/built-in/index.html
@@ -1999,6 +1999,10 @@ limitations under the License.
     <td><a href="https://issues.apache.org/jira/browse/BEAM-1857">BEAM-1857</a></td>
   </tr>
   <tr>
+    <td>Pub/Sub Lite</td><td>Java</td>
+    <td><a href="https://issues.apache.org/jira/browse/BEAM-10114">BEAM-10114</a></td>
+  </tr>
+  <tr>
     <td>RestIO</td><td>Java</td>
     <td><a href="https://issues.apache.org/jira/browse/BEAM-1946">BEAM-1946</a></td>
   </tr>
diff --git a/website/generated-content/documentation/io/built-in/parquet/index.html b/website/generated-content/documentation/io/built-in/parquet/index.html
index 11e810c..981b0b2 100644
--- a/website/generated-content/documentation/io/built-in/parquet/index.html
+++ b/website/generated-content/documentation/io/built-in/parquet/index.html
@@ -512,7 +512,7 @@ to <a href="https://parquet.apache.org">Apache Parquet</a> files.</p>
             <div class="highlight"><pre class="chroma"><code class="language-java" data-lang="java"><span class="o">&lt;</span><span class="n">dependency</span><span class="o">&gt;</span>
     <span class="o">&lt;</span><span class="n">groupId</span><span class="o">&gt;</span><span class="n">org</span><span class="o">.</span><span class="na">apache</span><span class="o">.</span><span class="na">beam</span><span class="o">&lt;/</span><span class="n">groupId</span><span class="o">&gt;</span>
     <span class="o">&lt;</span><span class="n">artifactId</span><span class="o">&gt;</span><span class="n">beam</span><span class="o">-</span><span class="n">sdks</span><span class="o">-</span><span class="n">java</span><span class="o">-</span><span class="n">io</span><span class="o">-</span><span class="n">parquet</span><span class="o">&lt;/</span><span class="n">artifactId</span><span class="o">&gt;</span>
-    <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">20</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
+    <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">21</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
 <span class="o">&lt;/</span><span class="n">dependency</span><span class="o">&gt;</span></code></pre></div>
         </div>
     
@@ -528,14 +528,14 @@ to <a href="https://parquet.apache.org">Apache Parquet</a> files.</p>
 
   <span class="language-java"><ul>
 <li><a href="https://github.com/apache/beam/blob/master/sdks/java/io/parquet/src/main/java/org/apache/beam/sdk/io/parquet/ParquetIO.java">ParquetIO source code</a></li>
-<li><a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/io/parquet/ParquetIO.html">ParquetIO Javadoc</a></li>
+<li><a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/io/parquet/ParquetIO.html">ParquetIO Javadoc</a></li>
 </ul></span>
 
 <!-- Python specific -->
 
 
 
-  <p class="language-py">ParquetIO comes preinstalled with the Apache Beam python sdk..2.20.0</p>
+  <p class="language-py">ParquetIO comes preinstalled with the Apache Beam python sdk..2.21.0</p>
 
 
 
@@ -547,7 +547,7 @@ to <a href="https://parquet.apache.org">Apache Parquet</a> files.</p>
 
   <span class="language-py"><ul>
 <li><a href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/io/parquetio.py">ParquetIO source code</a></li>
-<li><a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.parquetio.html">ParquetIO Pydoc</a></li>
+<li><a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.parquetio.html">ParquetIO Pydoc</a></li>
 </ul></span>
 
 
diff --git a/website/generated-content/documentation/io/developing-io-python/index.html b/website/generated-content/documentation/io/developing-io-python/index.html
index 8a21733..2f1e9ed 100644
--- a/website/generated-content/documentation/io/developing-io-python/index.html
+++ b/website/generated-content/documentation/io/developing-io-python/index.html
@@ -497,7 +497,7 @@ the implementation of your custom I/O depends on your use case. Before you
 start, read the <a href="/documentation/io/developing-io-overview/">new I/O connector overview</a>
 for an overview of developing a new I/O connector, the available implementation
 options, and how to choose the right option for your use case.</p>
-<p>This guide covers using the <a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.iobase.html">Source and FileBasedSink interfaces</a>
+<p>This guide covers using the <a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.iobase.html">Source and FileBasedSink interfaces</a>
 for Python. The Java SDK offers the same functionality, but uses a slightly
 different API. See <a href="/documentation/io/developing-io-java/">Developing I/O connectors for Java</a>
 for information specific to the Java SDK.</p>
@@ -550,7 +550,7 @@ why you should avoid exposing your sources, and walks through how to create
 a wrapper.</li>
 </ul>
 <p>You can find these classes in the
-<a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.iobase.html">apache_beam.io.iobase module</a>.</p>
+<a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.iobase.html">apache_beam.io.iobase module</a>.</p>
 <h3 id="implementing-the-boundedsource-subclass">Implementing the BoundedSource subclass</h3>
 <p><code>BoundedSource</code> represents a finite data set from which the service reads, possibly in parallel. <code>BoundedSource</code> contains a set of methods that the service uses to split the data set for reading by multiple remote workers.</p>
 <p>To implement a <code>BoundedSource</code>, your subclass must override the following methods:</p>
@@ -707,7 +707,7 @@ demonstrated in the example above. Use a wrapping <code>PTransform</code> instea
 <a href="#ptransform-wrappers">PTransform wrappers</a> discusses why you should avoid
 exposing your sources, and walks through how to create a wrapper.</p>
 <h2 id="using-the-filebasedsink-abstraction">Using the FileBasedSink abstraction</h2>
-<p>If your data source uses files, you can implement the <a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.filebasedsink.html">FileBasedSink</a>
+<p>If your data source uses files, you can implement the <a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.filebasedsink.html">FileBasedSink</a>
 abstraction to create a file-based sink. For other sinks, use <code>ParDo</code>,
 <code>GroupByKey</code>, and other transforms offered by the Beam SDK for Python. See the
 <a href="/documentation/io/developing-io-overview/">developing I/O connectors overview</a>
diff --git a/website/generated-content/documentation/pipelines/test-your-pipeline/index.html b/website/generated-content/documentation/pipelines/test-your-pipeline/index.html
index 8a3838e..35ead06 100644
--- a/website/generated-content/documentation/pipelines/test-your-pipeline/index.html
+++ b/website/generated-content/documentation/pipelines/test-your-pipeline/index.html
@@ -705,7 +705,7 @@ for the <code>DoFnTester</code> as follows:</p>
 <h3 id="using-the-create-transform">Using the Create Transform</h3>
 <p>You can use the <code>Create</code> transform to create a <code>PCollection</code> out of a standard in-memory collection class, such as Java <code>List</code>. See <a href="/documentation/programming-guide/#creating-a-pcollection">Creating a PCollection</a> for more information.</p>
 <h3 id="passert">PAssert</h3>
-<p><a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/testing/PAssert.html">PAssert</a> is a class included in the Beam Java SDK  that is an assertion on the contents of a <code>PCollection</code>. You can use <code>PAssert</code>to verify that a <code>PCollection</code> contains a specific set of expected elements.</p>
+<p><a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/testing/PAssert.html">PAssert</a> is a class included in the Beam Java SDK  that is an assertion on the contents of a <code>PCollection</code>. You can use <code>PAssert</code>to verify that a <code>PCollection</code> contains a specific set of expected elements.</p>
 <p>For a given <code>PCollection</code>, you can use <code>PAssert</code> to verify the contents as follows:</p>
 
 
@@ -745,7 +745,7 @@ for the <code>DoFnTester</code> as follows:</p>
     
 
 
-<p>For more information on how these classes work, see the <a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/testing/package-summary.html">org.apache.beam.sdk.testing</a> package documentation.</p>
+<p>For more information on how these classes work, see the <a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/testing/package-summary.html">org.apache.beam.sdk.testing</a> package documentation.</p>
 <h3 id="an-example-test-for-a-composite-transform">An Example Test for a Composite Transform</h3>
 <p>The following code shows a complete test for a composite transform. The test applies the <code>Count</code> transform to an input <code>PCollection</code> of <code>String</code> elements. The test uses the <code>Create</code> transform to create the input <code>PCollection</code> from a Java <code>List&lt;String&gt;</code>.</p>
 
diff --git a/website/generated-content/documentation/programming-guide/index.html b/website/generated-content/documentation/programming-guide/index.html
index 056e55b..3514444 100644
--- a/website/generated-content/documentation/programming-guide/index.html
+++ b/website/generated-content/documentation/programming-guide/index.html
@@ -790,7 +790,7 @@ asynchronous &ldquo;job&rdquo; (or equivalent) on that back-end.</p>
 <h2 id="creating-a-pipeline">2. Creating a pipeline</h2>
 <p>The <code>Pipeline</code> abstraction encapsulates all the data and steps in your data
 processing task. Your Beam driver program typically starts by constructing a
-<span class="language-java"><a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/Pipeline.html">Pipeline</a></span>
+<span class="language-java"><a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/Pipeline.html">Pipeline</a></span>
 <span class="language-py"><a href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/pipeline.py">Pipeline</a></span>
 object, and then using that object as the basis for creating the pipeline&rsquo;s data
 sets as <code>PCollection</code>s and its operations as <code>Transform</code>s.</p>
@@ -1064,7 +1064,7 @@ with <code>PipelineOptionsFactory</code>:</p>
 
 <p>Now your pipeline can accept <code>--input=value</code> and <code>--output=value</code> as command-line arguments.</p>
 <h2 id="pcollections">3. PCollections</h2>
-<p>The <span class="language-java"><a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/values/PCollection.html">PCollection</a></span>
+<p>The <span class="language-java"><a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/values/PCollection.html">PCollection</a></span>
 <span class="language-py"><code>PCollection</code></span> abstraction represents a
 potentially distributed, multi-element data set. You can think of a
 <code>PCollection</code> as &ldquo;pipeline&rdquo; data; Beam transforms use <code>PCollection</code> objects as
@@ -2105,7 +2105,7 @@ and format data from each collection.</p>
 
 
 <h4 id="combine">4.2.4. Combine</h4>
-<p><span class="language-java"><a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/transforms/Combine.html"><code>Combine</code></a></span>
+<p><span class="language-java"><a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/transforms/Combine.html"><code>Combine</code></a></span>
 <span class="language-py"><a href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/transforms/core.py"><code>Combine</code></a></span>
 is a Beam transform for combining collections of elements or values in your
 data. <code>Combine</code> has variants that work on entire <code>PCollection</code>s, and some that
@@ -2421,7 +2421,7 @@ PerKey must be an associative reduction function or a subclass of <code>CombineF
 
 
 <h4 id="flatten">4.2.5. Flatten</h4>
-<p><span class="language-java"><a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/transforms/Flatten.html"><code>Flatten</code></a></span>
+<p><span class="language-java"><a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/transforms/Flatten.html"><code>Flatten</code></a></span>
 <span class="language-py"><a href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/transforms/core.py"><code>Flatten</code></a></span>
 is a Beam transform for <code>PCollection</code> objects that store the same data type.
 <code>Flatten</code> merges multiple <code>PCollection</code> objects into a single logical
@@ -2480,7 +2480,7 @@ fixed windows or 4-minute sliding windows starting every 30 seconds.</p>
 incompatible windows, Beam generates an <code>IllegalStateException</code> error when your
 pipeline is constructed.</p>
 <h4 id="partition">4.2.6. Partition</h4>
-<p><span class="language-java"><a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/transforms/Partition.html"><code>Partition</code></a></span>
+<p><span class="language-java"><a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/transforms/Partition.html"><code>Partition</code></a></span>
 <span class="language-py"><a href="https://github.com/apache/beam/blob/master/sdks/python/apache_beam/transforms/core.py"><code>Partition</code></a></span>
 is a Beam transform for <code>PCollection</code> objects that store the same data
 type. <code>Partition</code> splits a single <code>PCollection</code> into a fixed number of smaller
@@ -3178,8 +3178,8 @@ transform can make your code more modular and easier to understand.</p>
 <p>The Beam SDK comes packed with many useful composite transforms. See the API
 reference pages for a list of transforms:</p>
 <ul>
-<li><a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/transforms/package-summary.html">Pre-written Beam transforms for Java</a></li>
-<li><a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.transforms.html">Pre-written Beam transforms for Python</a></li>
+<li><a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/transforms/package-summary.html">Pre-written Beam transforms for Java</a></li>
+<li><a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.transforms.html">Pre-written Beam transforms for Python</a></li>
 </ul>
 <h4 id="composite-transform-example">4.6.1. An example composite transform</h4>
 <p>The <code>CountWords</code> transform in the <a href="/get-started/wordcount-example/">WordCount example program</a>
@@ -5219,7 +5219,7 @@ all the elements are by default part of a single, global window.</p>
 <p>To use windowing with fixed data sets, you can assign your own timestamps to
 each element. To assign timestamps to elements, use a <code>ParDo</code> transform with a
 <code>DoFn</code> that outputs each element with a new timestamp (for example, the
-<a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/transforms/WithTimestamps.html">WithTimestamps</a>
+<a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/transforms/WithTimestamps.html">WithTimestamps</a>
 transform in the Beam SDK for Java).</p>
 <p>To illustrate how windowing with a bounded <code>PCollection</code> can affect how your
 pipeline processes data, consider the following pipeline:</p>
diff --git a/website/generated-content/documentation/runners/dataflow/index.html b/website/generated-content/documentation/runners/dataflow/index.html
index d0c56ef..b383f2f 100644
--- a/website/generated-content/documentation/runners/dataflow/index.html
+++ b/website/generated-content/documentation/runners/dataflow/index.html
@@ -243,7 +243,7 @@ Pub/Sub, or Cloud Datastore) if you use them in your pipeline code.</li>
             <div class="highlight"><pre class="chroma"><code class="language-java" data-lang="java"><span class="o">&lt;</span><span class="n">dependency</span><span class="o">&gt;</span>
   <span class="o">&lt;</span><span class="n">groupId</span><span class="o">&gt;</span><span class="n">org</span><span class="o">.</span><span class="na">apache</span><span class="o">.</span><span class="na">beam</span><span class="o">&lt;/</span><span class="n">groupId</span><span class="o">&gt;</span>
   <span class="o">&lt;</span><span class="n">artifactId</span><span class="o">&gt;</span><span class="n">beam</span><span class="o">-</span><span class="n">runners</span><span class="o">-</span><span class="n">google</span><span class="o">-</span><span class="n">cloud</span><span class="o">-</span><span class="n">dataflow</span><span class="o">-</span><span class="n">java</span><span class="o">&lt;/</span><span class="n">artifactId</span><span class="o">&gt;</span>
-  <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">20</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
+  <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">21</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
   <span class="o">&lt;</span><span class="n">scope</span><span class="o">&gt;</span><span class="n">runtime</span><span class="o">&lt;/</span><span class="n">scope</span><span class="o">&gt;</span>
 <span class="o">&lt;/</span><span class="n">dependency</span><span class="o">&gt;</span></code></pre></div>
         </div>
@@ -420,8 +420,8 @@ Pub/Sub, or Cloud Datastore) if you use them in your pipeline code.</li>
 </tr>
 </table>
 <p>See the reference documentation for the
-<span class="language-java"><a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/runners/dataflow/options/DataflowPipelineOptions.html">DataflowPipelineOptions</a></span>
-<span class="language-py"><a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.options.pipeline_options.html#apache_beam.options.pipeline_options.PipelineOptions"><code>PipelineOptions</code></a></span>
+<span class="language-java"><a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/runners/dataflow/options/DataflowPipelineOptions.html">DataflowPipelineOptions</a></span>
+<span class="language-py"><a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.options.pipeline_options.html#apache_beam.options.pipeline_options.PipelineOptions"><code>PipelineOptions</code></a></span>
 interface (and any subinterfaces) for additional pipeline configuration options.</p>
 <h2 id="additional-info">Additional information and caveats</h2>
 <h3 id="monitoring">Monitoring your job</h3>
diff --git a/website/generated-content/documentation/runners/direct/index.html b/website/generated-content/documentation/runners/direct/index.html
index c8b1716..e350431 100644
--- a/website/generated-content/documentation/runners/direct/index.html
+++ b/website/generated-content/documentation/runners/direct/index.html
@@ -223,10 +223,10 @@ limitations under the License.
 <p>Here are some resources with information about how to test your pipelines.</p>
 <ul>
   <!-- Java specific links -->
-  <li class="language-java"><a href="/blog/2016/10/20/test-stream.html">Testing Unbounded Pipelines in Apache Beam</a> talks about the use of Java classes <a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/testing/PAssert.html">PAssert</a> and <a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/testing/TestStream.html">TestStream</a> to test your pipelines.</li>
-  <li class="language-java">The <a href="/get-started/wordcount-example/#testing-your-pipeline-with-asserts">Apache Beam WordCount Walkthrough</a> contains an example of logging and testing a pipeline with <a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/testing/PAssert.html">PAssert</a>.</li>
+  <li class="language-java"><a href="/blog/2016/10/20/test-stream.html">Testing Unbounded Pipelines in Apache Beam</a> talks about the use of Java classes <a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/testing/PAssert.html">PAssert</a> and <a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/testing/TestStream.html">TestStream</a> to test your pipelines.</li>
+  <li class="language-java">The <a href="/get-started/wordcount-example/#testing-your-pipeline-with-asserts">Apache Beam WordCount Walkthrough</a> contains an example of logging and testing a pipeline with <a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/testing/PAssert.html">PAssert</a>.</li>
   <!-- Python specific links -->
-  <li class="language-py">The <a href="/get-started/wordcount-example/#testing-your-pipeline-with-asserts">Apache Beam WordCount Walkthrough</a> contains an example of logging and testing a pipeline with <a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.testing.util.html#apache_beam.testing.util.assert_that">assert_that</a>.</li>
+  <li class="language-py">The <a href="/get-started/wordcount-example/#testing-your-pipeline-with-asserts">Apache Beam WordCount Walkthrough</a> contains an example of logging and testing a pipeline with <a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.testing.util.html#apache_beam.testing.util.assert_that">assert_that</a>.</li>
 </ul>
 <h2 id="direct-runner-prerequisites-and-setup">Direct Runner prerequisites and setup</h2>
 <h3 id="specify-your-dependency">Specify your dependency</h3>
@@ -241,7 +241,7 @@ limitations under the License.
             <div class="highlight"><pre class="chroma"><code class="language-java" data-lang="java"><span class="o">&lt;</span><span class="n">dependency</span><span class="o">&gt;</span>
    <span class="o">&lt;</span><span class="n">groupId</span><span class="o">&gt;</span><span class="n">org</span><span class="o">.</span><span class="na">apache</span><span class="o">.</span><span class="na">beam</span><span class="o">&lt;/</span><span class="n">groupId</span><span class="o">&gt;</span>
    <span class="o">&lt;</span><span class="n">artifactId</span><span class="o">&gt;</span><span class="n">beam</span><span class="o">-</span><span class="n">runners</span><span class="o">-</span><span class="n">direct</span><span class="o">-</span><span class="n">java</span><span class="o">&lt;/</span><span class="n">artifactId</span><span class="o">&gt;</span>
-   <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">20</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
+   <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">21</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
    <span class="o">&lt;</span><span class="n">scope</span><span class="o">&gt;</span><span class="n">runtime</span><span class="o">&lt;/</span><span class="n">scope</span><span class="o">&gt;</span>
 <span class="o">&lt;/</span><span class="n">dependency</span><span class="o">&gt;</span></code></pre></div>
         </div>
@@ -252,12 +252,12 @@ limitations under the License.
 <h2 id="pipeline-options-for-the-direct-runner">Pipeline options for the Direct Runner</h2>
 <p>When executing your pipeline from the command-line, set <code>runner</code> to <code>direct</code> or <code>DirectRunner</code>. The default values for the other pipeline options are generally sufficient.</p>
 <p>See the reference documentation for the
-<span class="language-java"><a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/runners/direct/DirectOptions.html"><code>DirectOptions</code></a></span>
-<span class="language-py"><a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.options.pipeline_options.html#apache_beam.options.pipeline_options.DirectOptions"><code>DirectOptions</code></a></span>
+<span class="language-java"><a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/runners/direct/DirectOptions.html"><code>DirectOptions</code></a></span>
+<span class="language-py"><a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.options.pipeline_options.html#apache_beam.options.pipeline_options.DirectOptions"><code>DirectOptions</code></a></span>
 interface for defaults and additional pipeline configuration options.</p>
 <h2 id="additional-information-and-caveats">Additional information and caveats</h2>
 <h3 id="memory-considerations">Memory considerations</h3>
-<p>Local execution is limited by the memory available in your local environment. It is highly recommended that you run your pipeline with data sets small enough to fit in local memory. You can create a small in-memory data set using a <span class="language-java"><a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/transforms/Create.html"><code>Create</code></a></span><span class="language-py"><a href="https://github.com/apache/beam/blob/master/sdks/pyth [...]
+<p>Local execution is limited by the memory available in your local environment. It is highly recommended that you run your pipeline with data sets small enough to fit in local memory. You can create a small in-memory data set using a <span class="language-java"><a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/transforms/Create.html"><code>Create</code></a></span><span class="language-py"><a href="https://github.com/apache/beam/blob/master/sdks/pyth [...]
 <h3 id="streaming-execution">Streaming execution</h3>
 <p>If your pipeline uses an unbounded data source or sink, you must set the <code>streaming</code> option to <code>true</code>.</p>
 <h3 id="execution-mode">Execution Mode</h3>
diff --git a/website/generated-content/documentation/runners/flink/index.html b/website/generated-content/documentation/runners/flink/index.html
index c63fc5b..7edb42c 100644
--- a/website/generated-content/documentation/runners/flink/index.html
+++ b/website/generated-content/documentation/runners/flink/index.html
@@ -365,7 +365,7 @@ from the above table. For example:</p>
             <div class="highlight"><pre class="chroma"><code class="language-java" data-lang="java"><span class="o">&lt;</span><span class="n">dependency</span><span class="o">&gt;</span>
   <span class="o">&lt;</span><span class="n">groupId</span><span class="o">&gt;</span><span class="n">org</span><span class="o">.</span><span class="na">apache</span><span class="o">.</span><span class="na">beam</span><span class="o">&lt;/</span><span class="n">groupId</span><span class="o">&gt;</span>
   <span class="o">&lt;</span><span class="n">artifactId</span><span class="o">&gt;</span><span class="n">beam</span><span class="o">-</span><span class="n">runners</span><span class="o">-</span><span class="n">flink</span><span class="o">-</span><span class="n">1</span><span class="o">.</span><span class="na">6</span><span class="o">&lt;/</span><span class="n">artifactId</span><span class="o">&gt;</span>
-  <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">20</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
+  <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">21</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
 <span class="o">&lt;/</span><span class="n">dependency</span><span class="o">&gt;</span></code></pre></div>
         </div>
     
@@ -585,7 +585,7 @@ Many sources like <code>PubSubIO</code> rely on their checkpoints to be acknowle
 <h2 id="pipeline-options-for-the-flink-runner">Pipeline options for the Flink Runner</h2>
 <p>When executing your pipeline with the Flink Runner, you can set these pipeline options.</p>
 <p>The following list of Flink-specific pipeline options is generated automatically from the
-<a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/runners/flink/FlinkPipelineOptions.html">FlinkPipelineOptions</a>
+<a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/runners/flink/FlinkPipelineOptions.html">FlinkPipelineOptions</a>
 reference class:</p>
 <!-- Java Options -->
 <div class="language-java">
@@ -884,7 +884,7 @@ reference class:</p>
 
 </div>
 <p>For general Beam pipeline options see the
-<a href="https://beam.apache.org/releases/javadoc/2.20.0/index.html?org/apache/beam/sdk/options/PipelineOptions.html">PipelineOptions</a>
+<a href="https://beam.apache.org/releases/javadoc/2.21.0/index.html?org/apache/beam/sdk/options/PipelineOptions.html">PipelineOptions</a>
 reference.</p>
 <h2 id="capability">Capability</h2>
 <p>The <a href="/documentation/runners/capability-matrix/">Beam Capability Matrix</a> documents the
diff --git a/website/generated-content/documentation/runners/gearpump/index.html b/website/generated-content/documentation/runners/gearpump/index.html
index 9cdac25..155b52b 100644
--- a/website/generated-content/documentation/runners/gearpump/index.html
+++ b/website/generated-content/documentation/runners/gearpump/index.html
@@ -203,7 +203,7 @@ And your Beam application should also pack Beam SDK explicitly and here is a sni
   <span class="o">&lt;</span><span class="n">dependency</span><span class="o">&gt;</span>
     <span class="o">&lt;</span><span class="n">groupId</span><span class="o">&gt;</span><span class="n">org</span><span class="o">.</span><span class="na">apache</span><span class="o">.</span><span class="na">beam</span><span class="o">&lt;/</span><span class="n">groupId</span><span class="o">&gt;</span>
     <span class="o">&lt;</span><span class="n">artifactId</span><span class="o">&gt;</span><span class="n">beam</span><span class="o">-</span><span class="n">runners</span><span class="o">-</span><span class="n">gearpump</span><span class="o">&lt;/</span><span class="n">artifactId</span><span class="o">&gt;</span>
-    <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">20</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
+    <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">21</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
   <span class="o">&lt;/</span><span class="n">dependency</span><span class="o">&gt;</span>
 
   <span class="o">&lt;</span><span class="n">dependency</span><span class="o">&gt;</span>
@@ -223,7 +223,7 @@ And your Beam application should also pack Beam SDK explicitly and here is a sni
   <span class="o">&lt;</span><span class="n">dependency</span><span class="o">&gt;</span>
     <span class="o">&lt;</span><span class="n">groupId</span><span class="o">&gt;</span><span class="n">org</span><span class="o">.</span><span class="na">apache</span><span class="o">.</span><span class="na">beam</span><span class="o">&lt;/</span><span class="n">groupId</span><span class="o">&gt;</span>
     <span class="o">&lt;</span><span class="n">artifactId</span><span class="o">&gt;</span><span class="n">beam</span><span class="o">-</span><span class="n">sdks</span><span class="o">-</span><span class="n">java</span><span class="o">-</span><span class="n">core</span><span class="o">&lt;/</span><span class="n">artifactId</span><span class="o">&gt;</span>
-    <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">20</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
+    <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">21</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
   <span class="o">&lt;/</span><span class="n">dependency</span><span class="o">&gt;</span>
 <span class="o">&lt;/</span><span class="n">dependencies</span><span class="o">&gt;</span>
 
diff --git a/website/generated-content/documentation/runners/jstorm/index.html b/website/generated-content/documentation/runners/jstorm/index.html
index 1418ac0..6d3e896 100644
--- a/website/generated-content/documentation/runners/jstorm/index.html
+++ b/website/generated-content/documentation/runners/jstorm/index.html
@@ -502,7 +502,7 @@ limitations under the License.
             <div class="highlight"><pre class="chroma"><code class="language-java" data-lang="java"><span class="o">&lt;</span><span class="n">dependency</span><span class="o">&gt;</span>
   <span class="o">&lt;</span><span class="n">groupId</span><span class="o">&gt;</span><span class="n">org</span><span class="o">.</span><span class="na">apache</span><span class="o">.</span><span class="na">beam</span><span class="o">&lt;/</span><span class="n">groupId</span><span class="o">&gt;</span>
   <span class="o">&lt;</span><span class="n">artifactId</span><span class="o">&gt;</span><span class="n">beam</span><span class="o">-</span><span class="n">runners</span><span class="o">-</span><span class="n">jstorm</span><span class="o">&lt;/</span><span class="n">artifactId</span><span class="o">&gt;</span>
-  <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">20</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
+  <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">21</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
 <span class="o">&lt;/</span><span class="n">dependency</span><span class="o">&gt;</span></code></pre></div>
         </div>
     
diff --git a/website/generated-content/documentation/runners/mapreduce/index.html b/website/generated-content/documentation/runners/mapreduce/index.html
index 4d62d27..aff753f 100644
--- a/website/generated-content/documentation/runners/mapreduce/index.html
+++ b/website/generated-content/documentation/runners/mapreduce/index.html
@@ -186,7 +186,7 @@ limitations under the License.
 <pre><code>&lt;dependency&gt;
   &lt;groupId&gt;org.apache.beam&lt;/groupId&gt;
   &lt;artifactId&gt;beam-runners-mapreduce&lt;/artifactId&gt;
-  &lt;version&gt;2.20.0&lt;/version&gt;
+  &lt;version&gt;2.21.0&lt;/version&gt;
 &lt;/dependency&gt;
 </code></pre><h2 id="deploying-apache-hadoop-mapreduce-with-your-application">Deploying Apache Hadoop MapReduce with your application</h2>
 <p>To execute in a local Hadoop environment, use this command:</p>
diff --git a/website/generated-content/documentation/runners/samza/index.html b/website/generated-content/documentation/runners/samza/index.html
index b22e1b4..61c497f 100644
--- a/website/generated-content/documentation/runners/samza/index.html
+++ b/website/generated-content/documentation/runners/samza/index.html
@@ -206,7 +206,7 @@ limitations under the License.
             <div class="highlight"><pre class="chroma"><code class="language-java" data-lang="java"><span class="o">&lt;</span><span class="n">dependency</span><span class="o">&gt;</span>
   <span class="o">&lt;</span><span class="n">groupId</span><span class="o">&gt;</span><span class="n">org</span><span class="o">.</span><span class="na">apache</span><span class="o">.</span><span class="na">beam</span><span class="o">&lt;/</span><span class="n">groupId</span><span class="o">&gt;</span>
   <span class="o">&lt;</span><span class="n">artifactId</span><span class="o">&gt;</span><span class="n">beam</span><span class="o">-</span><span class="n">runners</span><span class="o">-</span><span class="n">samza</span><span class="o">&lt;/</span><span class="n">artifactId</span><span class="o">&gt;</span>
-  <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">20</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
+  <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">21</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
   <span class="o">&lt;</span><span class="n">scope</span><span class="o">&gt;</span><span class="n">runtime</span><span class="o">&lt;/</span><span class="n">scope</span><span class="o">&gt;</span>
 <span class="o">&lt;/</span><span class="n">dependency</span><span class="o">&gt;</span>
 
diff --git a/website/generated-content/documentation/runners/spark/index.html b/website/generated-content/documentation/runners/spark/index.html
index 9277eb5..52a8709 100644
--- a/website/generated-content/documentation/runners/spark/index.html
+++ b/website/generated-content/documentation/runners/spark/index.html
@@ -250,7 +250,7 @@ the portable Runner. For more information on portability, please visit the
             <div class="highlight"><pre class="chroma"><code class="language-java" data-lang="java"><span class="o">&lt;</span><span class="n">dependency</span><span class="o">&gt;</span>
   <span class="o">&lt;</span><span class="n">groupId</span><span class="o">&gt;</span><span class="n">org</span><span class="o">.</span><span class="na">apache</span><span class="o">.</span><span class="na">beam</span><span class="o">&lt;/</span><span class="n">groupId</span><span class="o">&gt;</span>
   <span class="o">&lt;</span><span class="n">artifactId</span><span class="o">&gt;</span><span class="n">beam</span><span class="o">-</span><span class="n">runners</span><span class="o">-</span><span class="n">spark</span><span class="o">&lt;/</span><span class="n">artifactId</span><span class="o">&gt;</span>
-  <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">20</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
+  <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span><span class="n">2</span><span class="o">.</span><span class="na">21</span><span class="o">.</span><span class="na">0</span><span class="o">&lt;/</span><span class="n">version</span><span class="o">&gt;</span>
 <span class="o">&lt;/</span><span class="n">dependency</span><span class="o">&gt;</span></code></pre></div>
         </div>
     
diff --git a/website/generated-content/documentation/sdks/feature-comparison/index.html b/website/generated-content/documentation/sdks/feature-comparison/index.html
index 4df464c..0a7fb79 100644
--- a/website/generated-content/documentation/sdks/feature-comparison/index.html
+++ b/website/generated-content/documentation/sdks/feature-comparison/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/sdks/go/index.html b/website/generated-content/documentation/sdks/go/index.html
index 2a2a5b1..2725a74 100644
--- a/website/generated-content/documentation/sdks/go/index.html
+++ b/website/generated-content/documentation/sdks/go/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/sdks/java-dependencies/index.html b/website/generated-content/documentation/sdks/java-dependencies/index.html
index df9b468..c92272d 100644
--- a/website/generated-content/documentation/sdks/java-dependencies/index.html
+++ b/website/generated-content/documentation/sdks/java-dependencies/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -267,7 +267,7 @@ the listed versions that will be in scope during execution.</p>
 <li>
 <p>Open <code>BeamModulePlugin.groovy</code>.</p>
 <pre><code>https://raw.githubusercontent.com/apache/beam/v&lt;VERSION_NUMBER&gt;/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
-</code></pre><p>Replace <code>&lt;VERSION_NUMBER&gt;</code> with the major.minor.patch version of the SDK. For example, <a href="https://raw.githubusercontent.com/apache/beam/v2.20.0/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy">https://raw.githubusercontent.com/apache/beam/v2.20.0/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy</a> will provide the dependencies for the 2.20.0 release.</p>
+</code></pre><p>Replace <code>&lt;VERSION_NUMBER&gt;</code> with the major.minor.patch version of the SDK. For example, <a href="https://raw.githubusercontent.com/apache/beam/v2.21.0/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy">https://raw.githubusercontent.com/apache/beam/v2.21.0/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy</a> will provide the dependencies for the 2.21.0 release.</p>
 </li>
 <li>
 <p>Review the list under <code>project.ext.library</code>.</p>
@@ -278,7 +278,7 @@ the listed versions that will be in scope during execution.</p>
 <ol>
 <li>
 <p>Define the Beam SDK and Java versions for the new project.</p>
-<pre><code>export BEAM_VERSION=2.20.0
+<pre><code>export BEAM_VERSION=2.21.0
 export JAVA_VERSION=11
 </code></pre></li>
 <li>
diff --git a/website/generated-content/documentation/sdks/java-extensions/index.html b/website/generated-content/documentation/sdks/java-extensions/index.html
index 4a7ee70..7c211f2 100644
--- a/website/generated-content/documentation/sdks/java-extensions/index.html
+++ b/website/generated-content/documentation/sdks/java-extensions/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/sdks/java-thirdparty/index.html b/website/generated-content/documentation/sdks/java-thirdparty/index.html
index 3bd605f..2392d4c 100644
--- a/website/generated-content/documentation/sdks/java-thirdparty/index.html
+++ b/website/generated-content/documentation/sdks/java-thirdparty/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/sdks/java/euphoria/index.html b/website/generated-content/documentation/sdks/java/euphoria/index.html
index a9f13ea..ffaa13c 100644
--- a/website/generated-content/documentation/sdks/java/euphoria/index.html
+++ b/website/generated-content/documentation/sdks/java/euphoria/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -311,7 +311,7 @@ limitations under the License.
 <h1 id="euphoria-java-8-dsl">Euphoria Java 8 DSL</h1>
 <!--
 NOTE for future maintainer.
-There is [`DocumentationExamplesTest`](/documentation/sdks/javadoc/2.20.0/index.html?org/apache/beam/sdk/extensions/euphoria/core/docs/DocumentationExamplesTest.html) in `beam-sdks-java-extensions-euphoria-core` project where all code examples are validated. Do not change the code examples without reflecting it in the `DocumentationExamplesTest` and vice versa.
+There is [`DocumentationExamplesTest`](/documentation/sdks/javadoc/2.21.0/index.html?org/apache/beam/sdk/extensions/euphoria/core/docs/DocumentationExamplesTest.html) in `beam-sdks-java-extensions-euphoria-core` project where all code examples are validated. Do not change the code examples without reflecting it in the `DocumentationExamplesTest` and vice versa.
 
 Following operator is unsupported. Include it in documentation when supported.
 
diff --git a/website/generated-content/documentation/sdks/java/index.html b/website/generated-content/documentation/sdks/java/index.html
index d385b59..4d65926 100644
--- a/website/generated-content/documentation/sdks/java/index.html
+++ b/website/generated-content/documentation/sdks/java/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/sdks/java/testing/nexmark/index.html b/website/generated-content/documentation/sdks/java/testing/nexmark/index.html
index c524fe7..06ec563 100644
--- a/website/generated-content/documentation/sdks/java/testing/nexmark/index.html
+++ b/website/generated-content/documentation/sdks/java/testing/nexmark/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -478,7 +478,7 @@ or may be published to Pub/Sub or Kafka.</p>
 --stagingLocation=gs://&lt;a gs path for staging&gt; \
 --runner=DataflowRunner \
 --tempLocation=gs://&lt;a gs path for temporary files&gt; \
---filesToStage=target/beam-sdks-java-nexmark-2.20.0.jar
+--filesToStage=target/beam-sdks-java-nexmark-2.21.0.jar
 </code></pre>
 <h3 id="direct-runner-specific-configuration">Direct runner specific configuration</h3>
 <pre><code>--manageResources=false --monitorJobs=true \
@@ -891,7 +891,7 @@ PUBSUB_TOPCI=&lt;existing pubsub topic&gt;
     --driver-memory 512m \
     --executor-memory 512m \
     --executor-cores 1 \
-    sdks/java/testing/nexmark/build/libs/beam-sdks-java-nexmark-2.20.0-spark.jar \
+    sdks/java/testing/nexmark/build/libs/beam-sdks-java-nexmark-2.21.0-spark.jar \
         --runner=SparkRunner \
         --query=0 \
         --streamTimeout=60 \
diff --git a/website/generated-content/documentation/sdks/python-dependencies/index.html b/website/generated-content/documentation/sdks/python-dependencies/index.html
index 7d1109c..2b4f41c 100644
--- a/website/generated-content/documentation/sdks/python-dependencies/index.html
+++ b/website/generated-content/documentation/sdks/python-dependencies/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -267,7 +267,7 @@ the listed versions that will be in scope during execution.</p>
 <li>
 <p>Open <code>setup.py</code>.</p>
 <pre><code>https://raw.githubusercontent.com/apache/beam/v&lt;VERSION_NUMBER&gt;/sdks/python/setup.py
-</code></pre><p>Replace <code>&lt;VERSION_NUMBER&gt;</code> with the major.minor.patch version of the SDK. For example, <a href="ttps://raw.githubusercontent.com/apache/beam/v2.20.0/sdks/python/setup.py" target="_blank"><a href="https://raw.githubusercontent.com/apache/beam/v2.20.0/sdks/python/setup.py">https://raw.githubusercontent.com/apache/beam/v2.20.0/sdks/python/setup.py</a></a> will provide the dependencies for the 2.20.0 release.</p>
+</code></pre><p>Replace <code>&lt;VERSION_NUMBER&gt;</code> with the major.minor.patch version of the SDK. For example, <a href="ttps://raw.githubusercontent.com/apache/beam/v2.21.0/sdks/python/setup.py" target="_blank"><a href="https://raw.githubusercontent.com/apache/beam/v2.21.0/sdks/python/setup.py">https://raw.githubusercontent.com/apache/beam/v2.21.0/sdks/python/setup.py</a></a> will provide the dependencies for the 2.21.0 release.</p>
 </li>
 <li>
 <p>Review the core dependency list under <code>REQUIRED_PACKAGES</code>.</p>
diff --git a/website/generated-content/documentation/sdks/python-pipeline-dependencies/index.html b/website/generated-content/documentation/sdks/python-pipeline-dependencies/index.html
index 9813496..187bad8 100644
--- a/website/generated-content/documentation/sdks/python-pipeline-dependencies/index.html
+++ b/website/generated-content/documentation/sdks/python-pipeline-dependencies/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/sdks/python-streaming/index.html b/website/generated-content/documentation/sdks/python-streaming/index.html
index 95b4259..6c4a525 100644
--- a/website/generated-content/documentation/sdks/python-streaming/index.html
+++ b/website/generated-content/documentation/sdks/python-streaming/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/sdks/python-type-safety/index.html b/website/generated-content/documentation/sdks/python-type-safety/index.html
index a70287e..24a7558 100644
--- a/website/generated-content/documentation/sdks/python-type-safety/index.html
+++ b/website/generated-content/documentation/sdks/python-type-safety/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/documentation/sdks/python/index.html b/website/generated-content/documentation/sdks/python/index.html
index b356462..b987c0f 100644
--- a/website/generated-content/documentation/sdks/python/index.html
+++ b/website/generated-content/documentation/sdks/python/index.html
@@ -142,7 +142,7 @@
   <span class="section-nav-list-title">Java</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/java/">Java SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/javadoc/2.20.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/javadoc/2.21.0/" target="_blank">Java SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
@@ -157,7 +157,7 @@
   <span class="section-nav-list-title">Python</span>
   <ul class="section-nav-list">
     <li><a href="/documentation/sdks/python/">Python SDK overview</a></li>
-    <li><a href="https://beam.apache.org/releases/pydoc/2.20.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
+    <li><a href="https://beam.apache.org/releases/pydoc/2.21.0/" target="_blank">Python SDK API reference <img src="/images/external-link-icon.png"
                                                                                                                                    width="14" height="14"
                                                                                                                                    alt="External link."></a>
     </li>
diff --git a/website/generated-content/feed.xml b/website/generated-content/feed.xml
index cf5e29d..1a2e4d4 100644
--- a/website/generated-content/feed.xml
+++ b/website/generated-content/feed.xml
@@ -13,6 +13,118 @@
     
     
     <item>
+      <title>Apache Beam 2.21.0</title>
+      <description>
+        
+        
+        &lt;!--
+Licensed under the Apache License, Version 2.0 (the &#34;License&#34;);
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an &#34;AS IS&#34; BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+--&gt;
+&lt;p&gt;We are happy to present the new 2.21.0 release of Beam. This release includes both improvements and new functionality.
+See the &lt;a href=&#34;/get-started/downloads/#xxxx-xxxx&#34;&gt;download page&lt;/a&gt; for this release.
+For more information on changes in 2.21.0, check out the
+&lt;a href=&#34;https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12319527&amp;amp;version=12347143&#34;&gt;detailed release notes&lt;/a&gt;.&lt;/p&gt;
+&lt;h2 id=&#34;ios&#34;&gt;I/Os&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;Python: Deprecated module &lt;code&gt;apache_beam.io.gcp.datastore.v1&lt;/code&gt; has been removed
+as the client it uses is out of date and does not support Python 3
+(&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9529&#34;&gt;BEAM-9529&lt;/a&gt;).
+Please migrate your code to use
+&lt;a href=&#34;https://beam.apache.org/releases/pydoc/current/apache_beam.io.gcp.datastore.v1new.datastoreio.html&#34;&gt;apache_beam.io.gcp.datastore.&lt;strong&gt;v1new&lt;/strong&gt;&lt;/a&gt;.
+See the updated
+&lt;a href=&#34;https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/cookbook/datastore_wordcount.py&#34;&gt;datastore_wordcount&lt;/a&gt;
+for example usage.&lt;/li&gt;
+&lt;li&gt;Python SDK: Added integration tests and updated batch write functionality for Google Cloud Spanner transform (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-8949&#34;&gt;BEAM-8949&lt;/a&gt;).&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;new-features--improvements&#34;&gt;New Features / Improvements&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;
+&lt;p&gt;Python SDK will now use Python 3 type annotations as pipeline type hints.
+(&lt;a href=&#34;https://github.com/apache/beam/pull/10717&#34;&gt;#10717&lt;/a&gt;)&lt;/p&gt;
+&lt;p&gt;If you suspect that this feature is causing your pipeline to fail, calling
+&lt;code&gt;apache_beam.typehints.disable_type_annotations()&lt;/code&gt; before pipeline creation
+will disable is completely, and decorating specific functions (such as
+&lt;code&gt;process()&lt;/code&gt;) with &lt;code&gt;@apache_beam.typehints.no_annotations&lt;/code&gt; will disable it
+for that function.&lt;/p&gt;
+&lt;p&gt;More details will be in
+&lt;a href=&#34;https://beam.apache.org/documentation/sdks/python-type-safety/&#34;&gt;Ensuring Python Type Safety&lt;/a&gt;
+and an upcoming
+&lt;a href=&#34;https://beam.apache.org/blog/python/typing/2020/03/06/python-typing.html&#34;&gt;blog post&lt;/a&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Java SDK: Introducing the concept of options in Beam Schema’s. These options add extra
+context to fields and schemas. This replaces the current Beam metadata that is present
+in a FieldType only, options are available in fields and row schemas. Schema options are
+fully typed and can contain complex rows. &lt;em&gt;Remark: Schema aware is still experimental.&lt;/em&gt;
+(&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9035&#34;&gt;BEAM-9035&lt;/a&gt;)&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Java SDK: The protobuf extension is fully schema aware and also includes protobuf option
+conversion to beam schema options. &lt;em&gt;Remark: Schema aware is still experimental.&lt;/em&gt;
+(&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9044&#34;&gt;BEAM-9044&lt;/a&gt;)&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Added ability to write to BigQuery via Avro file loads (Python) (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-8841&#34;&gt;BEAM-8841&lt;/a&gt;)&lt;/p&gt;
+&lt;p&gt;By default, file loads will be done using JSON, but it is possible to
+specify the temp_file_format parameter to perform file exports with AVRO.
+AVRO-based file loads work by exporting Python types into Avro types, so
+to switch to Avro-based loads, you will need to change your data types
+from Json-compatible types (string-type dates and timestamp, long numeric
+values as strings) into Python native types that are written to Avro
+(Python&amp;rsquo;s date, datetime types, decimal, etc). For more information
+see &lt;a href=&#34;https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro#avro_conversions&#34;&gt;https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro#avro_conversions&lt;/a&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Added integration of Java SDK with Google Cloud AI VideoIntelligence service
+(&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9147&#34;&gt;BEAM-9147&lt;/a&gt;)&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Added integration of Java SDK with Google Cloud AI natural language processing API
+(&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9634&#34;&gt;BEAM-9634&lt;/a&gt;)&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;&lt;code&gt;docker-pull-licenses&lt;/code&gt; tag was introduced. Licenses/notices of third party dependencies will be added to the docker images when &lt;code&gt;docker-pull-licenses&lt;/code&gt; was set.
+The files are added to &lt;code&gt;/opt/apache/beam/third_party_licenses/&lt;/code&gt;.
+By default, no licenses/notices are added to the docker images. (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9136&#34;&gt;BEAM-9136&lt;/a&gt;)&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;breaking-changes&#34;&gt;Breaking Changes&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;Dataflow runner now requires the &lt;code&gt;--region&lt;/code&gt; option to be set, unless a default value is set in the environment (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9199&#34;&gt;BEAM-9199&lt;/a&gt;). See &lt;a href=&#34;https://cloud.google.com/dataflow/docs/concepts/regional-endpoints&#34;&gt;here&lt;/a&gt; for more details.&lt;/li&gt;
+&lt;li&gt;HBaseIO.ReadAll now requires a PCollection of HBaseIO.Read objects instead of HBaseQuery objects (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9279&#34;&gt;BEAM-9279&lt;/a&gt;).&lt;/li&gt;
+&lt;li&gt;ProcessContext.updateWatermark has been removed in favor of using a WatermarkEstimator (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9430&#34;&gt;BEAM-9430&lt;/a&gt;).&lt;/li&gt;
+&lt;li&gt;Coder inference for PCollection of Row objects has been disabled (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9569&#34;&gt;BEAM-9569&lt;/a&gt;).&lt;/li&gt;
+&lt;li&gt;Go SDK docker images are no longer released until further notice.&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;deprecations&#34;&gt;Deprecations&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;Java SDK: Beam Schema FieldType.getMetadata is now deprecated and is replaced by the Beam
+Schema Options, it will be removed in version &lt;code&gt;2.23.0&lt;/code&gt;. (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9704&#34;&gt;BEAM-9704&lt;/a&gt;)&lt;/li&gt;
+&lt;li&gt;The &lt;code&gt;--zone&lt;/code&gt; option in the Dataflow runner is now deprecated. Please use &lt;code&gt;--worker_zone&lt;/code&gt; instead. (&lt;a href=&#34;https://issues.apache.org/jira/browse/BEAM-9716&#34;&gt;BEAM-9716&lt;/a&gt;)&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;list-of-contributors&#34;&gt;List of Contributors&lt;/h2&gt;
+&lt;p&gt;According to git shortlog, the following people contributed to the 2.21.0 release. Thank you to all contributors!&lt;/p&gt;
+&lt;p&gt;Aaron Meihm, Adrian Eka, Ahmet Altay, AldairCoronel, Alex Van Boxel, Alexey Romanenko, Andrew Crites, Andrew Pilloud, Ankur Goenka, Badrul (Taki) Chowdhury, Bartok Jozsef, Boyuan Zhang, Brian Hulette, brucearctor, bumblebee-coming, Chad Dombrova, Chamikara Jayalath, Chie Hayashida, Chris Gorgolewski, Chuck Yang, Colm O hEigeartaigh, Curtis &amp;ldquo;Fjord&amp;rdquo; Hawthorne, Daniel Mills, Daniel Oliveira, David Yan, Elias Djurfeldt, Emiliano Capoccia, Etienne Chauchot, Fernan [...]
+
+      </description>
+      <link>/blog/beam-2.21.0/</link>
+      <pubDate>Wed, 27 May 2020 00:00:01 -0800</pubDate>
+      
+      <guid>/blog/beam-2.21.0/</guid>
+      
+        <category>blog</category>
+      
+    </item>
+    
+    <item>
       <title>Beam Summit Digital Is Coming - Register Now!</title>
       <description>
         
@@ -821,327 +933,5 @@ Viktor Gerdin, Yichi Zhang, Yifan Mai, Yifan Zou, Yueyang Qiu.&lt;/p&gt;
       
     </item>
     
-    <item>
-      <title>Looping timers in Apache Beam</title>
-      <description>
-        
-        
-        &lt;!--
-Licensed under the Apache License, Version 2.0 (the &#34;License&#34;);
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an &#34;AS IS&#34; BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
---&gt;
-&lt;p&gt;Apache Beam’s primitives let you build expressive data pipelines, suitable for a
-variety of use cases. One specific use case is the analysis of time series data
-in which continuous sequences across window boundaries are important. A few fun
-challenges arise as you tackle this type of data and in this blog we will
-explore one of those in more detail and make use of the Timer API
-(&lt;a href=&#34;/blog/2017/08/28/timely-processing.html&#34;&gt;blog post&lt;/a&gt;)
-using the &amp;ldquo;looping timer&amp;rdquo; pattern.&lt;/p&gt;
-&lt;p&gt;With Beam in streaming mode, you can take streams of data and build analytical
-transforms to produce results on the data. But for time series data, the absence
-of data is useful information. So how can we produce results in the absence of
-data?&lt;/p&gt;
-&lt;p&gt;Let&amp;rsquo;s use a more concrete example to illustrate the requirement. Imagine you
-have a simple pipeline that sums the number of events coming from an IoT device
-every minute. We would like to produce the value 0 when no data has been seen
-within a specific time interval. So why can this get tricky? Well it is easy to
-build a simple pipeline that counts events as they arrive, but when there is no
-event, there is nothing to count!&lt;/p&gt;
-&lt;p&gt;Let&amp;rsquo;s build a simple pipeline to work with:&lt;/p&gt;
-&lt;pre&gt;&lt;code&gt;  // We will start our timer at 1 sec from the fixed upper boundary of our
-  // minute window
-  Instant now = Instant.parse(&amp;quot;2000-01-01T00:00:59Z&amp;quot;);
-
-  // ----- Create some dummy data
-
-  // Create 3 elements, incrementing by 1 minute and leaving a time gap between
-  // element 2 and element 3
-  TimestampedValue&amp;lt;KV&amp;lt;String, Integer&amp;gt;&amp;gt; time_1 =
-    TimestampedValue.of(KV.of(&amp;quot;Key_A&amp;quot;, 1), now);
-
-  TimestampedValue&amp;lt;KV&amp;lt;String, Integer&amp;gt;&amp;gt; time_2 =
-    TimestampedValue.of(KV.of(&amp;quot;Key_A&amp;quot;, 2),
-    now.plus(Duration.standardMinutes(1)));
-
-  // No Value for start time + 2 mins
-  TimestampedValue&amp;lt;KV&amp;lt;String, Integer&amp;gt;&amp;gt; time_3 =
-    TimestampedValue.of(KV.of(&amp;quot;Key_A&amp;quot;, 3),
-    now.plus(Duration.standardMinutes(3)));
-
-  // Create pipeline
-  PipelineOptions options = PipelineOptionsFactory.fromArgs(args).withValidation()
-    .as(PipelineOptions.class);
-
-  Pipeline p = Pipeline.create(options);
-
-  // Apply a fixed window of duration 1 min and Sum the results
-  p.apply(Create.timestamped(time_1, time_2, time_3))
-   .apply(
-      Window.&amp;lt;KV&amp;lt;String,Integer&amp;gt;&amp;gt;into(
-FixedWindows.&amp;lt;Integer&amp;gt;of(Duration.standardMinutes(1))))
-        .apply(Sum.integersPerKey())
-        .apply(ParDo.of(new DoFn&amp;lt;KV&amp;lt;String, Integer&amp;gt;, KV&amp;lt;String, Integer&amp;gt;&amp;gt;() {
-
-          @ProcessElement public void process(ProcessContext c) {
-            LOG.info(&amp;quot;Value is {} timestamp is {}&amp;quot;, c.element(), c.timestamp());
-          }
-       }));
-
-  p.run();
-&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Running that pipeline will result in the following output:&lt;/p&gt;
-&lt;pre&gt;&lt;code&gt;INFO  LoopingTimer  - Value is KV{Key_A, 1} timestamp is 2000-01-01T00:00:59.999Z
-INFO  LoopingTimer  - Value is KV{Key_A, 3} timestamp is 2000-01-01T00:03:59.999Z
-INFO  LoopingTimer  - Value is KV{Key_A, 2} timestamp is 2000-01-01T00:01:59.999Z
-&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
-&lt;p&gt;Note: The lack of order in the output should be expected, however the
-key-window tuple is correctly computed.&lt;/p&gt;
-&lt;/blockquote&gt;
-&lt;p&gt;As expected, we see output in each of the interval windows which had a data
-point with a timestamp between the minimum and maximum value of the window.
-There was a data point at timestamps  00:00:59,  00:01:59 and  00:03:59, which
-fell into the following interval windows.&lt;/p&gt;
-&lt;ul&gt;
-&lt;li&gt;[00:00:00, 00:00:59.999)&lt;/li&gt;
-&lt;li&gt;[00:01:00, 00:01:59.999)&lt;/li&gt;
-&lt;li&gt;[00:03:00, 00:03:59.999)&lt;/li&gt;
-&lt;/ul&gt;
-&lt;p&gt;But as there was no data between  00:02:00 and  00:02:59, no value is produced
-for interval window  [00:02:00,00:02:59.999).&lt;/p&gt;
-&lt;p&gt;How can we get Beam to output values for that missing window? First, let’s walk
-through some options that do not make use of the Timer API.&lt;/p&gt;
-&lt;h2 id=&#34;option-1-external-heartbeat&#34;&gt;Option 1: External heartbeat&lt;/h2&gt;
-&lt;p&gt;We can use an external system to emit a value for each time interval and inject
-it into the stream of data that Beam consumes. This simple option moves any
-complexity out of the Beam pipeline. But using an external system means we need
-to monitor this system and perform other maintenance tasks in tandem with the
-Beam pipeline.&lt;/p&gt;
-&lt;h2 id=&#34;option-2-use-a-generated-source-in-the-beam-pipeline&#34;&gt;Option 2: Use a generated source in the Beam pipeline&lt;/h2&gt;
-&lt;p&gt;We can use a generating source to emit the value using this code snippet:&lt;/p&gt;
-&lt;pre&gt;&lt;code&gt;pipeline.apply(GenerateSequence.
-            from(0).withRate(1,Duration.standardSeconds(1L)))
-&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;We can then:&lt;/p&gt;
-&lt;ol&gt;
-&lt;li&gt;Use a DoFn to convert the value to zero.&lt;/li&gt;
-&lt;li&gt;Flatten this value with the real source.&lt;/li&gt;
-&lt;li&gt;Produce a PCollection which has ticks in every time interval.&lt;/li&gt;
-&lt;/ol&gt;
-&lt;p&gt;This is also a simple way of producing a value in each time interval.&lt;/p&gt;
-&lt;h2 id=&#34;option-1--2-the-problem-with-multiple-keys&#34;&gt;Option 1 &amp;amp; 2 The problem with multiple keys&lt;/h2&gt;
-&lt;p&gt;Both options 1 and 2 work well for the case where there the pipeline processes a
-single key. Let’s now deal with the case where instead of 1 IoT device, there
-are 1000s or 100,000s of these devices, each with a unique key. To make option 1
-or option 2 work in this scenario, we need to carry out an extra step: creating
-a FanOut DoFn. Each tick needs to be distributed to all the potential keys, so
-we need to create a FanOut DoFn that takes the dummy value and generates a
-key-value pair for every available key.&lt;/p&gt;
-&lt;p&gt;For example, let&amp;rsquo;s assume we have 3 keys for 3 IoT devices, {key1,key2,key3}.
-Using the method we outlined in Option 2 when we get the first element from
-GenerateSequence, we need to create a loop in the DoFn that generates 3
-key-value pairs. These pairs become the heartbeat value for each of the IoT
-devices.&lt;/p&gt;
-&lt;p&gt;And things get a lot more fun when we need to deal with lots of IoT devices,
-with a list of keys that are dynamically changing. We would need to add a
-transform that does a Distinct operation and feed the data produced as a
-side-input into the FanOut DoFn.&lt;/p&gt;
-&lt;h2 id=&#34;option-3-implementing-a-heartbeat-using-beam-timers&#34;&gt;Option 3: Implementing a heartbeat using Beam timers&lt;/h2&gt;
-&lt;p&gt;So how do timers help? Well let&amp;rsquo;s have a look at a new transform:&lt;/p&gt;
-&lt;p&gt;Edit: Looping Timer State changed from Boolean to Long to allow for min value check.&lt;/p&gt;
-
-
-
-
-
-    
-        &lt;div class=language-java&gt;
-            &lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;LoopingStatefulTimer&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;extends&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DoFn&lt;/span&gt;&lt;span class=&#34;o&#34; [...]
-
-    &lt;span class=&#34;n&#34;&gt;Instant&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stopTimerTime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;;&lt;/span&gt;
-
-    &lt;span class=&#34;n&#34;&gt;LoopingStatefulTimer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Instant&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stopTime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;){&lt;/span&gt;
-      &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;stopTimerTime&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stopTime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;;&lt;/span&gt;
-    &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
-
-    &lt;span class=&#34;nd&#34;&gt;@StateId&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;loopingTimerTime&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
-    &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;final&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;StateSpec&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ValueState&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Long&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;loopingTimerTime&lt;/span&gt; &lt;span cla [...]
-        &lt;span class=&#34;n&#34;&gt;StateSpecs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;BigEndianLongCoder&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;());&lt;/span&gt;
-
-    &lt;span class=&#34;nd&#34;&gt;@StateId&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;key&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
-    &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;final&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;StateSpec&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ValueState&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;o&# [...]
-        &lt;span class=&#34;n&#34;&gt;StateSpecs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;StringUtf8Coder&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;());&lt;/span&gt;
-
-    &lt;span class=&#34;nd&#34;&gt;@TimerId&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;loopingTimer&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
-    &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;final&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TimerSpec&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;loopingTimer&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;
-        &lt;span class=&#34;n&#34;&gt;TimerSpecs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;timer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TimeDomain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;EVENT_TIME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;);&lt;/span&gt;
-
-    &lt;span class=&#34;nd&#34;&gt;@ProcessElement&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;process&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ProcessContext&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nd&#34;&gt;@StateId&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt [...]
-        &lt;span class=&#34;nd&#34;&gt;@StateId&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;loopingTimerTime&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ValueState&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Long&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;loopingTimerTime&lt;/span&gt;&lt; [...]
-        &lt;span class=&#34;nd&#34;&gt;@TimerId&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;loopingTimer&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Timer&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;loopingTimer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
-
-      &lt;span class=&#34;c1&#34;&gt;// If the timer has been set already, or if the value is smaller than
-&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;// the current element + window duration, do not set
-&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;      &lt;span class=&#34;n&#34;&gt;Long&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;currentTimerValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;loopingTimerTime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;();&lt;/span&gt;
-      &lt;span class=&#34;n&#34;&gt;Instant&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nextTimerTimeBasedOnCurrentElement&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;timestamp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;plus&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Dur [...]
-
-      &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;currentTimerValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;currentTimerValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
-          &lt;span class=&#34;n&#34;&gt;nextTimerTimeBasedOnCurrentElement&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;getMillis&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;())&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
-        &lt;span class=&#34;n&#34;&gt;loopingTimer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nextTimerTimeBasedOnCurrentElement&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;);&lt;/span&gt;
-        &lt;span class=&#34;n&#34;&gt;loopingTimerTime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nextTimerTimeBasedOnCurrentElement&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;getMillis&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;());&lt;/span&gt;
-      &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
-
-      &lt;span class=&#34;c1&#34;&gt;// We need this value so that we can output a value for the correct key in OnTimer
-&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;      &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=& [...]
-        &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;element&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;getKey&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;());&lt;/span&gt;
-      &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
-
-      &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;output&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;element&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;());&lt;/span&gt;
-    &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
-
-    &lt;span class=&#34;nd&#34;&gt;@OnTimer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;loopingTimer&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
-    &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;onTimer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;
-        &lt;span class=&#34;n&#34;&gt;OnTimerContext&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt;
-        &lt;span class=&#34;nd&#34;&gt;@StateId&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;key&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ValueState&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;o&#34;&g [...]
-        &lt;span class=&#34;nd&#34;&gt;@TimerId&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;loopingTimer&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Timer&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;loopingTimer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
-
-      &lt;span class=&#34;n&#34;&gt;LOG&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;info&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Timer @ {} fired&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;timestamp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;());&lt;/span&gt;
-      &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;output&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;KV&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;read [...]
-
-      &lt;span class=&#34;c1&#34;&gt;// If we do not put in a “time to live” value, then the timer would loop forever
-&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;      &lt;span class=&#34;n&#34;&gt;Instant&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nextTimer&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;timestamp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;plus&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;& [...]
-      &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nextTimer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;isBefore&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stopTimerTime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
-        &lt;span class=&#34;n&#34;&gt;loopingTimer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nextTimer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;);&lt;/span&gt;
-      &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
-        &lt;span class=&#34;n&#34;&gt;LOG&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;info&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;
-            &lt;span class=&#34;s&#34;&gt;&amp;#34;Timer not being set as exceeded Stop Timer value {} &amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt;
-            &lt;span class=&#34;n&#34;&gt;stopTimerTime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;);&lt;/span&gt;
-      &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
-    &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
-  &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
-        &lt;/div&gt;
-    
-
-
-&lt;p&gt;There are two data values that the state API needs to keep:&lt;/p&gt;
-&lt;ol&gt;
-&lt;li&gt;A boolean &lt;code&gt;timeRunning&lt;/code&gt; value used to avoid resetting the timer if it’s
-already running.&lt;/li&gt;
-&lt;li&gt;A &amp;ldquo;&lt;em&gt;key&lt;/em&gt;&amp;rdquo; state object value that allows us to store the key that we are
-working with. This information will be needed in the &lt;code&gt;OnTimer&lt;/code&gt; event later.&lt;/li&gt;
-&lt;/ol&gt;
-&lt;p&gt;We also have a Timer with the ID &lt;code&gt;**loopingTimer**&lt;/code&gt; that acts as our per
-interval alarm clock. Note that the timer is an &lt;em&gt;event timer&lt;/em&gt;. It fires based on
-the watermark, not on the passage of time as the pipeline runs.&lt;/p&gt;
-&lt;p&gt;Next, let&amp;rsquo;s unpack what&amp;rsquo;s happening in the @ProcessElement block:&lt;/p&gt;
-&lt;p&gt;The first element to come to this block will:&lt;/p&gt;
-&lt;ol&gt;
-&lt;li&gt;Set the state of the &lt;code&gt;timerRunner&lt;/code&gt; to True.&lt;/li&gt;
-&lt;li&gt;Write the value of the key from the key-value pair into the key StateValue.&lt;/li&gt;
-&lt;li&gt;The code sets the value of the timer to fire one minute after the elements
-timestamp. Note that the maximum value allowed for this timestamp is
-XX:XX:59.999. This places the maximum alarm value at the upper boundary of
-the next time interval.&lt;/li&gt;
-&lt;li&gt;Finally, we output the data from the &lt;code&gt;@ProcessElement&lt;/code&gt; block using
-&lt;code&gt;c.output&lt;/code&gt;.&lt;/li&gt;
-&lt;/ol&gt;
-&lt;p&gt;In the @OnTimer block, the following occurs:&lt;/p&gt;
-&lt;ol&gt;
-&lt;li&gt;The code emits a value with the key pulled from our key StateValue and a
-value of 0. The timestamp of the event corresponds to  the event time of the
-timer firing.&lt;/li&gt;
-&lt;li&gt;We set a new timer for one minute from now, unless we are past the
-&lt;code&gt;stopTimerTime&lt;/code&gt; value. Your use case will normally have more complex stopping
-conditions, but we use a simple condition here to allow us to keep the
-illustrated code simple. The topic of stopping conditions is discussed in
-more detail later.&lt;/li&gt;
-&lt;/ol&gt;
-&lt;p&gt;And that&amp;rsquo;s it, let&amp;rsquo;s add our transform back into the pipeline:&lt;/p&gt;
-
-
-
-
-
-    
-        &lt;div class=language-java&gt;
-            &lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Apply a fixed window of duration 1 min and Sum the results
-&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;apply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;timestamped&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;time_1&lt;/span&gt;&lt;span cl [...]
-    &lt;span class=&#34;n&#34;&gt;Window&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;KV&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Integer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;into&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span& [...]
-    &lt;span class=&#34;c1&#34;&gt;// We use a combiner to reduce the number of calls in keyed state
-&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;c1&#34;&gt;// from all elements to 1 per FixedWindow
-&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;apply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Sum&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;integersPerKey&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;())&lt;/span&gt;
-    &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;apply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Window&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;into&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;GlobalWindows&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;()))&lt;/span&gt;
-    &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;apply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ParDo&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;LoopingStatefulTimer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class= [...]
-    &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;apply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Window&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;into&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FixedWindows&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;o [...]
-    &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;apply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Sum&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;integersPerKey&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;())&lt;/span&gt;
-    &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;apply&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ParDo&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DoFn&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#3 [...]
-
-      &lt;span class=&#34;nd&#34;&gt;@ProcessElement&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;process&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ProcessContext&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
-
-        &lt;span class=&#34;n&#34;&gt;LOG&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;info&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Value is {} timestamp is {}&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;element&lt;/span&gt;&lt;span class=&#34;o&#34;&gt; [...]
-
-     &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
-  &lt;span class=&#34;o&#34;&gt;}));&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
-        &lt;/div&gt;
-    
-
-
-&lt;ol&gt;
-&lt;li&gt;In the first part of the pipeline we create FixedWindows and reduce the value
-per key down to a single Sum.&lt;/li&gt;
-&lt;li&gt;Next we re-window the output into a GlobalWindow. Since state and timers are
-per window, they must be set within the window boundary. We want the looping
-timer to span all the fixed windows, so we set it up in the global window.&lt;/li&gt;
-&lt;li&gt;We then add our LoopingStatefulTimer DoFn.&lt;/li&gt;
-&lt;li&gt;Finally, we reapply the FixedWindows and Sum our values.&lt;/li&gt;
-&lt;/ol&gt;
-&lt;p&gt;This pipeline ensures that a value of zero exists for each interval window, even
-if the Source of the pipeline emitted a value in the minimum and maximum
-boundaries of the interval window. This means that we can mark the absence of
-data.&lt;/p&gt;
-&lt;p&gt;You might question why we use two reducers with multiple &lt;code&gt;Sum.integersPerKey&lt;/code&gt;.
-Why not just use one? Functionally, using one would also produce the correct
-result. However, putting two &lt;code&gt;Sum.integersPerKey&lt;/code&gt; gives us a nice performance
-advantage. It reduces the number of elements from many to just one per time
-interval. This can reduce the number of reads of the State API during the
-&lt;code&gt;@ProcessElement&lt;/code&gt; calls.&lt;/p&gt;
-&lt;p&gt;Here is the logging output of running our modified pipeline:&lt;/p&gt;
-&lt;pre&gt;&lt;code&gt;INFO  LoopingTimer  - Timer @ 2000-01-01T00:01:59.999Z fired
-INFO  LoopingTimer  - Timer @ 2000-01-01T00:02:59.999Z fired
-INFO  LoopingTimer  - Timer @ 2000-01-01T00:03:59.999Z fired
-INFO  LoopingTimer  - Timer not being set as exceeded Stop Timer value 2000-01-01T00:04:00.000Z
-INFO  LoopingTimer  - Value is KV{Key_A, 1} timestamp is 2000-01-01T00:00:59.999Z
-INFO  LoopingTimer  - Value is KV{Key_A, 0} timestamp is 2000-01-01T00:02:59.999Z
-INFO  LoopingTimer  - Value is KV{Key_A, 2} timestamp is 2000-01-01T00:01:59.999Z
-INFO  LoopingTimer  - Value is KV{Key_A, 3} timestamp is 2000-01-01T00:03:59.999Z
-&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Yay! We now have output from the time interval [00:01:00, 00:01:59.999), even
-though the source dataset has no elements in that interval.&lt;/p&gt;
-&lt;p&gt;In this blog, we covered one of the fun areas around time series use cases and
-worked through several options, including an advanced use case of the Timer API.
-Happy looping everyone!&lt;/p&gt;
-&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Looping timers is an interesting new use case for the Timer API and
-runners will need to add support for it with all of their more advanced
-feature sets. You can experiment with this pattern today using the
-DirectRunner. For other runners, please look out for their release notes on
-support for dealing with this use case in production.&lt;/p&gt;
-&lt;p&gt;(&lt;a href=&#34;/documentation/runners/capability-matrix/&#34;&gt;Capability Matrix&lt;/a&gt;)&lt;/p&gt;
-&lt;p&gt;Runner specific notes:
-Google Cloud Dataflow Runners Drain feature does not support looping timers (Link to matrix)&lt;/p&gt;
-      </description>
-      <link>/blog/looping-timers/</link>
-      <pubDate>Tue, 11 Jun 2019 00:00:01 -0800</pubDate>
-      
-      <guid>/blog/looping-timers/</guid>
-      
-        <category>blog</category>
-      
-    </item>
-    
   </channel>
 </rss>
diff --git a/website/generated-content/get-started/downloads/index.html b/website/generated-content/get-started/downloads/index.html
index 63bf707..802a831 100644
--- a/website/generated-content/get-started/downloads/index.html
+++ b/website/generated-content/get-started/downloads/index.html
@@ -174,6 +174,7 @@
     <li><a href="#api-stability">API stability</a></li>
     <li><a href="#releases">Releases</a>
       <ul>
+        <li><a href="#2210-2020-05-27">2.21.0 (2020-05-27)</a></li>
         <li><a href="#2200-2020-04-15">2.20.0 (2020-04-15)</a></li>
         <li><a href="#2190-2020-02-04">2.19.0 (2020-02-04)</a></li>
         <li><a href="#2180-2020-01-23">2.18.0 (2020-01-23)</a></li>
@@ -217,7 +218,7 @@ limitations under the License.
 -->
 <h1 id="apache-beam8482-downloads">Apache Beam™ Downloads</h1>
 <blockquote>
-<p>Beam SDK 2.20.0 is the latest released version.</p>
+<p>Beam SDK 2.21.0 is the latest released version.</p>
 </blockquote>
 <h2 id="using-a-central-repository">Using a central repository</h2>
 <p>The easiest way to use Apache Beam is via one of the released versions in a
@@ -228,18 +229,18 @@ with the <code>DirectRunner</code>, add the following dependencies to your <code
 <pre><code>&lt;dependency&gt;
   &lt;groupId&gt;org.apache.beam&lt;/groupId&gt;
   &lt;artifactId&gt;beam-sdks-java-core&lt;/artifactId&gt;
-  &lt;version&gt;2.20.0&lt;/version&gt;
+  &lt;version&gt;2.21.0&lt;/version&gt;
 &lt;/dependency&gt;
 &lt;dependency&gt;
   &lt;groupId&gt;org.apache.beam&lt;/groupId&gt;
   &lt;artifactId&gt;beam-runners-direct-java&lt;/artifactId&gt;
-  &lt;version&gt;2.20.0&lt;/version&gt;
+  &lt;version&gt;2.21.0&lt;/version&gt;
   &lt;scope&gt;runtime&lt;/scope&gt;
 &lt;/dependency&gt;
 </code></pre>
 <p>Similarly in Python, if you are using PyPI and want to use the SDK for Python
 with <code>DirectRunner</code>, add the following requirement to your <code>setup.py</code> file:</p>
-<pre><code>apache-beam==2.20.0
+<pre><code>apache-beam==2.21.0
 </code></pre>
 <p>Additionally, you may want to depend on additional SDK modules, such as IO
 connectors or other extensions, and additional runners to execute your pipeline
@@ -264,15 +265,20 @@ the form <code>major.minor.incremental</code> and are incremented as follows:</p
 <li>minor version for new functionality added in a backward-compatible manner</li>
 <li>incremental version for forward-compatible bug fixes</li>
 </ul>
-<p>Please note that APIs marked <a href="https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/annotations/Experimental.html"><code>@Experimental</code></a>
+<p>Please note that APIs marked <a href="https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/annotations/Experimental.html"><code>@Experimental</code></a>
 may change at any point and are not guaranteed to remain compatible across versions.</p>
 <p>Additionally, any API may change before the first stable release, i.e., between
 versions denoted <code>0.x.y</code>.</p>
 <h2 id="releases">Releases</h2>
+<h3 id="2210-2020-05-27">2.21.0 (2020-05-27)</h3>
+<p>Official <a href="http://www.apache.org/dyn/closer.cgi/beam/2.21.0/apache-beam-2.21.0-source-release.zip">source code download</a>.
+<a href="https://downloads.apache.org/beam/2.21.0/apache-beam-2.21.0-source-release.zip.sha512">SHA-512</a>.
+<a href="https://downloads.apache.org/beam/2.21.0/apache-beam-2.21.0-source-release.zip.asc">signature</a>.</p>
+<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12319527&amp;version=12347143">Release notes</a>.</p>
 <h3 id="2200-2020-04-15">2.20.0 (2020-04-15)</h3>
-<p>Official <a href="http://www.apache.org/dyn/closer.cgi/beam/2.20.0/apache-beam-2.20.0-source-release.zip">source code download</a>.
-<a href="https://downloads.apache.org/beam/2.20.0/apache-beam-2.20.0-source-release.zip.sha512">SHA-512</a>.
-<a href="https://downloads.apache.org/beam/2.20.0/apache-beam-2.20.0-source-release.zip.asc">signature</a>.</p>
+<p>Official <a href="https://archive.apache.org/dist/beam/2.20.0/apache-beam-2.20.0-source-release.zip">source code download</a>.
+<a href="https://archive.apache.org/dist/beam/2.20.0/apache-beam-2.20.0-source-release.zip.sha512">SHA-512</a>.
+<a href="https://archive.apache.org/dist/beam/2.20.0/apache-beam-2.20.0-source-release.zip.asc">signature</a>.</p>
 <p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12319527&amp;version=12346780">Release notes</a>.</p>
 <h3 id="2190-2020-02-04">2.19.0 (2020-02-04)</h3>
 <p>Official <a href="https://archive.apache.org/dist/beam/2.19.0/apache-beam-2.19.0-source-release.zip">source code download</a>.
diff --git a/website/generated-content/get-started/index.xml b/website/generated-content/get-started/index.xml
index 4ce52a0..c40cd4c 100644
--- a/website/generated-content/get-started/index.xml
+++ b/website/generated-content/get-started/index.xml
@@ -1436,7 +1436,7 @@ limitations under the License.
             &lt;pre&gt;&lt;code&gt;$ mvn archetype:generate \
       -DarchetypeGroupId=org.apache.beam \
       -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \
-      -DarchetypeVersion=2.20.0 \
+      -DarchetypeVersion=2.21.0 \
       -DgroupId=org.example \
       -DartifactId=word-count-beam \
       -Dversion=&amp;#34;0.1&amp;#34; \
@@ -1456,7 +1456,7 @@ limitations under the License.
             &lt;pre&gt;&lt;code&gt;PS&amp;gt; mvn archetype:generate `
  -D archetypeGroupId=org.apache.beam `
  -D archetypeArtifactId=beam-sdks-java-maven-archetypes-examples `
- -D archetypeVersion=2.20.0 `
+ -D archetypeVersion=2.21.0 `
  -D groupId=org.example `
  -D artifactId=word-count-beam `
  -D version=&amp;#34;0.1&amp;#34; `
@@ -2513,7 +2513,7 @@ limitations under the License.
 --&gt;
 &lt;h1 id=&#34;apache-beam8482-downloads&#34;&gt;Apache Beam™ Downloads&lt;/h1&gt;
 &lt;blockquote&gt;
-&lt;p&gt;Beam SDK 2.20.0 is the latest released version.&lt;/p&gt;
+&lt;p&gt;Beam SDK 2.21.0 is the latest released version.&lt;/p&gt;
 &lt;/blockquote&gt;
 &lt;h2 id=&#34;using-a-central-repository&#34;&gt;Using a central repository&lt;/h2&gt;
 &lt;p&gt;The easiest way to use Apache Beam is via one of the released versions in a
@@ -2524,18 +2524,18 @@ with the &lt;code&gt;DirectRunner&lt;/code&gt;, add the following dependencies t
 &lt;pre&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
   &amp;lt;groupId&amp;gt;org.apache.beam&amp;lt;/groupId&amp;gt;
   &amp;lt;artifactId&amp;gt;beam-sdks-java-core&amp;lt;/artifactId&amp;gt;
-  &amp;lt;version&amp;gt;2.20.0&amp;lt;/version&amp;gt;
+  &amp;lt;version&amp;gt;2.21.0&amp;lt;/version&amp;gt;
 &amp;lt;/dependency&amp;gt;
 &amp;lt;dependency&amp;gt;
   &amp;lt;groupId&amp;gt;org.apache.beam&amp;lt;/groupId&amp;gt;
   &amp;lt;artifactId&amp;gt;beam-runners-direct-java&amp;lt;/artifactId&amp;gt;
-  &amp;lt;version&amp;gt;2.20.0&amp;lt;/version&amp;gt;
+  &amp;lt;version&amp;gt;2.21.0&amp;lt;/version&amp;gt;
   &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;
 &amp;lt;/dependency&amp;gt;
 &lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;Similarly in Python, if you are using PyPI and want to use the SDK for Python
 with &lt;code&gt;DirectRunner&lt;/code&gt;, add the following requirement to your &lt;code&gt;setup.py&lt;/code&gt; file:&lt;/p&gt;
-&lt;pre&gt;&lt;code&gt;apache-beam==2.20.0
+&lt;pre&gt;&lt;code&gt;apache-beam==2.21.0
 &lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;Additionally, you may want to depend on additional SDK modules, such as IO
 connectors or other extensions, and additional runners to execute your pipeline
@@ -2560,15 +2560,20 @@ the form &lt;code&gt;major.minor.incremental&lt;/code&gt; and are incremented as
 &lt;li&gt;minor version for new functionality added in a backward-compatible manner&lt;/li&gt;
 &lt;li&gt;incremental version for forward-compatible bug fixes&lt;/li&gt;
 &lt;/ul&gt;
-&lt;p&gt;Please note that APIs marked &lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.20.0/org/apache/beam/sdk/annotations/Experimental.html&#34;&gt;&lt;code&gt;@Experimental&lt;/code&gt;&lt;/a&gt;
+&lt;p&gt;Please note that APIs marked &lt;a href=&#34;https://beam.apache.org/releases/javadoc/2.21.0/org/apache/beam/sdk/annotations/Experimental.html&#34;&gt;&lt;code&gt;@Experimental&lt;/code&gt;&lt;/a&gt;
 may change at any point and are not guaranteed to remain compatible across versions.&lt;/p&gt;
 &lt;p&gt;Additionally, any API may change before the first stable release, i.e., between
 versions denoted &lt;code&gt;0.x.y&lt;/code&gt;.&lt;/p&gt;
 &lt;h2 id=&#34;releases&#34;&gt;Releases&lt;/h2&gt;
+&lt;h3 id=&#34;2210-2020-05-27&#34;&gt;2.21.0 (2020-05-27)&lt;/h3&gt;
+&lt;p&gt;Official &lt;a href=&#34;http://www.apache.org/dyn/closer.cgi/beam/2.21.0/apache-beam-2.21.0-source-release.zip&#34;&gt;source code download&lt;/a&gt;.
+&lt;a href=&#34;https://downloads.apache.org/beam/2.21.0/apache-beam-2.21.0-source-release.zip.sha512&#34;&gt;SHA-512&lt;/a&gt;.
+&lt;a href=&#34;https://downloads.apache.org/beam/2.21.0/apache-beam-2.21.0-source-release.zip.asc&#34;&gt;signature&lt;/a&gt;.&lt;/p&gt;
+&lt;p&gt;&lt;a href=&#34;https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12319527&amp;amp;version=12347143&#34;&gt;Release notes&lt;/a&gt;.&lt;/p&gt;
 &lt;h3 id=&#34;2200-2020-04-15&#34;&gt;2.20.0 (2020-04-15)&lt;/h3&gt;
-&lt;p&gt;Official &lt;a href=&#34;http://www.apache.org/dyn/closer.cgi/beam/2.20.0/apache-beam-2.20.0-source-release.zip&#34;&gt;source code download&lt;/a&gt;.
-&lt;a href=&#34;https://downloads.apache.org/beam/2.20.0/apache-beam-2.20.0-source-release.zip.sha512&#34;&gt;SHA-512&lt;/a&gt;.
-&lt;a href=&#34;https://downloads.apache.org/beam/2.20.0/apache-beam-2.20.0-source-release.zip.asc&#34;&gt;signature&lt;/a&gt;.&lt;/p&gt;
+&lt;p&gt;Official &lt;a href=&#34;https://archive.apache.org/dist/beam/2.20.0/apache-beam-2.20.0-source-release.zip&#34;&gt;source code download&lt;/a&gt;.
+&lt;a href=&#34;https://archive.apache.org/dist/beam/2.20.0/apache-beam-2.20.0-source-release.zip.sha512&#34;&gt;SHA-512&lt;/a&gt;.
+&lt;a href=&#34;https://archive.apache.org/dist/beam/2.20.0/apache-beam-2.20.0-source-release.zip.asc&#34;&gt;signature&lt;/a&gt;.&lt;/p&gt;
 &lt;p&gt;&lt;a href=&#34;https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12319527&amp;amp;version=12346780&#34;&gt;Release notes&lt;/a&gt;.&lt;/p&gt;
 &lt;h3 id=&#34;2190-2020-02-04&#34;&gt;2.19.0 (2020-02-04)&lt;/h3&gt;
 &lt;p&gt;Official &lt;a href=&#34;https://archive.apache.org/dist/beam/2.19.0/apache-beam-2.19.0-source-release.zip&#34;&gt;source code download&lt;/a&gt;.
@@ -5395,7 +5400,7 @@ python -m apache_beam.examples.streaming_wordcount \
 &lt;h3 id=&#34;reading-an-unbounded-dataset&#34;&gt;Reading an unbounded dataset&lt;/h3&gt;
 &lt;p&gt;This example uses an unbounded dataset as input. The code reads Pub/Sub
 messages from a Pub/Sub subscription or topic using
-&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.gcp.pubsub.html#apache_beam.io.gcp.pubsub.ReadStringsFromPubSub&#34;&gt;&lt;code&gt;beam.io.ReadStringsFromPubSub&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
+&lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.gcp.pubsub.html#apache_beam.io.gcp.pubsub.ReadStringsFromPubSub&#34;&gt;&lt;code&gt;beam.io.ReadStringsFromPubSub&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
 
 
 
@@ -5444,7 +5449,7 @@ support only bounded output, while others support both bounded and unbounded
 outputs.&lt;/p&gt;
 &lt;p&gt;This example uses an unbounded &lt;code&gt;PCollection&lt;/code&gt; and streams the results to
 Google Pub/Sub. The code formats the results and writes them to a Pub/Sub topic
-using &lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.gcp.pubsub.html#apache_beam.io.gcp.pubsub.WriteStringsToPubSub&#34;&gt;&lt;code&gt;beam.io.WriteStringsToPubSub&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
+using &lt;a href=&#34;https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.gcp.pubsub.html#apache_beam.io.gcp.pubsub.WriteStringsToPubSub&#34;&gt;&lt;code&gt;beam.io.WriteStringsToPubSub&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
 
 
 
diff --git a/website/generated-content/get-started/quickstart-java/index.html b/website/generated-content/get-started/quickstart-java/index.html
index ff6c703..9e05c71 100644
--- a/website/generated-content/get-started/quickstart-java/index.html
+++ b/website/generated-content/get-started/quickstart-java/index.html
@@ -224,7 +224,7 @@ limitations under the License.
             <pre><code>$ mvn archetype:generate \
       -DarchetypeGroupId=org.apache.beam \
       -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \
-      -DarchetypeVersion=2.20.0 \
+      -DarchetypeVersion=2.21.0 \
       -DgroupId=org.example \
       -DartifactId=word-count-beam \
       -Dversion=&#34;0.1&#34; \
@@ -244,7 +244,7 @@ limitations under the License.
             <pre><code>PS&gt; mvn archetype:generate `
  -D archetypeGroupId=org.apache.beam `
  -D archetypeArtifactId=beam-sdks-java-maven-archetypes-examples `
- -D archetypeVersion=2.20.0 `
+ -D archetypeVersion=2.21.0 `
  -D groupId=org.example `
  -D artifactId=word-count-beam `
  -D version=&#34;0.1&#34; `
diff --git a/website/generated-content/get-started/wordcount-example/index.html b/website/generated-content/get-started/wordcount-example/index.html
index 2272652..7702031 100644
--- a/website/generated-content/get-started/wordcount-example/index.html
+++ b/website/generated-content/get-started/wordcount-example/index.html
@@ -2920,7 +2920,7 @@ python -m apache_beam.examples.streaming_wordcount \
 <h3 id="reading-an-unbounded-dataset">Reading an unbounded dataset</h3>
 <p>This example uses an unbounded dataset as input. The code reads Pub/Sub
 messages from a Pub/Sub subscription or topic using
-<a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.gcp.pubsub.html#apache_beam.io.gcp.pubsub.ReadStringsFromPubSub"><code>beam.io.ReadStringsFromPubSub</code></a>.</p>
+<a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.gcp.pubsub.html#apache_beam.io.gcp.pubsub.ReadStringsFromPubSub"><code>beam.io.ReadStringsFromPubSub</code></a>.</p>
 
 
 
@@ -2969,7 +2969,7 @@ support only bounded output, while others support both bounded and unbounded
 outputs.</p>
 <p>This example uses an unbounded <code>PCollection</code> and streams the results to
 Google Pub/Sub. The code formats the results and writes them to a Pub/Sub topic
-using <a href="https://beam.apache.org/releases/pydoc/2.20.0/apache_beam.io.gcp.pubsub.html#apache_beam.io.gcp.pubsub.WriteStringsToPubSub"><code>beam.io.WriteStringsToPubSub</code></a>.</p>
+using <a href="https://beam.apache.org/releases/pydoc/2.21.0/apache_beam.io.gcp.pubsub.html#apache_beam.io.gcp.pubsub.WriteStringsToPubSub"><code>beam.io.WriteStringsToPubSub</code></a>.</p>
 
 
 
diff --git a/website/generated-content/index.html b/website/generated-content/index.html
index 414bb23..0d741b6 100644
--- a/website/generated-content/index.html
+++ b/website/generated-content/index.html
@@ -146,7 +146,7 @@
             <div class="hero__ctas hero__ctas--first">
               <a class="button button--primary" href=/get-started/beam-overview/>Learn more</a>
               <a class="button button--primary" href=/get-started/try-apache-beam/>Try Beam</a>
-              <a class="button button--primary" href=/get-started/downloads/>Download Beam SDK 2.20.0</a>
+              <a class="button button--primary" href=/get-started/downloads/>Download Beam SDK 2.21.0</a>
             </div>
             <div class="hero__ctas">
               <a class="button" href="/get-started/quickstart-java/">Java Quickstart</a>
@@ -163,6 +163,11 @@
             <div class="hero__blog__cards">
 
               
+                  <a class="hero__blog__cards__card" href="/blog/beam-2.21.0/">
+                    <div class="hero__blog__cards__card__title">Apache Beam 2.21.0</div>
+                    <div class="hero__blog__cards__card__date">May 27, 2020</div>
+                  </a>
+              
                   <a class="hero__blog__cards__card" href="/blog/beam-summit-digital-2020/">
                     <div class="hero__blog__cards__card__title">Beam Summit Digital Is Coming - Register Now!</div>
                     <div class="hero__blog__cards__card__date">May 8, 2020</div>
@@ -173,11 +178,6 @@
                     <div class="hero__blog__cards__card__date">Apr 15, 2020</div>
                   </a>
               
-                  <a class="hero__blog__cards__card" href="/blog/beam-2.19.0/">
-                    <div class="hero__blog__cards__card__title">Apache Beam 2.19.0</div>
-                    <div class="hero__blog__cards__card__date">Feb 4, 2020</div>
-                  </a>
-              
 
             </div>
           </div>
@@ -324,7 +324,7 @@
     </div>
     <div class="ctas__ctas ctas__ctas--top">
     <a class="button button--primary" href=/get-started/beam-overview/>Learn more</a>
-    <a class="button button--primary" href=/get-started/downloads/>Download Beam SDK 2.20.0</a>
+    <a class="button button--primary" href=/get-started/downloads/>Download Beam SDK 2.21.0</a>
     </div>
     <div class="ctas__ctas">
     <a class="button" href=/get-started/quickstart-java/>Java Quickstart</a>
diff --git a/website/generated-content/sitemap.xml b/website/generated-content/sitemap.xml
index 2efc937..11c111c 100644
--- a/website/generated-content/sitemap.xml
+++ b/website/generated-content/sitemap.xml
@@ -3,22 +3,27 @@
   xmlns:xhtml="http://www.w3.org/1999/xhtml">
   
   <url>
-    <loc>/blog/beam-summit-digital-2020/</loc>
-    <lastmod>2020-05-25T03:48:05-07:00</lastmod>
+    <loc>/blog/beam-2.21.0/</loc>
+    <lastmod>2020-05-27T11:36:29-04:00</lastmod>
   </url>
   
   <url>
     <loc>/categories/blog/</loc>
-    <lastmod>2020-05-25T03:48:05-07:00</lastmod>
+    <lastmod>2020-05-27T11:36:29-04:00</lastmod>
   </url>
   
   <url>
     <loc>/blog/</loc>
-    <lastmod>2020-05-25T03:48:05-07:00</lastmod>
+    <lastmod>2020-05-27T11:36:29-04:00</lastmod>
   </url>
   
   <url>
     <loc>/categories/</loc>
+    <lastmod>2020-05-27T11:36:29-04:00</lastmod>
+  </url>
+  
+  <url>
+    <loc>/blog/beam-summit-digital-2020/</loc>
     <lastmod>2020-05-25T03:48:05-07:00</lastmod>
   </url>
   
@@ -339,7 +344,7 @@
   
   <url>
     <loc>/documentation/io/developing-io-python/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -494,7 +499,7 @@
   
   <url>
     <loc>/get-started/mobile-gaming-example/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -509,7 +514,7 @@
   
   <url>
     <loc>/documentation/programming-guide/</loc>
-    <lastmod>2020-05-20T12:05:12-04:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -534,7 +539,7 @@
   
   <url>
     <loc>/get-started/downloads/</loc>
-    <lastmod>2020-05-14T17:20:01-07:00</lastmod>
+    <lastmod>2020-05-27T16:32:14-04:00</lastmod>
   </url>
   
   <url>
@@ -599,7 +604,7 @@
   
   <url>
     <loc>/get-started/wordcount-example/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -669,12 +674,12 @@
   
   <url>
     <loc>/documentation/patterns/bigqueryio/</loc>
-    <lastmod>2020-05-26T17:23:44+08:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
     <loc>/documentation/io/built-in/</loc>
-    <lastmod>2020-05-22T22:16:32-04:00</lastmod>
+    <lastmod>2020-05-27T10:50:11-07:00</lastmod>
   </url>
   
   <url>
@@ -779,7 +784,7 @@
   
   <url>
     <loc>/documentation/patterns/custom-windows/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -814,7 +819,7 @@
   
   <url>
     <loc>/documentation/sdks/python-type-safety/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -834,7 +839,7 @@
   
   <url>
     <loc>/documentation/patterns/file-processing/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -844,12 +849,12 @@
   
   <url>
     <loc>/documentation/transforms/python/elementwise/filter/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
     <loc>/documentation/transforms/python/elementwise/flatmap/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -889,7 +894,7 @@
   
   <url>
     <loc>/documentation/io/built-in/google-bigquery/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -959,7 +964,7 @@
   
   <url>
     <loc>/documentation/transforms/python/elementwise/keys/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -969,7 +974,7 @@
   
   <url>
     <loc>/documentation/transforms/python/elementwise/kvswap/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -999,7 +1004,7 @@
   
   <url>
     <loc>/documentation/transforms/python/elementwise/map/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -1069,7 +1074,7 @@
   
   <url>
     <loc>/documentation/transforms/python/elementwise/pardo/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -1079,7 +1084,7 @@
   
   <url>
     <loc>/documentation/transforms/python/elementwise/partition/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -1094,7 +1099,7 @@
   
   <url>
     <loc>/documentation/patterns/pipeline-options/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -1164,7 +1169,7 @@
   
   <url>
     <loc>/documentation/transforms/python/elementwise/regex/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -1224,7 +1229,7 @@
   
   <url>
     <loc>/documentation/patterns/side-inputs/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -1273,7 +1278,7 @@
   
   <url>
     <loc>/documentation/transforms/python/elementwise/tostring/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -1293,7 +1298,7 @@
   
   <url>
     <loc>/documentation/transforms/python/elementwise/values/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
   <url>
@@ -1338,7 +1343,7 @@
   
   <url>
     <loc>/documentation/transforms/python/elementwise/withtimestamps/</loc>
-    <lastmod>2020-05-15T00:39:54+02:00</lastmod>
+    <lastmod>2020-05-28T00:11:56+02:00</lastmod>
   </url>
   
 </urlset>
\ No newline at end of file