Tutoriel Spark Streaming - Analyse des sentiments à l'aide d'Apache Spark

Ce blog Spark Streaming vous présentera Spark Streaming, ses fonctionnalités et ses composants. Il comprend un projet d'analyse des sentiments utilisant Twitter.

Spark Streaming est une extension de l'API Spark principale qui permet un traitement de flux évolutif, à haut débit et tolérant aux pannes des flux de données en direct. Spark Streaming peut être utilisé pour diffuser des données en direct et le traitement peut avoir lieu en temps réel. La base d'utilisateurs sans cesse croissante de Spark Streaming se compose de noms connus comme Uber, Netflix et Pinterest.



En ce qui concerne l'analyse des données en temps réel, Spark Streaming fournit une plate-forme unique pour ingérer des données pour un traitement rapide et en direct et prouve votre compétence dans le même.À travers ce blog, je vais vous présenter ce nouveau domaine passionnant de Spark Streaming et nous passerons par un cas d'utilisation complet, Analyse des sentiments sur Twitter en utilisant Spark Streaming.



Voici les sujets qui seront traités dans ce blog:

  1. Qu'est-ce que le streaming?
  2. Pourquoi Spark Streaming?
  3. Présentation de Spark Streaming
  4. Fonctionnalités de Spark Streaming
  5. Principes de base de Spark Streaming
    5.1 Contexte de streaming
    5.2 DStream
    5,3 Mise en cache / persistance
    5,4 Accumulateurs, variables de diffusion et points de contrôle
  6. Cas d'utilisation - Analyse des sentiments sur Twitter

Qu'est-ce que le streaming?

Le flux de données est une technique de transfert de données afin qu'elles puissent être traitées comme un flux régulier et continu. Les technologies de streaming deviennent de plus en plus importantes avec la croissance d'Internet.



Qu Figure: Qu'est-ce que le streaming?

Pourquoi Spark Streaming?

Nous pouvons utiliser Spark Streaming pour diffuser des données en temps réel à partir de diverses sources telles que Twitter, la bourse et les systèmes géographiques et effectuer des analyses puissantes pour aider les entreprises.

Figure: Pourquoi Spark Streaming?



qu'est-ce que la sérialisation en java

Présentation de Spark Streaming

Spark Streaming est utilisé pour traiter les données de streaming en temps réel. C'est un ajout utile à l'API Spark principale. Spark Streaming permet un traitement de flux à haut débit et tolérant aux pannes des flux de données en direct.

Figure: Flux dans Spark Streaming

L'unité de flux fondamentale est DStream qui est essentiellement une série de RDD pour traiter les données en temps réel.

Fonctionnalités de Spark Streaming

  1. Mise à l'échelle: Spark Streaming peut facilement évoluer vers des centaines de nœuds.
  2. La vitesse: C'est unchieves faible latence.
  3. Tolérance aux pannes: Spark a la capacité de ese remettre efficacement des pannes.
  4. L'intégration: Spark s'intègre au traitement par lots et en temps réel.
  5. Analyse commerciale: Spark Streaming c'est voussed pour suivre le comportement des clients qui peut être utilisé dans l'analyse commerciale.

Flux de travail Spark Streaming

Le flux de travail Spark Streaming comporte quatre étapes de haut niveau. La première consiste à diffuser des données à partir de diverses sources. Ces sources peuvent être des sources de données en streaming comme Akka, Kafka, Flume, AWS ou Parquet pour un streaming en temps réel. Le deuxième type de sources comprend HBase, MySQL, PostgreSQL, Elastic Search, Mongo DB et Cassandra pour le streaming statique / par lots. Une fois que cela se produit, Spark peut être utilisé pour effectuer un apprentissage automatique sur les données via son API MLlib. De plus, Spark SQL est utilisé pour effectuer d'autres opérations sur ces données. Enfin, la sortie en continu peut être stockée dans divers systèmes de stockage de données tels que HBase, Cassandra, MemSQL, Kafka, Elastic Search, HDFS et le système de fichiers local.

