0

Dies mag eine grundlegende Frage sein, aber ich habe einige Schwierigkeiten, dies zu verstehen.Spark Streaming Union Stream - Parallelisierung

Ich verwende derzeit die Microsoft Azure Event Hubs Streaming in meiner Spark/Scala-Anwendung, die Kafka ähnlich ist.

Wenn ich einen Unionized-Stream erstellt habe, glaube ich, dass diese Union mehrere DStream-Objekte abstrahiert aussehen wie ein einzelner DStream, werden die mehreren RDDs im Stream parallel verarbeitet, oder wird jede RDD einzeln verarbeitet?

Um zu versuchen und zu erklären, dies mehr, hier ist ein kurzes Beispiel:

sparkConf.set(SparkArgumentKeys.MaxCores, (partitionCount * 2).toString) 

val ssc = new StreamingContext(sparkConf, streamDuration) 

val stream = EventHubsUtils.createUnionStream(ssc, hubParams, storageLevel) 
stream.checkpoint(streamDuration) 

val strings = stream.map(f => new String(f)) 
strings.foreachRDD(rdd => { 
    rdd.map(f => f.split(' ')) 
}) 

partitionCount ist die Anzahl der Partitionen in dem azur Ereignisse Hub.

  1. Führt die initiale "stream.map" auf jeder RDD parallel?
  2. Verarbeitet "string.foreachRDD" jeweils eine einzelne RDD oder verarbeitet sie alle RDDs parallel?

Antwort

1

Nach jeder Partie, so dass nach streamDuration, Funken werden alle in diesem Zeitfenster Daten auf einer RDD empfangen sammeln, werden dann diese RDD Karte (wieder: es ein RDD ist, aber Karte ist parallel, wie Karte getan im Batch-Job).

Als letzten Schritt wird für jede RDD Ihre Funktion von foreachRDD ausgeführt. Für jede RDD bedeutet, dass es auf RDD von jedem Mikro-Batch (Zeitfenster) ausgeführt wird.

Natürlich nächste streamDuration Zeit werden die Daten wieder gesammelt werden, wird RDD (nur von Zeit zwischen dem letzten Sammlung und aktuellen Daten), Karte, Funktion foreachRDD

Zusammenfassung gegeben erstellt werden: foreachRDD bedeutet nicht, dass es viele RDD auf einmal ausgeführt wird, aber es bedeutet, dass in jeder Mikro-Batch-Funktion auf diese Mikro-Batch

+0

vage angewendet wird und somit ziemlich schwer zu folgen – thebluephantom

+0

@thebluephantom Was meinst du? Was ändert sich für dich? –

+0

Nun, ich habe die foreachRDD recherchiert und mich selbst veröffentlicht, da ich die Dokumentation etwas irreführend finde. Es ist ein heikles Thema und ich sehe, du bist mir voraus. Aber in einem Gericht - unabhängig von der grünen Zecke - ist es mir nicht klar genug. – thebluephantom