使用动态SQL查询的MS SQL CDC的Apache Nifi

时间:2017-09-14 12:44:57

标签: sql-server apache-nifi phoenix hortonworks-dataflow

在我们的遗留架构中,我们有一个MS SQL服务器数据库,该数据库以近实时的方式存储所有传感器信息,平均每秒接收100条记录。为了获得有关传感器事件的完整信息,我们需要在数据库中加入2到3个表。

Sample Query:

SELECT SOMETHING
FROM TABLE1 AS tab1 
INNER JOIN TABLE2 AS tab2 ON tab1.UpdateID=tab2.ID 
INNER JOIN TABLE3 as tab3 ON tab1.TagID=tab3.ID 
WHERE tab2.UpdateTime > ${lastExtractUnixTime}

我们的要求是每1分钟获取上述查询的捕获数据更改并将记录发布到Kafka。

暂时我正在使用Spark Core JDBC进行CDC,处理记录,发送到Kafka并将CDC信息与${lastExtractUnixTime}一起保存到HBase中作为Phoenix表。作业按计划每隔1分钟进行一次。

作为长期解决方案,我们计划使用Apache Nifi进行CDC事件并将信息发布到Kafka,Spark流将从Kafka读取消息,将在其上应用一些业务逻辑并将丰富的数据发送到其他卡夫卡主题;我找不到合适的处理器,这将帮助我动态传递SQL中的${lastExtractUnixTime}并每隔1或2分钟获取增量记录。

请建议如何使用Apache Nifi实现这一目标。

0 个答案:

没有答案