这是坚持技术写作计划(含翻译)的第35篇,定个小目标999,每周最少2篇。
本文主要解决在使用streamsets的JDBC Query Consumer Origin组件消费时,使用全量模式(Full Mode),数据重复问题。
在之前一篇《 033-史上最全-mysql迁移到clickhouse的5种办法 》中,有介绍如何使用JDBC Query Consumer全量导出,但是有人反馈因为streamsets的管道(pipeline)一直在重复运行,导致最后数据是重复的。
实际上在官方文档有讲 Full and Incremental Mode
主要看提示(Tip)部分,如果只想执行一次查询后就停止pipeline,应该配置origin的generate events 并且使用Pipeline Finisher来自动停止pipeline,更多信息参见 Event Generation.
在jdbc origin勾选 Produce Events
从组件选则Pipeline Finisher,并且配置 Preconditions 为 ${record:eventType() == 'no-more-data'}
即可