itinycheng / flink-connector-clickhouse

Flink SQL connector for ClickHouse. Support ClickHouseCatalog and read/write primary data, maps, arrays to clickhouse.
Apache License 2.0
347 stars 149 forks source link

ck的delete方式,是否能修改为insert加删除标志,而不是去执行alter语句 #47

Closed denganming closed 8 months ago

itinycheng commented 1 year ago

@denganming 您说的确实是个问题,但加sign并不是每个引擎都支持,所以得有个比较普遍适用的方案; 最近我自己加了个update_after的转update,insert 或直接ignore的配置; delete还没想太多,如果合适方案欢迎PR;

walkhan commented 1 year ago

@itinycheng update策略,在1.14代码中看到是有的,实测不支持 image

那如何做到实时更新(delete和update)

itinycheng commented 1 year ago

sink.update-strategy的代码我并没合并到release-1.14分支; 不建议在Flink端生成类似update的操作,当前connector对update/delete支持也并不完善; 最好结合ClickHouse端表引擎来解决实际问题,单靠connector不太行;

walkhan commented 1 year ago

sink.update-strategy的代码我并没合并到release-1.14分支; 不建议在Flink端生成类似update的操作,当前connector对update/delete支持也并不完善; 最好结合ClickHouse端表引擎来解决实际问题,单靠connector不太行;

@itinycheng ClickHouse我用了ReplacingMergeTree引擎,如果上游数据更新或者删除了,偶尔还是会出现数据多的问题。那么在1.15中sink.update-strategy能否规避这个问题呢?

itinycheng commented 1 year ago

sink.update-strategy的代码我并没合并到release-1.14分支; 不建议在Flink端生成类似update的操作,当前connector对update/delete支持也并不完善; 最好结合ClickHouse端表引擎来解决实际问题,单靠connector不太行;

@itinycheng ClickHouse我用了ReplacingMergeTree引擎,如果上游数据更新或者删除了,偶尔还是会出现数据多的问题。那么在1.15中sink.update-strategy能否规避这个问题呢?

Connector本身没办法保证end-to-end exactly once,具体数据多的原因给不出太多建议,最好根据自己场景排查下,如果是因为没有及时optimize table,可以另一个任务定时对表执行optimize操作; sink.update-strategy配置只是给了我们个转换update语句的策略而已;