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 5dce5d9 Publishing website 2021/04/19 18:03:04 at commit e0136ff
5dce5d9 is described below
commit 5dce5d9f5bc45d03339c486fd8090e9fb05d6a8a
Author: jenkins <[email protected]>
AuthorDate: Mon Apr 19 18:03:04 2021 +0000
Publishing website 2021/04/19 18:03:04 at commit e0136ff
---
.../extensions/create-external-table/index.html | 123 ++++++++++++++-------
website/generated-content/sitemap.xml | 2 +-
2 files changed, 82 insertions(+), 43 deletions(-)
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 fe7b590..1356e90 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
@@ -18,7 +18,7 @@
function addPlaceholder(){$('input:text').attr('placeholder',"What are you
looking for?");}
function endSearch(){var
search=document.querySelector(".searchBar");search.classList.add("disappear");var
icons=document.querySelector("#iconsBar");icons.classList.remove("disappear");}
function blockScroll(){$("body").toggleClass("fixedPosition");}
-function openMenu(){addPlaceholder();blockScroll();}</script><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>Languages</span></li><li><span
class=section-nav-list-title>Java</span><ul class=section-nav-list><li><a
href=/documentation/sdks/java/>Java SDK overvi [...]
+function openMenu(){addPlaceholder();blockScroll();}</script><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>Languages</span></li><li><span
class=section-nav-list-title>Java</span><ul class=section-nav-list><li><a
href=/documentation/sdks/java/>Java SDK overvi [...]
<a href=/documentation/io/built-in/>external storage system</a>.
For some storage systems, <code>CREATE EXTERNAL TABLE</code> does not create a
physical table until
a write occurs. After the physical table exists, you can access the table with
@@ -124,88 +124,127 @@ TBLPROPERTIES '{
}'
</code></pre><p>Write example:</p><pre><code>INSERT INTO writeTable(key,
boolColumn, longColumn, stringColumn, doubleColumn)
VALUES ('key', TRUE, 10, 'stringValue', 5.5)
-</code></pre><h2 id=pubsub>Pub/Sub</h2><h3
id=syntax-3>Syntax</h3><pre><code>CREATE EXTERNAL TABLE [ IF NOT EXISTS ]
tableName(
+</code></pre><h2 id=pubsub>Pub/Sub</h2><h3 id=syntax-3>Syntax</h3><h4
id=nested-mode>Nested mode</h4><pre><code>CREATE EXTERNAL TABLE [ IF NOT EXISTS
] tableName(
event_timestamp TIMESTAMP,
- attributes MAP<VARCHAR, VARCHAR>,
- payload ROW<tableElement [, tableElement ]*>
+ attributes [MAP<VARCHAR, VARCHAR>, ARRAY<ROW<VARCHAR key,
VARCHAR value>>],
+ payload [BYTES, ROW<tableElement [, tableElement ]*>]
)
TYPE pubsub
LOCATION 'projects/[PROJECT]/topics/[TOPIC]'
-TBLPROPERTIES '{
- "timestampAttributeKey": "key",
- "deadLetterQueue": "projects/[PROJECT]/topics/[TOPIC]",
- "format": "format"
-}'
-</code></pre><ul><li><code>event_timestamp</code>: The event timestamp
associated with the Pub/Sub message
-by PubsubIO. It can be one of the following:<ul><li>Message publish time,
which is provided by Pub/Sub. This is the default
+</code></pre><h4 id=flattened-mode>Flattened mode</h4><pre><code>CREATE
EXTERNAL TABLE [ IF NOT EXISTS ] tableName(tableElement [, tableElement ]*)
+TYPE pubsub
+LOCATION 'projects/[PROJECT]/topics/[TOPIC]'
+</code></pre><p>In nested mode, the following fields hold topic metadata. The
presence of the
+<code>attributes</code> field triggers nested mode
usage.</p><ul><li><p><code>event_timestamp</code>: The event timestamp
associated with the Pub/Sub message
+by PubsubIO. It can be one of the following:</p><ul><li>Message publish time,
which is provided by Pub/Sub. This is the default
value if no extra configuration is provided.</li><li>A timestamp specified in
one of the user-provided message attributes.
The attribute key is configured by the <code>timestampAttributeKey</code>
field of
the <code>tblProperties</code> blob. The value of the attribute should conform
to
the <a
href=https://beam.apache.org/releases/javadoc/2.4.0/org/apache/beam/sdk/io/gcp/pubsub/PubsubIO.Read.html#withTimestampAttribute-java.lang.String->requirements
of
PubsubIO</a>,
which is either millis since Unix epoch or <a
href=https://www.ietf.org/rfc/rfc3339.txt>RFC 339
-</a>date string.</li></ul></li><li><code>attributes</code>: The user-provided
attributes map from the Pub/Sub message;</li><li><code>payload</code>: The
schema of the payload of the Pub/Sub message. If a record
+</a>date string.</li></ul></li><li><p><code>attributes</code>: The
user-provided attributes map from the Pub/Sub
message;</p></li><li><p><code>payload</code>: The schema of the payload of the
Pub/Sub message. If a record
can’t be unmarshalled, the record is written to the topic specified in
the
<code>deadLeaderQueue</code> field of the <code>tblProperties</code> blob. If
no dead-letter queue
is specified in this case, an exception is thrown and the pipeline will
-crash.</li><li><code>LOCATION</code>:<ul><li><code>PROJECT</code>: ID of the
Google Cloud Project</li><li><code>TOPIC</code>: The Pub/Sub topic name. A
subscription will be created
+crash.</p></li><li><p><code>LOCATION</code>:</p><ul><li><code>PROJECT</code>:
ID of the Google Cloud Project</li><li><code>TOPIC</code>: The Pub/Sub topic
name. A subscription will be created
automatically, but the subscription is not cleaned up automatically.
-Specifying an existing subscription is not
supported.</li></ul></li><li><code>TBLPROPERTIES</code>:<ul><li><code>timestampAttributeKey</code>:
Optional. The key which contains the event
+Specifying an existing subscription is not
supported.</li></ul></li><li><p><code>TBLPROPERTIES</code>:</p><ul><li><code>timestampAttributeKey</code>:
Optional. The key which contains the event
timestamp associated with the Pub/Sub message. If not specified, the
message publish timestamp is used as an event timestamp for
windowing/watermarking.</li><li><code>deadLetterQueue</code>: The topic into
which messages are written if the
payload was not parsed. If not specified, an exception is thrown for
-parsing failures.</li><li><code>format</code>: Optional. Allows you to specify
the Pubsub payload format.
-Possible values are {<code>json</code>, <code>avro</code>}. Defaults to
<code>json</code>.</li></ul></li></ul><h3 id=read-mode-2>Read
Mode</h3><p>PubsubIO is currently limited to read access only.</p><h3
id=write-mode-2>Write Mode</h3><p>Not supported. PubSubIO is currently limited
to read access only in Beam SQL.</p><h3 id=schema-1>Schema</h3><p>Pub/Sub
messages have metadata associated with them, and you can reference this
+parsing failures.</li><li><code>format</code>: Optional. Allows you to specify
the Pubsub payload format.</li></ul></li></ul><h3 id=read-mode-2>Read
Mode</h3><p>PubsubIO supports reading from topics by creating a new
subscription.</p><h3 id=write-mode-2>Write Mode</h3><p>PubsubIO supports
writing to topics.</p><h3 id=schema-1>Schema</h3><p>Pub/Sub messages have
metadata associated with them, and you can reference this
metadata in your queries. For each message, Pub/Sub exposes its publish time
and
a map of user-provided attributes in addition to the payload (unstructured in
the general case). This information must be preserved and accessible from the
SQL statements. Currently, this means that PubsubIO tables require you to
-declare a special set of columns, as shown below.</p><h3
id=supported-payload>Supported Payload</h3><ul><li>JSON Objects
(Default)<ul><li>Beam only supports querying messages with payload containing
JSON
-objects. Beam attempts to parse JSON to match the schema of the
-<code>payload</code> field.</li></ul></li><li>Avro<ul><li>An Avro schema is
automatically generated from the specified schema of
-the <code>payload</code> field. It is used to parse incoming
messages.</li></ul></li></ul><h3 id=example-2>Example</h3><pre><code>CREATE
EXTERNAL TABLE locations (event_timestamp TIMESTAMP, attributes MAP<VARCHAR,
VARCHAR>, payload ROW<id INTEGER, location VARCHAR>)
+declare a special set of columns, as shown below.</p><h3
id=supported-payload>Supported Payload</h3><ul><li>Pub/Sub supports <a
href=#generic-payload-handling>Generic Payload Handling</a>.</li></ul><h3
id=example-2>Example</h3><pre><code>CREATE EXTERNAL TABLE locations
(event_timestamp TIMESTAMP, attributes MAP<VARCHAR, VARCHAR>, payload
ROW<id INTEGER, location VARCHAR>)
TYPE pubsub
LOCATION 'projects/testing-integration/topics/user-location'
-</code></pre><h2 id=kafka>Kafka</h2><p>KafkaIO is experimental in Beam
SQL.</p><h3 id=syntax-4>Syntax</h3><pre><code>CREATE EXTERNAL TABLE [ IF NOT
EXISTS ] tableName (tableElement [, tableElement ]*)
+</code></pre><h2 id=pubsub-lite>Pub/Sub Lite</h2><h3
id=syntax-4>Syntax</h3><pre><code>CREATE EXTERNAL TABLE [ IF NOT EXISTS ]
tableName(
+ publish_timestamp DATETIME,
+ event_timestamp DATETIME,
+ message_key BYTES,
+ attributes ARRAY<ROW<key VARCHAR, `values`
ARRAY<VARBINARY>>>,
+ payload [BYTES, ROW<tableElement [, tableElement ]*>]
+)
+TYPE pubsublite
+// For writing
+LOCATION 'projects/[PROJECT]/locations/[GCP-LOCATION]/topics/[TOPIC]'
+// For reading
+LOCATION
'projects/[PROJECT]/locations/[GCP-LOCATION]/subscriptions/[SUBSCRIPTION]'
+</code></pre><ul><li><code>LOCATION</code>:<ul><li><code>PROJECT</code>: ID of
the Google Cloud Project</li><li><code>TOPIC</code>: The Pub/Sub Lite topic
name.</li><li><code>SUBSCRIPTION</code>: The Pub/Sub Lite subscription
name.</li><li><code>GCP-LOCATION</code>: The location for this Pub/Sub Lite
topic os
subscription.</li></ul></li><li><code>TBLPROPERTIES</code>:<ul><li><code>timestampAttributeKey</code>:
Optional. The key which contains the event
+timestamp associated with the Pub/Sub message. If not specified, the
+message publish timestamp is used as an event timestamp for
+windowing/watermarking.</li><li><code>deadLetterQueue</code>: Optional,
supports
+<a href=#generic-dlq-handling>Generic DLQ
Handling</a></li><li><code>format</code>: Optional. Allows you to specify the
payload format.</li></ul></li></ul><h3 id=read-mode-3>Read
Mode</h3><p>PubsubLiteIO supports reading from subscriptions.</p><h3
id=write-mode-3>Write Mode</h3><p>PubsubLiteIO supports writing to
topics.</p><h3 id=supported-payload-1>Supported Payload</h3><ul><li>Pub/Sub
Lite supports <a href=#generic-payload-handling>Generic Payload
Handling</a>.</li></ul><h3 id=example [...]
+TYPE pubsublite
+LOCATION
'projects/testing-integration/locations/us-central1-a/topics/user-location'
+</code></pre><h2 id=kafka>Kafka</h2><p>KafkaIO is experimental in Beam
SQL.</p><h3 id=syntax-5>Syntax</h3><h4 id=flattened-mode-1>Flattened
mode</h4><pre><code>CREATE EXTERNAL TABLE [ IF NOT EXISTS ] tableName
(tableElement [, tableElement ]*)
TYPE kafka
-LOCATION 'kafka://localhost:2181/brokers'
+LOCATION 'my.company.url.com:2181/topic1'
TBLPROPERTIES '{
- "bootstrap.servers":"localhost:9092",
- "topics": ["topic1", "topic2"],
- "format": "avro"
- [, "protoClass": "com.example.ExampleMessage" ]
+ "bootstrap_servers": ["localhost:9092",
"PLAINTEXT://192.168.1.200:2181"],
+ "topics": ["topic2", "topic3"],
+ "format": "json"
}'
-</code></pre><ul><li><code>LOCATION</code>: The Kafka topic
URL.</li><li><code>TBLPROPERTIES</code>:<ul><li><code>bootstrap.servers</code>:
Optional. Allows you to specify the bootstrap
-server.</li><li><code>topics</code>: Optional. Allows you to specify specific
topics.</li><li><code>format</code>: Optional. Allows you to specify the Kafka
values format. Possible values are
-{<code>csv</code>, <code>avro</code>, <code>json</code>, <code>proto</code>,
<code>thrift</code>}. Defaults to
<code>csv</code>.</li><li><code>protoClass</code>: Optional. Use only when
<code>format</code> is equal to <code>proto</code>. Allows you to
-specify full protocol buffer java class
name.</li><li><code>thriftClass</code>: Optional. Use only when
<code>format</code> is equal to <code>thrift</code>. Allows you to
-specify full thrift java class
name.</li><li><code>thriftProtocolFactoryClass</code>: Optional. Use only when
<code>format</code> is equal to <code>thrift</code>.
-Allows you to specify full class name of the <code>TProtocolFactory</code> to
use for thrift
-serialization.</li></ul></li></ul><h3 id=read-mode-3>Read Mode</h3><p>Read
Mode supports reading from a topic.</p><h3 id=write-mode-3>Write
Mode</h3><p>Write Mode supports writing to a topic.</p><h3
id=supported-formats>Supported Formats</h3><ul><li>CSV (default)<ul><li>Beam
parses the messages, attempting to parse fields according to the
-types specified in the schema.</li></ul></li><li>Avro<ul><li>An Avro schema is
automatically generated from the specified field
-types. It is used to parse incoming messages and to format outgoing
-messages.</li></ul></li><li>JSON Objects<ul><li>Beam attempts to parse JSON to
match the schema.</li></ul></li><li>Protocol buffers<ul><li>Fields in the
schema have to match the fields of the given
<code>protoClass</code>.</li></ul></li><li>Thrift<ul><li>Fields in the schema
have to match the fields of the given <code>thriftClass</code>.</li><li>The
<code>TProtocolFactory</code> used for thrift serialization must match the
-provided <code>thriftProtocolFactoryClass</code>.</li></ul></li></ul><h3
id=schema-2>Schema</h3><p>For CSV only simple types are supported.</p><h2
id=mongodb>MongoDB</h2><h3 id=syntax-5>Syntax</h3><pre><code>CREATE EXTERNAL
TABLE [ IF NOT EXISTS ] tableName (tableElement [, tableElement ]*)
+</code></pre><h4 id=nested-mode-1>Nested mode</h4><pre><code>CREATE EXTERNAL
TABLE [ IF NOT EXISTS ] tableName (
+ event_timestamp DATETIME,
+ message_key BYTES,
+ headers ARRAY<ROW<key VARCHAR, `values` ARRAY<VARBINARY>>>,
+ payload [BYTES, ROW<tableElement [, tableElement ]*>]
+)
+TYPE kafka
+LOCATION 'my.company.url.com:2181/topic1'
+TBLPROPERTIES '{
+ "bootstrap_servers": ["localhost:9092",
"PLAINTEXT://192.168.1.200:2181"],
+ "topics": ["topic2", "topic3"],
+ "format": "json"
+}'
+</code></pre><p>The presence of the <code>headers</code> field triggers nested
mode usage.</p><ul><li><code>LOCATION</code>: A url with the initial bootstrap
broker to use and the initial
+topic name provided as the
path.</li><li><code>TBLPROPERTIES</code>:<ul><li><code>bootstrap_servers</code>:
Optional. Allows you to specify additional
+bootstrap servers, which are used in addition to the one in
<code>LOCATION</code>.</li><li><code>topics</code>: Optional. Allows you to
specify additional topics, which are
+used in addition to the one in
<code>LOCATION</code>.</li><li><code>format</code>: Optional. Allows you to
specify the Kafka values format. Possible values are
+{<code>csv</code>, <code>avro</code>, <code>json</code>, <code>proto</code>,
<code>thrift</code>}. Defaults to <code>csv</code> in
+flattened mode or <code>json</code> in nested mode. <code>csv</code> does not
support nested
+mode.</li></ul></li></ul><h3 id=read-mode-4>Read Mode</h3><p>Read Mode
supports reading from a topic.</p><h3 id=write-mode-4>Write Mode</h3><p>Write
Mode supports writing to a topic.</p><h3 id=supported-formats>Supported
Formats</h3><ul><li>CSV (default)<ul><li>Beam parses the messages, attempting
to parse fields according to the
+types specified in the schema.</li></ul></li><li>Kafka supports all <a
href=#generic-payload-handling>Generic Payload Handling</a>
+formats.</li></ul><h3 id=schema-2>Schema</h3><p>For CSV only simple types are
supported.</p><h2 id=mongodb>MongoDB</h2><h3
id=syntax-6>Syntax</h3><pre><code>CREATE EXTERNAL TABLE [ IF NOT EXISTS ]
tableName (tableElement [, tableElement ]*)
TYPE mongodb
LOCATION 'mongodb://[HOST]:[PORT]/[DATABASE]/[COLLECTION]'
</code></pre><ul><li><code>LOCATION</code>: Location of the
collection.<ul><li><code>HOST</code>: Location of the MongoDB server. Can be
localhost or an ip address.
When authentication is required username and password can be specified
-as follows:
<code>username:password@localhost</code>.</li><li><code>PORT</code>: Port on
which MongoDB server is listening.</li><li><code>DATABASE</code>: Database to
connect to.</li><li><code>COLLECTION</code>: Collection within the
database.</li></ul></li></ul><h3 id=read-mode-4>Read Mode</h3><p>Read Mode
supports reading from a collection.</p><h3 id=write-mode-4>Write
Mode</h3><p>Write Mode supports writing to a collection.</p><h3
id=schema-3>Schema</h3><p>Only simple types are suppor [...]
+as follows:
<code>username:password@localhost</code>.</li><li><code>PORT</code>: Port on
which MongoDB server is listening.</li><li><code>DATABASE</code>: Database to
connect to.</li><li><code>COLLECTION</code>: Collection within the
database.</li></ul></li></ul><h3 id=read-mode-5>Read Mode</h3><p>Read Mode
supports reading from a collection.</p><h3 id=write-mode-5>Write
Mode</h3><p>Write Mode supports writing to a collection.</p><h3
id=schema-3>Schema</h3><p>Only simple types are suppor [...]
TYPE mongodb
LOCATION 'mongodb://localhost:27017/apache/users'
</code></pre><h2 id=text>Text</h2><p>TextIO is experimental in Beam SQL. Read
Mode and Write Mode do not currently
-access the same underlying data.</p><h3
id=syntax-6>Syntax</h3><pre><code>CREATE EXTERNAL TABLE [ IF NOT EXISTS ]
tableName (tableElement [, tableElement ]*)
+access the same underlying data.</p><h3
id=syntax-7>Syntax</h3><pre><code>CREATE EXTERNAL TABLE [ IF NOT EXISTS ]
tableName (tableElement [, tableElement ]*)
TYPE text
LOCATION '/home/admin/orders'
TBLPROPERTIES '{"format: "Excel"}'
</code></pre><ul><li><code>LOCATION</code>: The path to the file for Read
Mode. The prefix for Write
Mode.</li><li><code>TBLPROPERTIES</code>:<ul><li><code>format</code>: Optional.
Allows you to specify the CSV Format, which controls
the field delimeter, quote character, record separator, and other properties.
-See the following table:</li></ul></li></ul><div
class=table-bordered-wrapper><table><thead><tr><th>Value for
<code>format</code></th><th>Field delimiter</th><th>Quote</th><th>Record
separator</th><th>Ignore empty lines?</th><th>Allow missing column
names?</th></tr></thead><tbody><tr><td><code>default</code></td><td><code>,</code></td><td><code>"</code></td><td><code>\r\n</code></td><td>Yes</td><td>No</td></tr><tr><td><code>rfc4180</code></td><td><code>,</code></td><td><code>"</code></td
[...]
-types specified in the schema using
org.apache.commons.csv.</li></ul></li></ul><h3 id=schema-4>Schema</h3><p>Only
simple types are supported.</p><h3 id=example-4>Example</h3><pre><code>CREATE
EXTERNAL TABLE orders (id INTEGER, price INTEGER)
+See the following table:</li></ul></li></ul><div
class=table-bordered-wrapper><table><thead><tr><th>Value for
<code>format</code></th><th>Field delimiter</th><th>Quote</th><th>Record
separator</th><th>Ignore empty lines?</th><th>Allow missing column
names?</th></tr></thead><tbody><tr><td><code>default</code></td><td><code>,</code></td><td><code>"</code></td><td><code>\r\n</code></td><td>Yes</td><td>No</td></tr><tr><td><code>rfc4180</code></td><td><code>,</code></td><td><code>"</code></td
[...]
+types specified in the schema using
org.apache.commons.csv.</li></ul></li></ul><h3 id=schema-4>Schema</h3><p>Only
simple types are supported.</p><h3 id=example-5>Example</h3><pre><code>CREATE
EXTERNAL TABLE orders (id INTEGER, price INTEGER)
TYPE text
LOCATION '/home/admin/orders'
-</code></pre></div></div><footer class=footer><div
class=footer__contained><div class=footer__cols><div class="footer__cols__col
footer__cols__col__logos"><div class=footer__cols__col__logo><img
src=/images/beam_logo_circle.svg class=footer__logo alt="Beam logo"></div><div
class=footer__cols__col__logo><img src=/images/apache_logo_circle.svg
class=footer__logo alt="Apache logo"></div></div><div class=footer-wrapper><div
class=wrapper-grid><div class=footer__cols__col><div class=footer__c [...]
+</code></pre><h2 id=generic-payload-handling>Generic Payload
Handling</h2><p>Certain data sources and sinks support generic payload
handling. This handling
+parses a byte array payload field into a table schema. The following schemas
are
+supported by this handling. All require at least setting <code>"format":
"<type>"</code>,
+and may require other properties.</p><ul><li><code>avro</code>: Avro<ul><li>An
Avro schema is automatically generated from the specified field
+types. It is used to parse incoming messages and to format outgoing
+messages.</li></ul></li><li><code>json</code>: JSON Objects<ul><li>Beam
attempts to parse the byte array as UTF-8 JSON to match the
schema.</li></ul></li><li><code>proto</code>: Protocol Buffers<ul><li>Beam
locates the equivalent Protocol Buffer class and uses it to parse
+the payload</li><li><code>protoClass</code>: Required. The proto class name to
use. Must be built into
+the deployed JAR.</li><li>Fields in the schema have to match the fields of the
given <code>protoClass</code>.</li></ul></li><li><code>thrift</code>:
Thrift<ul><li>Fields in the schema have to match the fields of the given
+<code>thriftClass</code>.</li><li><code>thriftClass</code>: Required. Allows
you to specify full thrift java class
+name. Must be built into the deployed
JAR.</li><li><code>thriftProtocolFactoryClass</code>: Required. Allows you to
specify full class
+name of the <code>TProtocolFactory</code> to use for thrift serialization.
Must be
+built into the deployed JAR.</li><li>The <code>TProtocolFactory</code> used
for thrift serialization must match the
+provided <code>thriftProtocolFactoryClass</code>.</li></ul></li></ul><h2
id=generic-dlq-handling>Generic DLQ Handling</h2><p>Sources and sinks which
support generic DLQ handling specify a parameter with
+the format <code>"<dlqParamName>": "[DLQ_KIND]:[DLQ_ID]"</code>. The
following types of
+DLQ handling are supported:</p><ul><li><code>bigquery</code>:
BigQuery<ul><li>DLQ_ID is the table spec for an output table with an
“error” string
+field and “payload” byte array
field.</li></ul></li><li><code>pubsub</code>: Pub/Sub Topic<ul><li>DLQ_ID is
the full path of the Pub/Sub Topic.</li></ul></li><li><code>pubsublite</code>:
Pub/Sub Lite Topic<ul><li>DLQ_ID is the full path of the Pub/Sub Lite
Topic.</li></ul></li></ul></div></div><footer class=footer><div
class=footer__contained><div class=footer__cols><div class="footer__cols__col
footer__cols__col__logos"><div class=footer__cols__col__logo><img
src=/images/bea [...]
<a href=http://www.apache.org>The Apache Software Foundation</a>
| <a href=/privacy_policy>Privacy Policy</a>
| <a href=/feed.xml>RSS Feed</a><br><br>Apache Beam, Apache, Beam, the Beam
logo, and the Apache feather logo are either registered trademarks or
trademarks of The Apache Software Foundation. All other products or name brands
are trademarks of their respective holders, including The Apache Software
Foundation.</div></div></div></div></footer></body></html>
\ No newline at end of file
diff --git a/website/generated-content/sitemap.xml
b/website/generated-content/sitemap.xml
index 8775792..52a50ac 100644
--- a/website/generated-content/sitemap.xml
+++ b/website/generated-content/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>/blog/beam-2.28.0/</loc><lastmod>2021-02-22T11:40:20-08:00</lastmod></url><url><loc>/categories/blog/</loc><lastmod>2021-03-31T21:00:41-04:00</lastmod></url><url><loc>/blog/</loc><lastmod>2021-03-31T21:00:41-04:00</lastmod></url><url><loc>/categories/</loc><lastmod>2021-03-31T21:00:41-04:00</lastmod></url><url><loc>/blog/k
[...]
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>/blog/beam-2.28.0/</loc><lastmod>2021-02-22T11:40:20-08:00</lastmod></url><url><loc>/categories/blog/</loc><lastmod>2021-03-31T21:00:41-04:00</lastmod></url><url><loc>/blog/</loc><lastmod>2021-03-31T21:00:41-04:00</lastmod></url><url><loc>/categories/</loc><lastmod>2021-03-31T21:00:41-04:00</lastmod></url><url><loc>/blog/k
[...]
\ No newline at end of file