使用storm从两个不同的dbs连接两个表

时间:2013-11-21 05:17:46

标签: apache-storm

我是暴风雨的新手。只是想我是否可以使用storm来合并/连接来自两个不同dbs的两个表(coz,两个表有某种外键关系,恰好存在于不同的dbs /系统中),任何想法我是如何构成的拓扑?比如有两个独立的喷嘴从两个dbs定期读取并有一个螺栓来进行连接工作吗?

这甚至是风暴的正确使用案例吗?

任何想法都表示赞赏!

2 个答案:

答案 0 :(得分:6)

这可能是Storm的一个很好用,但它实际上取决于你的数据集。如果您只想在单独的DBMS中有两个表,并且要加入并存储在第三位(DBMS或其他位置),那么只有当这是一个流连接时,Storm才会真正有意义,即两个表经常被写入并且你想加入刚刚写在一起的东西。

此外,几乎不言而喻,你应该只使用Storm会带来的复杂性,如果这是一个相对较大和较高音量的东西。

如果它很小,你可能会更好地使用传统的ETL工具,即使只是为了访问两个数据库并组合数据而只需要一些代码。

如果数据集很大并且您需要在很短的时间内进行连接,我会考虑采用另一种方式,例如使用map-reduce作业从两个DB中提取数据并传播连接在群集外面。

答案 1 :(得分:3)

  就像有两个独立的喷嘴从两个dbs定期读取并有一个螺栓来进行连接工作

是的,这很有可能。风暴可以有多个spouts。而且A bolt consumes any number of input streams, does some processing, and possibly emits new streams.通常最好让您的喷口从Kafka或RabbitMQ等队列中读取(您可以找到与大多数排队系统的喷口集成)。因此,在这种情况下,您可以使用来自DB的数据提供队列,然后让spout使用相同的数据。

更新:
关于风暴并行的工作方式,这是一个非常好的Article