2015-06-05 36 views
1

我們正試圖用Apache Spark流代替Apache Storm。 在暴風雨中;我們根據「客戶ID」對流進行分區,以便將具有「客戶ID」範圍的消息路由到同一個螺栓(工作人員)。 我們這樣做是因爲每個工作人員都會緩存客戶詳細信息(來自數據庫)。 所以我們分成4個分區,每個螺栓(工人)將有整個範圍的1/4。將流數據粘貼到特定工作

我看過比較Spark和Storm;這是對Spark的限制。 我希望我們在Spark Streaming中有這個解決方案

+0

什麼是流源? – maasg

+0

Kafka,我正在研究卡夫卡的SPARK directStream,但作爲實驗,它與普通的Stream相比並不工作(https://spark.apache.org/docs/latest/streaming-kafka-integration.html) – sid

回答

0

當使用Kafka時,解決這個問題的一種方法是在生產者一側對數據進行分區。正如您可能已經看到的,Kafka消息有一個密鑰,您可以使用該密鑰在分區之間對數據進行分區。

使用卡夫卡接收器,您可以爲每個分區創建一個接收器。 Streaming作業開始後,接收器將分佈在多個執行器上。

這意味着每個執行程序(JVM)都將只接收分配給它的分區的數據。這會導致同一個ID在接收者的生命週期中進入同一個執行者,並且能夠按照問題中的預期進行有效的本地緩存。

相關問題