在Storm Bolt中轮询并触发任务

时间:2015-03-18 22:27:30

标签: java apache-storm eventtrigger

我有一个使用方法(比如/blah/blah/movie_data.csv)从磁盘上的文件(例如loadDataFromFile())加载数据的螺栓,并将其存储在内存中。此文件每天上午10点刷新(保证在上午10点之前更新)。我希望我的螺栓在刷新后重新加载文件中的所有数据(上午10点之后不久)。

我该如何实现?我应该轮询movie_data.csv并检查时间戳是否比上一个文件加载时间更新,如果是,则触发loaddataFromFile()方法?或者这可以使用某种形式的tick元组来完成吗?

我不需要代码/伪代码。关于可能相关的库/类的一些指示。我已经查看了tick元组,但它似乎没有帮助,因为我想在特定时间刷新文件,而不是每隔T秒刷新一次。

螺栓有没有办法在预定时间(例如每天上午10点)接收tick元组?这样,我就不必使用轮询来检查文件是否已刷新。

1 个答案:

答案 0 :(得分:0)

这取决于您是否使用Trident拓扑。如果它是Trident拓扑,您可以实现storm.trident.spout.BatchSpoutExecutorBatchSpoutExecutor.BatchSpoutEmitter.我记得,检查Trident示例,因为它们实现了这些接口。

希望这会有所帮助。