本文简要介绍 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。