Spark streaming

Spark streaming (Spark streaming programming guide) est une extension de la librairie principale de Spark, qui permet de traiter des flux continus de données. Elle est tolérante aux erreurs et permet de réaliser des algorithmes complexes grâce à des fonctions de haut niveau comme map, reduce, join, window. Finalement, les données traitées peuvent être sauvegardées sur différents systèmes de fichiers, dans des bases de données ou dans des tableaux de bord interactifs. Vous pouvez également appliquer des algorithmes Spark de Machine Learning ou de traitement de graphes sur les flux de données.

streaming-arch

Spark Streaming reçoit les flux de données et les divise en paquets qui sont traités par le Spark Engine pour générer le résultat sous forme de paquets.

streaming-flow

La librairie fournit des objets appelés DStream, pour Discretized Stream, qui représentent un flux continu de données. Les DStream peuvent soit être créés par des flux de données entrants (HDFS), soit par des sources provenant de Kafka, Flume ou Kinesis, ou encore par des opérations sur des DStreams. En interne, un DStream est représenté par une séquence de RDDs.

wordcount en streaming

Ouvrez deux Terminaux connectés au Namenode, et mettez les côte à côte. Dans le premier, déplacez-vous dans ce répertoire:

cd ~/TP_Spark/sparklib

et lancez

spark-submit --deploy-mode client --master local[2] SparkStreaming_wc.py localhost 9999

Dans le second Terminal, lancez le serveur de données netcat sur le port 9999 de la manière suivante :

nc -l -p 9999

et tapez des mots rapidement ; vous devriez voir le comptage de mot apparaître sur le Terminal 1, chaque seconde.

Remarques : pour entrer un série de mots d’un coup sur le second Terminal, vous pouvez soit - écrire une ligne de mots séparés par des espaces dans le second Terminal. Envoyez alors la ligne d’un coup, en appuyant sur la touche entrée de votre clavier. - copier en mémoire une ligne d’un texte quelconque, et la coller dans le second Terminal.

Les paquets de données correspondent à une durée d’une seconde. Pour allonger le temps associé aux paquets de données, il suffit de modifier la ligne ssc = StreamingContext(sc, 1), en remplaçant la valeur 1 par la valeur souhaitée en secondes.