更新时间:2024-05-28 GMT+08:00

ClickHouse表开发建议

配置多个ClickHouseBalancer实例IP

配置多个ClickHouseBalancer实例IP可以避免ClickHouseBalancer实例单点故障。相关配置(with属性)如下:

'url' = 'jdbc:clickhouse://ClickHouseBalancer实例IP1:ClickHouseBalancer端口,ClickHouseBalancer实例IP2:ClickHouseBalancer端口/default',

Sink表配置合适的攒批参数

攒批写参数:

Flink会将数据先放入内存,到达触发条件时再flush到数据库表中。

相关配置如下:

  • sink.buffer-flush.max-rows:攒批写ClickHouse的行数,默认100。
  • sink.buffer-flush.interval:攒批写入的间隔时间,默认1s。

两个条件只要有一个满足,就会触发一次sink,即到达触发条件时再flush到数据库表中。

  • 示例1:60秒sink一次
    'sink.buffer-flush.max-rows' = '0',
    'sink.buffer-flush.interval' = '60s'
  • 示例2:100条sink一次
    'sink.buffer-flush.max-rows' = '100',
    'sink.buffer-flush.interval' = '0s'
  • 示例3:数据不sink
    'sink.buffer-flush.max-rows' = '0',
    'sink.buffer-flush.interval' = '0s'

配置去重需在ClickHouse中创建ReplacingMergeTree表

由于Flink写入ClickHouseBalancer无法保证同key数据写入同一个ClickHouseServer中,所以同key数据的合并需要依赖ClickHouse的ReplacingMergeTree引擎。