035-解决streamsets jdbc全量模式数据重复问题

2,235 阅读1分钟

这是坚持技术写作计划(含翻译)的第35篇,定个小目标999,每周最少2篇。

本文主要解决在使用streamsets的JDBC Query Consumer Origin组件消费时,使用全量模式(Full Mode),数据重复问题。

在之前一篇《033-史上最全-mysql迁移到clickhouse的5种办法》中,有介绍如何使用JDBC Query Consumer全量导出,但是有人反馈因为streamsets的管道(pipeline)一直在重复运行,导致最后数据是重复的。

实际上在官方文档有讲 Full and Incremental Mode

image.png

主要看提示(Tip)部分,如果只想执行一次查询后就停止pipeline,应该配置origin的generate events 并且使用Pipeline Finisher来自动停止pipeline,更多信息参见 Event Generation.

在jdbc origin勾选 Produce Events

image.png

从组件选则Pipeline Finisher,并且配置 Preconditions 为 ${record:eventType() == 'no-more-data'} 即可
image.png

参考资料