Apache spark 火花或风暴(三叉戟)
我正在尝试扩展我们系统中的一个组件,并思考在Storm(Trident)和Spark之间应该有什么更好的方式 所以,我们有两个大的集合,它们可以包含多达百万个存储在redis集群中的事件。说S1和S2 现在,我们从消息队列(Kafka)读取一条消息,需要找到S1和S2中存在的所有元素(基本上是查找**S1)∩S2)。现在,对于小集合,Redis本身可以有效地进行交集,但我们预计这些集合的大小可以达到百万** 为了解决上述问题,我们正在探索一些分布式计算框架(即Storm和Spark) 我对Storm的基本喷口和螺栓有一点经验,我认为它不能在这里有效地工作,因为我们必须在其中一个螺栓内编写交叉逻辑。探索三叉戟是否有一些用处,但在我看来,它可能无法提供足够的帮助 另一方面,Spark在其核心提供了RDD,它提供了交叉、联合等操作,这些操作将在开箱即用的情况下并行处理,我猜我们从消息队列中读取一条消息,并向Spark cluster提交一个任务,Spark cluster将从redis读取并计算S1∩S2有效。因此,我认为Spark非常适合我们的用例。 如果Storm和Spark都能帮上忙,我会倾向于使用Storm。 这里的任何人都能提供一些观点。免责声明:我是Flink and Storm的提交人,在Confluent担任软件工程师,专注于卡夫卡流 我不熟悉Spark的详细信息,但“intersect”听起来像是一个批处理操作符——所以我不确定它是否在Spark Streaming中可用——您应该仔细检查一下(我假设您想在比较Spark和Storm时使用Spark Streaming)。如果您想进行批处理,使用Spark并利用“intersect”操作符听起来是合理的 在流处理中执行“相交”与批处理不同。但是,它基本上是一个连接操作,并且应该不难实现(只要系统提供了适当的连接操作符) 正如您提到的,您将使用来自卡夫卡的消息,这可能值得一试,卡夫卡的流处理库。因此,您不需要运行其他系统。Kafka Streams提供了丰富的DSL,包括滑动窗口连接 如果您想使用流处理框架,我宁愿使用它(IMHO)而不是Storm(或Spark)Apache spark 火花或风暴(三叉戟),apache-spark,redis,apache-storm,Apache Spark,Redis,Apache Storm,我正在尝试扩展我们系统中的一个组件,并思考在Storm(Trident)和Spark之间应该有什么更好的方式 所以,我们有两个大的集合,它们可以包含多达百万个存储在redis集群中的事件。说S1和S2 现在,我们从消息队列(Kafka)读取一条消息,需要找到S1和S2中存在的所有元素(基本上是查找**S1)∩S2)。现在,对于小集合,Redis本身可以有效地进行交集,但我们预计这些集合的大小可以达到百万** 为了解决上述问题,我们正在探索一些分布式计算框架(即Storm和Spark) 我对Sto
另请参阅Confluent的Kafka Streams文档,该文档比Apache Kafka的Kafka Streams文档更详细:感谢Matthias的输入;)