我搜索了很多,但几乎找不到我特别要找的东西。这个问题简单明了。我有一个数据库表,每秒都会填充一次!接下来,我几乎定义了Apache Storm Spout/Bolts类中的分析方法/类。我只想将每秒插入的新行作为流输入发送到 Spout 类。我该怎么做?
谢谢
有几种方法可以做到这一点,但是如果不了解数据的性质,就很难给出一个好的答案。一种方法是使用另一个表来跟踪哪些记录已经根据原始表中的某个字段被 storm 处理。例如,如果您使用了时间戳列,则可以跟踪已处理的最大时间戳。在读取/更新元数据表和实际数据表时,必须注意一些潜在的争用条件,但这两种情况都可以通过事务和适当的时间同步进行管理。
Teradata 提供队列表的功能。这些表支持"选择和使用"操作,这意味着一旦您选择行,它就会从表中删除行。有关更多信息:http://www.info.teradata.com/htmlpubs/DB_TTU_14_00/index.html#page/SQL_Reference/B035_1146_111A/ch01.032.045.html#ww798205此方法假定 Teradata 中的表用作缓冲区,没有其他人需要它。如果您需要同时拥有永久全表(对于其他应用程序)以及将此数据流式传输到 Storm,您可能希望修改加载过程以填充永久表和队列表。在这种情况下,其他应用程序可以在永久表中使用整个数据深度,而 Storm 将以最小的空间影响使用队列表中的数据。