Figure: Présentation de Spark Streaming

Principes de base de Spark Streaming

  1. Contexte de streaming
  2. DStream
  3. Mise en cache
  4. Accumulateurs, variables de diffusion et points de contrôle

Contexte de streaming

Contexte de streaming consomme un flux de données dans Spark. Il enregistre un Entrée DStream pour produire un Destinataire objet. C'est le principal point d'entrée de la fonctionnalité Spark. Spark fournit un certain nombre d'implémentations par défaut de sources telles que Twitter, Akka Actor et ZeroMQ qui sont accessibles depuis le contexte.

Un objet StreamingContext peut être créé à partir d'un objet SparkContext. Un SparkContext représente la connexion à un cluster Spark et peut être utilisé pour créer des RDD, des accumulateurs et des variables de diffusion sur ce cluster.

import org.apache.spark._ import org.apache.spark.streaming._ var ssc = new StreamingContext (sc, Seconds (1))

DStream

Flux discrétisé (DStream) est l'abstraction de base fournie par Spark Streaming. C'est un flux continu de données. Il est reçu d'une source de données ou d'un flux de données traité généré par transformation du flux d'entrée.

Figure: Extraction de mots d'un DStream d'entrée

En interne, un DStream est représenté par une série continue de RDD et chaque RDD contient des données d'un certain intervalle.

DStreams d'entrée: DStreams d'entrée sont des DStreams représentant le flux de données d'entrée reçues des sources de streaming.

Figure: Le récepteur envoie des données sur le DStream d'entrée où chaque lot contient des RDD

Chaque entrée DStream est associée à un objet Receiver qui reçoit les données d'une source et les stocke dans la mémoire de Spark pour traitement.

Transformations sur DStreams:

Toute opération appliquée sur un DStream se traduit par des opérations sur les RDD sous-jacents. Les transformations permettent aux données du DStream d'entrée d'être modifiées de la même manière que les RDD. Les DStreams prennent en charge de nombreuses transformations disponibles sur les RDD Spark normaux.

différence entre l'interface et la classe en java

Figure: Transformations DStream

Voici quelques-unes des transformations populaires sur DStreams:

carte( func )carte( func ) renvoie un nouveau DStream en passant chaque élément du DStream source via une fonction func.
flatMap ( func )flatMap ( func ) est similaire à map ( func ) mais chaque élément d'entrée peut être mappé à 0 ou plusieurs éléments de sortie et renvoie un nouveau DStream en passant chaque élément source via une fonction func.
filtre( func )filtre( func ) renvoie un nouveau DStream en sélectionnant uniquement les enregistrements du DStream source sur lequel func renvoie vrai.
réduire( func )réduire( func ) renvoie un nouveau DStream de RDD à un seul élément en agrégeant les éléments dans chaque RDD du DStream source à l'aide d'une fonction func .
par groupe( func )par groupe( func ) renvoie le nouveau RDD qui est essentiellement composé d'une clé et de la liste correspondante des éléments de ce groupe.

DStreams de sortie:

Les opérations de sortie permettent aux données de DStream d'être transférées vers des systèmes externes tels que des bases de données ou des systèmes de fichiers. Les opérations de sortie déclenchent l'exécution réelle de toutes les transformations DStream.

Figure: Opérations de sortie sur DStreams

Mise en cache

DStreams permettre aux développeurs de mettre en cache / conserver les données du flux en mémoire. Ceci est utile si les données du DStream seront calculées plusieurs fois. Cela peut être fait en utilisant le persister() méthode sur un DStream.

Figure: Mise en cache dans 2 nœuds

Pour les flux d'entrée qui reçoivent des données sur le réseau (tels que Kafka, Flume, Sockets, etc.), le niveau de persistance par défaut est défini pour répliquer les données sur deux nœuds pour la tolérance aux pannes.

Accumulateurs, variables de diffusion et points de contrôle

