我正在考虑如何使用类似于storm的spark流创建一个多阶段(基于图形的拓扑)流应用程序。
在Storm中,我们有喷口,螺栓的概念,我们可以把这些概念链起来形成一个图表,不同种类的螺栓链在一起执行不同的任务。螺栓/喷口可以独立执行其工作,并将结果传递到下游。
如何使用spark streaming实现类似的功能?我是说在spark里基本上是rdd转化。如何实现类似的功能,使不同的处理组件独立地执行它们的任务(类似于工作流)
在spark,我可以这样做
map(一些map函数)、map(一些其他的map函数)等将任务链接在一起。但在这里,驱动程序被阻塞,直到整个处理完成,然后才能开始处理第二批数据集。我希望它像一个工作流。有可能在Spark里吗?
1条答案
按热度按时间juud5qan1#
spark具有变换缩减架构,storm具有dag架构。这不是一个好主意,以开发传统的程序运行风暴的Spark。当你和spark一起工作的时候,你一定会有不同的想法。
默认情况下,spark将元组发送到处理器(Map器),比如fieldsgrouping或由键展开的部分键分组。
不过,您可以在spark上模拟一些风暴操作。例如
Spout -> BoltA -> BoltB
全部fieldsGrouping
你可以做:如果你愿意的话
Spout->BoltA , Spout->BoltB
你可以做:对于全局分组,必须设置键值对,并且该键在所有输入中必须相等。
我不建议使用spark而不是storm。在某些特殊情况下,尝试使用spark或storm。