當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python pyflink StreamTableEnvironment.to_changelog_stream用法及代碼示例


本文簡要介紹 python 語言中pyflink.table.StreamTableEnvironment.to_changelog_stream的用法。

用法:

to_changelog_stream(table: pyflink.table.table.Table, target_schema: pyflink.table.schema.Schema = None, changelog_mode: pyflink.table.changelog_mode.ChangelogMode = None) → pyflink.datastream.data_stream.DataStream

將給定的表轉換為 DataStream 的變更日誌條目。

to_data_stream() 相比,此方法生成 Row 實例並在運行時設置每個記錄中包含的 RowKind 標誌。運行時行為與 DynamicTableSink 類似。

如果不指定changelog_mode,則將包含各種更改(在 RowKind 中枚舉)的更改日誌作為默認的 ChangelogMode。

給定的 Schema 用於配置表運行時以將列和內部數據結構轉換為所需的表示形式。以下示例顯示如何將表列轉換為 Row 類型。

例子:

>>> table_env.to_changelog_stream(
...     table,
...     Schema.new_builder()             ...         .column("id", DataTypes.BIGINT())
...         .column("payload", DataTypes.ROW(
...                                     [DataTypes.FIELD("name", DataTypes.STRING()),
...                                     DataTypes.FIELD("age", DataTypes.INT())]))
...         .build())

請注意,表生態係統的類型係統比DataStream API 的類型係統更豐富。表運行時將確保正確地將輸出記錄序列化到DataStream API 的第一個運算符。之後,需要考慮DataStream API 的類型語義。

如果輸入表包含單個行時間列,它將被傳播到流記錄的時間戳中。水印也將被傳播。

如果行時間不再是最後一行中的具體字段,或者 from_changelog_stream()to_changelog_stream() 的架構應該是對稱的,則行時間也可以聲明為元數據列,該元數據列將傳播到流記錄的時間戳中。可以聲明沒有物理/常規列的模式。在這種情況下,這些列將自動派生並隱式放置在模式聲明的開頭。

以下示例說明了常見的模式聲明及其語義:

例子:

given a Table of (id INT, name STRING, my_rowtime TIMESTAMP_LTZ(3))

=== EXAMPLE 1 ===

no physical columns defined, they will be derived automatically,
the last derived physical column will be skipped in favor of the metadata column

>>> Schema.new_builder()             ...     .column_by_metadata("rowtime", "TIMESTAMP_LTZ(3)")             ...     .build()

equal to: CREATE TABLE (id INT, name STRING, rowtime TIMESTAMP_LTZ(3) METADATA)

=== EXAMPLE 2 ===

physical columns defined, all columns must be defined

>>> Schema.new_builder()             ...     .column("id", "INT")             ...     .column("name", "STRING")             ...     .column_by_metadata("rowtime", "TIMESTAMP_LTZ(3)")             ...     .build()

equal to: CREATE TABLE (id INT, name STRING, rowtime TIMESTAMP_LTZ(3) METADATA)

參數:

  • table- 要轉換的表格。它可以是更新或insert-only。

  • target_schema- 決定DataStream 記錄中最終外部表示的模式。

  • changelog_mode- 結果更改日誌中所需的更改類型。如果給定的更新表無法在此更改日誌模式中表示,則會引發異常。

返回:

Row 轉換後的變更日誌流。

相關用法


注:本文由純淨天空篩選整理自apache.org大神的英文原創作品 pyflink.table.StreamTableEnvironment.to_changelog_stream。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。