Accumulateurs: Accumulateurs sont des variables qui ne sont ajoutées que par une opération associative et commutative. Ils sont utilisés pour implémenter des compteurs ou des sommes. Le suivi des accumulateurs dans l'interface utilisateur peut être utile pour comprendre la progression des étapes en cours. Spark prend en charge nativement les accumulateurs numériques. Nous pouvons créer des accumulateurs nommés ou non.

Variables de diffusion: Variables de diffusion permettre au programmeur de garder une variable en lecture seule en cache sur chaque machine plutôt que d'en envoyer une copie avec les tâches. Ils peuvent être utilisés pour donner à chaque nœud une copie d'un grand ensemble de données d'entrée de manière efficace. Spark tente également de distribuer des variables de diffusion à l'aide d'algorithmes de diffusion efficaces pour réduire les coûts de communication.

Points de contrôle: Points de contrôle sont similaires aux points de contrôle dans les jeux. Ils le font fonctionner 24 heures sur 24, 7 jours sur 7 et le rendent résilient aux pannes sans rapport avec la logique de l'application.


Figure:
Caractéristiques des points de contrôle

Cas d'utilisation - Analyse des sentiments sur Twitter

Maintenant que nous avons compris les concepts de base de Spark Streaming, résolvons un problème réel à l'aide de Spark Streaming.

Énoncé du problème: Concevoir un système d'analyse des sentiments Twitter dans lequel nous générons des sentiments en temps réel pour la gestion de crise, l'ajustement des services et le marketing cible.

Applications de l'analyse des sentiments:

  • Prédire le succès d'un film
  • Prédire le succès de la campagne politique
  • Décidez s'il faut investir dans une certaine entreprise
  • Publicité ciblée
  • Examiner les produits et services

Implémentation Spark Streaming:

Trouvez le pseudo code ci-dessous:

// Importez les packages nécessaires dans le programme Spark import org.apache.spark.streaming. {Seconds, StreamingContext} import org.apache.spark.SparkContext._ ... import java.io.File object twitterSentiment {def main (args : Array [String]) {if (args.length<4) { System.err.println('Usage: TwitterPopularTags ' + ' []') System.exit(1) } StreamingExamples.setStreamingLogLevels() //Passing our Twitter keys and tokens as arguments for authorization val Array(consumerKey, consumerSecret, accessToken, accessTokenSecret) = args.take(4) val filters = args.takeRight(args.length - 4) // Set the system properties so that Twitter4j library used by twitter stream // Use them to generate OAuth credentials System.setProperty('twitter4j.oauth.consumerKey', consumerKey) ... System.setProperty('twitter4j.oauth.accessTokenSecret', accessTokenSecret) val sparkConf = new SparkConf().setAppName('twitterSentiment').setMaster('local[2]') val ssc = new Streaming Context val stream = TwitterUtils.createStream(ssc, None, filters) //Input DStream transformation using flatMap val tags = stream.flatMap { status =>Récupérer le texte des hashtags} // Transformation RDD en utilisant sortBy, puis mapper la fonction tags.countByValue () .foreachRDD {rdd => val now = Obtenir l'heure actuelle de chaque Tweet rdd .sortBy (_._ 2) .map (x => (x, now)) // Enregistrement de notre sortie dans ~ / twitter / directory .saveAsTextFile (s '~ / twitter / $ now')} // Transformation DStream en utilisant les fonctions de filtrage et de carte val tweets = stream.filter {t => balises val = t. Fractionner sur les espaces .filter (_. StartsWith ('#')). Convertir en minuscules tags.exists {x => true}} val data = tweets.map {status => val sentiment = SentimentAnalysisUtils.detectSentiment (status.getText) val tagss = status.getHashtagEntities.map (_. GetText.toLowerCase) (status.getText, sentiment.toString, tagss.toString ())} data.print () // Sauvegarde de notre sortie à ~ / avec des noms de fichiers commençant comme twitters data.saveAsTextFiles ('~ / twitters', '20000') ssc. start () ssc.awaitTermination ()}}

Résultats:

Les résultats suivants sont affichés dans l'EDI Eclipse lors de l'exécution du programme Twitter Sentiment Streaming.

