如何基于Oracle或MySQL表轮询在Apache Storm中创建流?

时间:2015-04-01 18:41:48

标签: apache-storm

我需要轮询一个表并为Apache Storm中的每一行创建一个元组。

我在哪里可以找到一个例子?

2 个答案:

答案 0 :(得分:1)

根据您的要求,它与风暴没有太大关系。这是一个与数据库相关的问题。

由于您没有关于要使用的数据库,表结构等的信息,我会采取粗略步骤:

假设该表具有last-updated-timestamp或增量ID,使用它作为标记来提取数据。以身份证为例。

1)每100ms执行一次sql select * from myyable where id > ${last retrived id} order by id limit 100。 $ {last reived id}初始为-1。

2)迭代结果集并发送元组

3)使用最后一条记录的id更新$ {last reived id}。

(请注意,如果使用上次更新的时间戳,则会有一些差异,因为不同的记录可能具有相同的上次更新时间戳)

希望这会有所帮助

答案 1 :(得分:1)

我们有一个符合您要求的Storm MySql Spout。它会使bin日志生成元组。

https://github.com/flipkart-incubator/storm-mysql

您可以使用表过滤器实际监听您感兴趣的表的bin日志事件。因此,只要在表上执行插入/删除/更新,它就会生成一个元组。

鲸鱼嘴也会给你"至少一次/最多一次"担保。因为它在Zookeeper中存储bin日志偏移量,所以在崩溃的情况下它可以从它最后的位置恢复。没有必要进行任何民意调查。

免责声明:上述鲸鱼喷水的作者