更新时间:2026-10-09 GMT+08:00
分享

Paimon配置与类型

WITH参数说明

本章节介绍Flink连接器读写Paimon表的参数配置。通过配置相关参数,可以控制Flink与Paimon表格式之间的连接和读写行为,满足不同业务场景下的数据读写需求。

  • Source参数
    表1 Source参数

    参数

    是否必填

    类型

    默认值

    取值范围

    说明

    scan.mode

    否

    String

    default

    default / latest-full / latest / compacted-full / from-snapshot / from-snapshot-full / from-timestamp / from-creation-timestamp / incremental

    指定读取模式。参数取值如下:

    • default自动判断。
    • latest-full先产出最新快照再持续读取变更。
    • latest仅持续读取最新变更(不读历史)。
    • compacted-full产出最近压缩后的快照。
    • from-snapshot从指定快照开始(不产出初始快照)。
    • from-snapshot-full从指定快照开始(含初始快照)。
    • from-timestamp从指定时间戳开始。
    • from-creation-timestamp从指定创建时间戳开始。
    • incremental增量读取两个快照间变更。

    Flink运行时根据此模式决定Source的数据扫描策略和起始位置,影响首次读取的数据范围。

    scan.snapshot-id

    否

    Long

    无

    正整数

    指定起始快照ID。仅在scan.mode为from-snapshot时生效。Flink运行时从该快照对应的表状态开始读取数据,快照ID不存在时作业将启动失败。

    scan.timestamp-millis

    否

    Long

    无

    毫秒时间戳

    指定起始时间戳。仅在scan.mode为from-timestamp时生效。Flink运行时从该时间戳对应的快照开始读取数据,自动选择不晚于该时间戳的最新快照作为起始点。

    scan.bounded.watermark-interval

    否

    Duration

    无

    正整数

    设置有界读取的水印间隔。用于有界流模式的Watermark推进控制。Flink运行时按此间隔推进Watermark,当Watermark超过数据范围时Source自动结束。

    lookup.cache.max-rows

    否

    Integer

    无

    正整数

    设置维表查询缓存的最大行数。仅对Lookup JOIN场景生效。Flink运行时在内存中维护LRU缓存,缓存行数达到此上限后淘汰最久未访问的记录,增大此值可提高查询命中率但增加内存消耗。

    lookup.cache.ttl

    否

    Duration

    无

    正整数+时间单位

    设置维表查询缓存的TTL(存活时间)。仅对Lookup JOIN场景生效。Flink运行时在缓存记录超过TTL后将其失效,下次访问时重新从Paimon存储加载,用于平衡数据时效性与查询性能。

  • Sink参数
    表2 Sink参数

    参数

    是否必填

    类型

    默认值

    取值范围

    说明

    write-mode

    否

    String

    auto

    auto / append-only / change-log

    指定写入模式。参数取值如下:

    • auto根据是否有主键自动选择。
    • append-only追加写入(无需主键)。
    • change-log变更日志写入(需主键表)。

    Flink运行时根据此模式决定写入器的类型和数据的处理方式,auto模式下有主键自动使用change-log,无主键使用append-only。

    merge-engine

    否

    String

    deduplicate

    deduplicate / partial-update / aggregation / first-row

    指定合并引擎类型,仅主键表生效。

    • deduplicate仅保留最新记录。
    • partial-update部分字段更新(NULL不覆盖非NULL)。
    • aggregation按聚合函数更新。
    • first-row去重保留首行(不支持DELETE和UPDATE_BEFORE记录)。

    Flink运行时在合并同主键记录时根据此引擎决定合并策略,影响数据的最终写入结果。partial-update和aggregation流式查询时需配合lookup或full-compaction的changelog-producer。

    write-buffer-size

    否

    MemorySize

    256mb

    正整数

    设置写入缓冲区大小。

    Flink运行时在内存中缓冲写入数据,缓冲区满后刷写到磁盘,增大此值可减少刷写频率提高写入吞吐但增加内存占用。

    write.max-writers-per-task

    否

    Integer

    1

    正整数

    设置每个任务的最大写入器数量。

    Flink运行时在每个Sink子任务中创建此数量的写入器并行写入数据,增大此值可提高单任务写入并行度但增加内存和文件句柄消耗。

    changelog-producer

    否

    String

    none

    none / input / lookup / full-compaction

    指定变更日志生产者模式。

    启用后可产生完整的变更日志供下游流式消费。none不产生;input直接传递输入记录;lookup通过查找产生;full-compaction在全量压缩时产生。Flink运行时在提交数据时根据此模式生成对应的变更日志,供下游Source增量消费。

    sink.parallelism

    否

    Integer

    无

    正整数

    指定Sink算子的并行度。

    未设置时使用作业全局并行度。Flink运行时根据此值创建对应数量的Sink子任务,每个子任务负责写入一部分分桶的数据,建议与bucket数保持一致以避免数据倾斜。

    compaction.optimization-enabled

    否

    Boolean

    false

    true / false

    控制是否启用压缩优化。

    启用后Flink运行时在写入过程中自动触发小文件合并,减少文件数量提高查询性能,但会增加写入时的计算开销。

    snapshot.time-retained

    否

    Duration

    1h

    正整数

    设置快照保留时长。

    Flink运行时在快照超过此时长后自动清理,释放存储空间。增大此值可保留更多历史数据用于增量读取和时间旅行查询,但会增加存储消耗。

    snapshot.num-retained.min

    否

    Integer

    10

    正整数

    设置最少保留的快照数量。即使快照超过保留时长,也至少保留此数量的快照。Flink运行时在清理快照时以此值为下限,确保增量读取有足够的快照可用。

    snapshot.num-retained.max

    否

    Integer

    无

    正整数

    设置最多保留的快照数量。设置后Flink运行时在快照数量超过此上限时清理最旧的快照,防止快照无限增长占用存储空间。

  • 序列字段参数
    表3 序列字段参数

    参数

    是否必填

    类型

    默认值

    取值范围

    说明

    sequence.field

    否

    String

    无

    有效的列名

    指定主键表的排序字段。

    Flink运行时根据此字段的值判断记录的新旧顺序,值越大表示记录越新。未指定时按数据到达顺序决定。适用于多流更新场景中解决记录乱序问题。

    rowkind.field

    否

    String

    无

    有效的列名

    指定行类型字段,字段值为 '+I'(插入)、'-U'(更新前)、'+U'(更新后)、'-D'(删除)。Flink运行时根据此字段值确定记录的变更类型,无需依赖Flink运行时的回撤机制,适用于从Kafka等外部系统直接读取变更记录的场景。

  • Lookup参数
    表4 Lookup参数

    参数

    是否必填

    类型

    默认值

    取值范围

    说明

    lookup.async

    否

    Boolean

    false

    true / false

    是否启用异步Lookup。

    启用后Flink运行时使用异步线程池并发查询Paimon存储,可显著提高Lookup JOIN的吞吐量,但会增加内存消耗。

    lookup.async-thread-number

    否

    Integer

    16

    正整数

    异步Lookup的线程池大小。

    仅在lookup.async为true时生效。Flink运行时使用此数量的线程并发执行Lookup查询,增大此值可提高并发查询能力但增加内存和CPU消耗。

    lookup.cache

    否

    String

    AUTO

    AUTO / FULL / MEMORY

    Lookup缓存模式。

    • AUTO自动选择;
    • FULL全量缓存(小表推荐);
    • MEMORY仅内存缓存。

    Flink运行时根据此模式决定缓存策略,FULL模式在首次加载时读取全表数据到缓存,后续查询直接命中缓存。

  • 分桶参数
    表5 分桶参数

    参数

    是否必填

    类型

    默认值

    取值范围

    说明

    bucket

    否

    Integer

    -1

    -2 / -1 / 正整数

    设置分桶数量。

    • -1为Dynamic Bucket(默认,自动管理分桶);
    • -2为Postpone Bucket(延迟分桶,仅Append表);
    • 正整数为固定分桶数。

    主键表使用固定分桶时建议设置为与Sink并行度相同的值以避免数据倾斜。Flink运行时根据分桶键的哈希值将数据分配到对应桶中,分桶数影响数据分布的均衡性和并行读取能力。

    bucket-key

    否

    String

    主键列

    有效的列名

    指定分桶键。未指定时使用主键列作为分桶键。仅主键表生效。Flink运行时根据此列的哈希值进行分桶路由,选择与业务数据分布均匀的列作为分桶键可提高写入和查询性能。

数据类型

Flink Data Type

Paimon Data Type

BOOLEAN

BOOLEAN

TINYINT

TINYINT

SMALLINT

SMALLINT

INT

INT

BIGINT

BIGINT

FLOAT

FLOAT

DOUBLE

DOUBLE

DECIMAL

DECIMAL

STRING

STRING

CHAR

CHAR

DATE

DATE

TIME

TIME

TIMESTAMP

TIMESTAMP

TIMESTAMP WITH LOCAL TIMEZONE

TIMESTAMP WITH LOCAL TIMEZONE

BINARY

BINARY

BYTES

BYTES

相关文档