Figure: Sortie d'analyse des sentiments dans l'IDE Eclipse

Comme nous pouvons le voir sur la capture d'écran, tous les tweets sont classés en positifs, neutres et négatifs en fonction du sentiment du contenu des tweets.

La sortie des Sentiments des Tweets est stockée dans des dossiers et des fichiers en fonction de l'heure à laquelle ils ont été créés. Cette sortie peut être stockée sur le système de fichiers local ou HDFS si nécessaire. Le répertoire de sortie ressemble à ceci:

Figure: Dossiers de sortie dans notre dossier de projet «twitter»

Ici, à l'intérieur du répertoire Twitter, nous pouvons trouver les noms d'utilisateur des utilisateurs de Twitter ainsi que l'horodatage de chaque tweet, comme indiqué ci-dessous:

Figure: Fichier de sortie contenant les noms d'utilisateur Twitter avec horodatage

Maintenant que nous avons les noms d'utilisateur et l'horodatage Twitter, regardons les Sentiments et les tweets stockés dans le répertoire principal. Ici, chaque tweet est suivi de l'émotion sentimentale. Ce sentiment qui est stocké est ensuite utilisé pour analyser une vaste multitude d'informations par les entreprises.

Figure: Fichier de sortie contenant des tweets avec des sentiments

Modification du code:

Maintenant, modifions un peu notre code pour obtenir des sentiments pour des hashtags spécifiques (sujets). Actuellement, Donald Trump, le président des États-Unis, est à la mode dans les canaux d'information et les médias sociaux en ligne. Examinons les sentiments associés au mot-clé ' Atout «.

Figure: Analyse des sentiments sur les tweets avec le mot-clé 'Trump'

Aller de l'avant:

Comme nous l'avons vu dans notre démonstration d'analyse des sentiments, nous pouvons extraire des sentiments sur des sujets particuliers, tout comme nous l'avons fait pour «Trump». De même, Sentiment Analytics peut être utilisé dans la gestion de crise, l'ajustement de services et le marketing cible par des entreprises du monde entier.

Les entreprises utilisant Spark Streaming pour l'analyse des sentiments ont appliqué la même approche pour atteindre les objectifs suivants:

  1. Améliorer l'expérience client
  2. Gagner un avantage concurrentiel
  3. Gagner de l'intelligence d'affaires
  4. Revitaliser une marque perdue

Avec cela, nous sommes arrivés à la fin de cette Tutoriel Spark Streaming Blog. À présent, vous devez avoir acquis une bonne compréhension de ce qu'est Spark Streaming. Le cas d'utilisation de Twitter Sentiment Analysis vous donnera la confiance nécessaire pour travailler sur tous les projets futurs que vous rencontrerez dans Spark Streaming et Apache Spark. La pratique est la clé pour maîtriser n'importe quel sujet et j'espère que ce blog vous a suffisamment intéressé pour approfondir Apache Spark.

Nous vous recommandons pour commencer le didacticiel Spark Streaming YouTube d'Edureka:

définir le chemin java dans Windows

Spark Streaming | Exemple d'analyse des sentiments Twitter | Edureka

Cette série de vidéos sur le didacticiel Spark fournit un aperçu complet des composants ainsi que des cas d'utilisation réels tels que Analyse des sentiments sur Twitter , Analyse des prévisions de jeu NBA , Système de détection de tremblement de terre , Analyse des données de vol et Systèmes de recommandation de films . Nous avons personnellement conçu les cas d'utilisation afin de fournir une expertise complète à toute personne exécutant le code.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires et nous vous répondrons dans les plus brefs délais. Si vous souhaitez apprendre Spark et construire une carrière dans le domaine de Spark et développer une expertise pour effectuer un traitement de données à grande échelle à l'aide de RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​et Scala avec des cas d'utilisation de la vie réelle, consultez notre interactif, en direct en ligne Ici, qui vient avec un support 24 * 7 pour vous guider tout au long de votre période d'apprentissage.