将流数据粘贴到特定的工作中

时间:2015-06-05 22:19:55

标签: spark-streaming

我们正在尝试用Apache Spark流式替换Apache Storm。 暴风雨中;我们根据"客户ID"对流进行分区。这样的消息带有一系列"客户ID"将被路由到同一个螺栓(工人)。 我们这样做是因为每个工作人员都会缓存客户详细信息(来自DB)。 所以我们分成4个分区,每个螺栓(工人)将占整个范围的1/4。

我确实看到了比较Spark和Storm;这是Spark的限制。 我希望我们在Spark Streaming中有一个解决方案

1 个答案:

答案 0 :(得分:0)

使用Kafka时,解决此问题的一种方法是在生产者端对数据进行分区。正如您可能已经看到的那样,Kafka消息有一个密钥,您可以使用该密钥在分区之间对数据进行分区。

使用Kafka接收器,每个分区创建一个接收器。在开始流式传输作业时,接收器将分布在多个执行器上。

这意味着每个执行程序(JVM)将仅接收已分配的分区的数据。这导致相同的id在接收器的生命周期内转到相同的执行器,并在问题中实现有效的本地缓存。