在我们的遗留架构中,我们有一个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实现这一目标。