Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 火花或风暴(三叉戟)_Apache Spark_Redis_Apache Storm - Fatal编程技术网

Apache 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

我正在尝试扩展我们系统中的一个组件,并思考在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)


另请参阅Confluent的Kafka Streams文档,该文档比Apache Kafka的Kafka Streams文档更详细:

感谢Matthias的输入;)