2015-10-07 22 views
5

I lotti in streaming scintilla sono i lotti di RDD .Suppose lotto di 3 RDDs.RDD partizionamento in streaming scintilla

scintilla anche la documentazione dice che un blocco viene creato ogni 200ms di ricevitore, e la partizione è assegnato al blocco.

In 1 secondo ho un lotto di 3 RDD, con 5 blocchi se si considera 200 ms.

Così come sarà un RDD ottenere partizionato tra i nodi dei lavoratori, è il singolo RDD che verrà partizionato o una partita completa.

Forse l'ho preso in modo sbagliato. Please guide me

risposta

13

Un lotto in streaming corrisponde a un RDD. Quel RDD avrà n partizioni, dove n = intervallo batch/intervallo di blocco. Supponiamo che tu abbia l'intervallo di blocco standard di 200ms e un intervallo batch di 2 secondi, quindi avrai 10 partizioni. I blocchi sono creati da un ricevitore e ciascun ricevitore è allocato in un host. Quindi, quelle 10 partizioni sono in un singolo nodo e sono replicate in un secondo nodo.

Quando la RDD viene inviato per l'elaborazione, i padroni di casa che eseguono il compito leggeranno i dati da tale host. Le attività in esecuzione sullo stesso nodo avranno la località "NODE_LOCAL", mentre le attività eseguite su altri nodi avranno la località "ANY" e impiegheranno più tempo.

Pertanto, per migliorare l'elaborazione parallela, si consiglia di allocare più ricevitori e utilizzare unione per creare un unico DSTREAM per l'ulteriore elaborazione. In questo modo i dati saranno consumati ed elaborati da diversi nodi in parallelo.

+0

Hey grazie @maasg – dexter

+0

Grazie @maasg. Solo per confermare che, se abbiamo più ricevitori, abbiamo più DStreams e ogni DStream corrisponde a un RDD. Quindi, quando uniamo più Dstreams, otteniamo un singolo DStream. Questo DStream è costituito da più RDD o singoli RDD? –

+0

@ DineshSachdev108 Bu definizione union() sarà "Restituisce un nuovo DSTREAM che contiene l'unione degli elementi nell'origine DSTREAM e otherDStream" questo significa che il risultato sarà un DSTREAM pure. E per definizione un "DStream è rappresentato come una sequenza di RDD Ciò significa che il risultato conterrà più RDD in base al numero di batch ricevuti dal ricevitore: – bigdatamann

0

È ancora applicabile alla versione più recente della scintilla?

Ho letto an article in cui lo scenario con più ricevitori su spark è obsoleto e invece nuovo kafka api diretto (createDirectStream) si prenderà cura di praticamente tutto per te.

Problemi correlati