我正在处理火花流式传输作业,需要存储中间结果,以便在下一个窗口流中重复使用它们。数据量非常大,因此可能无法将其存储在spark缓存中。我还需要通过一些“关键”来读取数据。 我在考虑将Cassandra作为中间存储,但它也有一些缺点。 或者,也许Kafka可以完成这项工作,但需要额外的工作才能按键选择给定的数据部分。
你能告诉我应该怎么做吗? 如何在Storm中解决这些问题 - 是否有任何内部机制或者首选使用一些外部工具?答案 0 :(得分:3)
Solr作为索引+ Cassandra作为NoSQL存储工作正常我的用例,我必须处理tera字节的数据。但在我的情况下,我使用Cassandra来持久存储多年的数据。
Kafka因其简单的架构而可以替代Jboss / AMQ。目前我正在使用Apache Storm + Kafka在其中一个项目中进行实时流处理。
由于您正在存储中间数据,我认为Kafka是设置正确保留期的最佳选择。
再看一个SE Question和其他article
答案 1 :(得分:2)
正如您所提到的,Kafka在按键获取项目时遇到了一些问题。它实际上只为FIFO范例提供API。我建议使用专用的存储软件Cassandra,MongoDB,我甚至看过Solr用于存储文本。使用专为密钥检索而设计的内容会更容易,而不是尝试自己修改Kafka,并且很可能会引入可能需要永远解决的错误/问题。
正如SQL.injection所说,你必须自己管理存储和逻辑。风暴没有提供这样的机制。