本文簡要介紹 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 轉換後的變更日誌流。
相關用法
- Python pyflink StreamTableEnvironment.from_data_stream用法及代碼示例
- Python pyflink StreamTableEnvironment.create用法及代碼示例
- Python pyflink StreamExecutionEnvironment.set_restart_strategy用法及代碼示例
- Python pyflink StreamExecutionEnvironment.set_python_executable用法及代碼示例
- Python pyflink StreamExecutionEnvironment.enable_checkpointing用法及代碼示例
- Python pyflink StreamExecutionEnvironment.set_state_backend用法及代碼示例
- Python pyflink StreamExecutionEnvironment.add_python_archive用法及代碼示例
- Python pyflink StreamExecutionEnvironment.set_stream_time_characteristic用法及代碼示例
- Python pyflink StreamExecutionEnvironment.register_type用法及代碼示例
- Python pyflink StreamExecutionEnvironment.set_default_savepoint_directory用法及代碼示例
- Python pyflink StreamExecutionEnvironment.add_default_kryo_serializer用法及代碼示例
- Python pyflink StreamExecutionEnvironment.set_python_requirements用法及代碼示例
- Python pyflink StreamExecutionEnvironment.register_type_with_kryo_serializer用法及代碼示例
- Python pyflink StatementSet.add_insert用法及代碼示例
- Python pyflink Session用法及代碼示例
- Python pyflink Slide用法及代碼示例
- Python pyflink Schema.Builder.watermark用法及代碼示例
- Python pyflink Schema.Builder.column_by_expression用法及代碼示例
- Python pyflink SlidingProcessingTimeWindows用法及代碼示例
- Python pyflink SlidingEventTimeWindows用法及代碼示例
- Python pyflink Table.intersect_all用法及代碼示例
- Python pyflink GroupedTable.select用法及代碼示例
- Python pyflink Expression.to_date用法及代碼示例
- Python pyflink Table.fetch用法及代碼示例
- Python pyflink PulsarSourceBuilder用法及代碼示例
注:本文由純淨天空篩選整理自apache.org大神的英文原創作品 pyflink.table.StreamTableEnvironment.to_changelog_stream。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。