我需要轮询一个表并为Apache Storm中的每一行创建一个元组。
我在哪里可以找到一个例子?
答案 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日志偏移量,所以在崩溃的情况下它可以从它最后的位置恢复。没有必要进行任何民意调查。
免责声明:上述鲸鱼喷水的作者