FlinkSQL 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引擎。