Spark Streaming Tutorial - Stimmungsanalyse mit Apache Spark

In diesem Spark Streaming-Blog lernen Sie Spark Streaming, seine Funktionen und Komponenten kennen. Es enthält ein Projekt zur Stimmungsanalyse über Twitter.

Spark Streaming ist eine Erweiterung der zentralen Spark-API, die eine skalierbare, fehlertolerante Stream-Verarbeitung von Live-Datenströmen mit hohem Durchsatz ermöglicht. Spark Streaming kann zum Streamen von Live-Daten verwendet werden und die Verarbeitung kann in Echtzeit erfolgen. Die stetig wachsende Nutzerbasis von Spark Streaming besteht aus bekannten Namen wie Uber, Netflix und Pinterest.

Wenn es um Echtzeit-Datenanalyse geht, bietet Spark Streaming eine einzige Plattform für die Erfassung von Daten für eine schnelle und Live-Verarbeitung beweist Ihre Fähigkeiten in der gleichen.In diesem Blog werde ich Ihnen diese neue aufregende Domäne von Spark Streaming vorstellen und einen vollständigen Anwendungsfall durchgehen. Twitter-Stimmungsanalyse mit Spark Streaming.



Die folgenden Themen werden in diesem Blog behandelt:

  1. Was ist Streaming?
  2. Warum Spark Streaming?
  3. Spark Streaming Übersicht
  4. Spark-Streaming-Funktionen
  5. Grundlagen des Spark-Streamings
    5.1 Streaming-Kontext
    5.2 DStream
    5.3 Caching / Persistenz
    5.4 Akkumulatoren, Broadcast-Variablen und Checkpoints
  6. Anwendungsfall - Twitter-Stimmungsanalyse

Was ist Streaming?

Daten-Streaming ist eine Technik zum Übertragen von Daten, damit diese als stetiger und kontinuierlicher Stream verarbeitet werden können. Streaming-Technologien werden mit dem Wachstum des Internets immer wichtiger.

Was ist Streaming - Spark Streaming - EdurekaZahl: Was ist Streaming?

Warum Spark Streaming?

Mit Spark Streaming können wir Echtzeitdaten aus verschiedenen Quellen wie Twitter, Stock Market und Geographical Systems streamen und leistungsstarke Analysen durchführen, um Unternehmen zu unterstützen.

Zahl: Warum Spark Streaming?

Spark Streaming Übersicht

Spark Streaming wird zur Verarbeitung von Echtzeit-Streaming-Daten verwendet. Es ist eine nützliche Ergänzung zur zentralen Spark-API. Spark Streaming ermöglicht die Verarbeitung von Live-Datenströmen mit hohem Durchsatz und fehlertoleranten Streams.

Zahl: Streams im Spark-Streaming

Die grundlegende Stream-Einheit ist DStreamDies ist im Grunde eine Reihe von RDDs zur Verarbeitung der Echtzeitdaten.

Spark-Streaming-Funktionen

  1. Skalierung: Spark Streaming kann problemlos auf Hunderte von Knoten skaliert werden.
  2. Geschwindigkeit: Es achieves geringe Latenz.
  3. Fehlertoleranz: Spark hat die Fähigkeit zu esich von Fehlern effizient erholen.
  4. Integration: Spark lässt sich in die Stapel- und Echtzeitverarbeitung integrieren.
  5. Wirtschaftsanalyse: Spark Streaming ist used, um das Verhalten von Kunden zu verfolgen, das in der Geschäftsanalyse verwendet werden kann.

Spark-Streaming-Workflow

Der Spark Streaming-Workflow besteht aus vier Phasen auf hoher Ebene. Die erste besteht darin, Daten aus verschiedenen Quellen zu streamen. Diese Quellen können Streaming-Datenquellen wie Akka, Kafka, Flume, AWS oder Parkett für Echtzeit-Streaming sein. Die zweite Art von Quellen umfasst HBase, MySQL, PostgreSQL, Elastic Search, Mongo DB und Cassandra für statisches / Batch-Streaming. In diesem Fall kann Spark verwendet werden, um über die MLlib-API maschinelles Lernen für die Daten durchzuführen. Außerdem wird Spark SQL verwendet, um weitere Operationen an diesen Daten durchzuführen. Schließlich kann die Streaming-Ausgabe in verschiedenen Datenspeichersystemen wie HBase, Cassandra, MemSQL, Kafka, Elastic Search, HDFS und lokalem Dateisystem gespeichert werden.

Zahl: Übersicht über Spark Streaming

Grundlagen des Spark-Streamings

  1. Streaming-Kontext
  2. DStream
  3. Caching
  4. Akkumulatoren, Broadcast-Variablen und Checkpoints

Streaming-Kontext

Streaming-Kontext verbraucht einen Datenstrom in Spark. Es registriert eine DStream eingeben a Empfänger Objekt. Es ist der Haupteinstiegspunkt für die Spark-Funktionalität. Spark bietet eine Reihe von Standardimplementierungen von Quellen wie Twitter, Akka Actor und ZeroMQ, auf die über den Kontext zugegriffen werden kann.

Ein StreamingContext-Objekt kann aus einem SparkContext-Objekt erstellt werden. Ein SparkContext stellt die Verbindung zu einem Spark-Cluster dar und kann zum Erstellen von RDDs, Akkumulatoren und Broadcast-Variablen in diesem Cluster verwendet werden.

Sortieralgorithmus zusammenführen c ++
import org.apache.spark._ import org.apache.spark.streaming._ var ssc = neuer StreamingContext (sc, Sekunden (1))

DStream

Diskretisierter Stream (DStream) ist die grundlegende Abstraktion von Spark Streaming. Es ist ein kontinuierlicher Datenstrom. Es wird von einer Datenquelle oder einem verarbeiteten Datenstrom empfangen, der durch Transformieren des Eingabestreams erzeugt wird.

Zahl: Extrahieren von Wörtern aus einem Eingangs-DStream

Intern wird ein DStream durch eine fortlaufende Reihe von RDDs dargestellt, und jede RDD enthält Daten aus einem bestimmten Intervall.

DStreams eingeben: DStreams eingeben sind DStreams, die den Strom von Eingabedaten darstellen, die von Streaming-Quellen empfangen werden.

Zahl: Der Empfänger sendet Daten an den Eingangs-DStream, wo jeder Stapel RDDs enthält

Jeder Eingangs-DStream ist einem Empfängerobjekt zugeordnet, das die Daten von einer Quelle empfängt und zur Verarbeitung im Spark-Speicher speichert.

Transformationen auf DStreams:

Jede auf einen DStream angewendete Operation wird in Operationen auf den zugrunde liegenden RDDs übersetzt. Durch Transformationen können die Daten vom Eingangs-DStream ähnlich wie bei RDDs geändert werden. DStreams unterstützen viele der auf normalen Spark-RDDs verfügbaren Transformationen.

Zahl: DStream-Transformationen

Im Folgenden sind einige der beliebtesten Transformationen für DStreams aufgeführt:

Karte( func )Karte( func ) gibt einen neuen DStream zurück, indem jedes Element des Quell-DStreams durch eine Funktion geleitet wird func.
flatMap ( func )flatMap ( func ) ähnelt map ( func ), aber jedes Eingabeelement kann 0 oder mehr Ausgabeelementen zugeordnet werden und gibt einen neuen DStream zurück, indem jedes Quellelement durch eine Funktion geleitet wird func.
Filter( func )Filter( func ) gibt einen neuen DStream zurück, indem nur die Datensätze des Quell-DStreams ausgewählt werden, auf dem func gibt true zurück.
reduzieren( func )reduzieren( func ) gibt einen neuen DStream von Einzelelement-RDDs zurück, indem die Elemente in jedem RDD des Quell-DStreams mithilfe einer Funktion aggregiert werden func .
gruppiere nach( func )gruppiere nach( func ) gibt die neue RDD zurück, die im Wesentlichen aus einem Schlüssel und einer entsprechenden Liste von Elementen dieser Gruppe besteht.

DStreams ausgeben:

Durch Ausgabevorgänge können die Daten von DStream an externe Systeme wie Datenbanken oder Dateisysteme übertragen werden. Ausgabeoperationen lösen die tatsächliche Ausführung aller DStream-Transformationen aus.

Zahl: Ausgabevorgänge auf DStreams

Caching

DStreams Entwicklern ermöglichen, die Daten des Streams im Speicher zwischenzuspeichern / beizubehalten. Dies ist nützlich, wenn die Daten im DStream mehrmals berechnet werden. Dies kann mit dem erfolgen fortdauern() Methode auf einem DStream.

Zahl: Zwischenspeichern in 2 Knoten

wie man Array PHP druckt

Für Eingabestreams, die Daten über das Netzwerk empfangen (z. B. Kafka, Flume, Sockets usw.),Die Standardpersistenzstufe ist so eingestellt, dass die Daten aus Gründen der Fehlertoleranz auf zwei Knoten repliziert werden.

Akkumulatoren, Broadcast-Variablen und Checkpoints

Akkus: Akkus sind Variablen, die nur durch eine assoziative und kommutative Operation hinzugefügt werden. Sie werden verwendet, um Zähler oder Summen zu implementieren. Das Verfolgen von Akkumulatoren in der Benutzeroberfläche kann hilfreich sein, um den Fortschritt laufender Phasen zu verstehen. Spark unterstützt nativ numerische Akkumulatoren. Wir können benannte oder unbenannte Akkumulatoren erstellen.

Broadcast-Variablen: Broadcast-Variablen Ermöglichen Sie dem Programmierer, eine schreibgeschützte Variable auf jedem Computer zwischenzuspeichern, anstatt eine Kopie davon mit Aufgaben zu versenden. Sie können verwendet werden, um jedem Knoten auf effiziente Weise eine Kopie eines großen Eingabedatensatzes zu geben. Spark versucht auch, Broadcast-Variablen mithilfe effizienter Broadcast-Algorithmen zu verteilen, um die Kommunikationskosten zu senken.

Checkpoints: Checkpoints sind ähnlich wie Checkpoints beim Spielen. Sie sorgen dafür, dass es rund um die Uhr ausgeführt wird, und machen es widerstandsfähig gegen Fehler, die nicht mit der Anwendungslogik zusammenhängen.


Zahl:
Merkmale von Checkpoints

Anwendungsfall - Twitter-Stimmungsanalyse

Nachdem wir die Kernkonzepte von Spark Streaming verstanden haben, können wir mit Spark Streaming ein reales Problem lösen.

Problemstellung: Entwicklung eines Twitter-Stimmungsanalysesystems, in dem Echtzeitstimmungen für Krisenmanagement, Service-Anpassung und Zielmarketing erfasst werden.

Anwendungen der Stimmungsanalyse:

  • Prognostizieren Sie den Erfolg eines Films
  • Prognostizieren Sie den Erfolg politischer Kampagnen
  • Entscheiden Sie, ob Sie in ein bestimmtes Unternehmen investieren möchten
  • Gezielte Werbung
  • Überprüfen Sie Produkte und Dienstleistungen

Spark-Streaming-Implementierung:

Finden Sie den Pseudocode unten:

// Importiere die notwendigen Pakete in das Spark Programm import org.apache.spark.streaming. {Seconds, StreamingContext} import org.apache.spark.SparkContext._ ... importiere java.io.File Objekt 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 =>Abrufen von Text aus den Hashtags} // RDD-Umwandlung mit sortBy und Zuordnen der Funktion tags.countByValue () .foreachRDD {rdd => val now = Aktuelle Zeit für jeden Tweet abrufen rdd .sortBy (_._ 2) .map (x => (x, now)) // Speichern unserer Ausgabe im Verzeichnis ~ / twitter / .saveAsTextFile (s '~ / twitter / $ now')} // DStream-Transformation mit Filter- und Map-Funktionen val tweets = stream.filter {t => val tags = t. Split On Spaces .filter (_. StartsWith ('#')). In Kleinbuchstaben konvertieren 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 () // Speichern unserer Ausgabe bei ~ / mit Dateinamen, die wie twitters beginnen data.saveAsTextFiles ('~ / twitters', '20000') ssc. start () ssc.awaitTermination ()}}

Ergebnisse:

Die folgenden Ergebnisse werden in der Eclipse-IDE angezeigt, während das Twitter Sentiment Streaming-Programm ausgeführt wird.

Zahl: Ausgabe der Stimmungsanalyse in der Eclipse-IDE

Wie wir im Screenshot sehen können, werden alle Tweets entsprechend der Stimmung des Inhalts der Tweets in Positiv, Neutral und Negativ eingeteilt.

Die Ausgabe der Sentiments of the Tweets wird entsprechend ihrer Erstellungszeit in Ordnern und Dateien gespeichert. Diese Ausgabe kann bei Bedarf im lokalen Dateisystem oder in HDFS gespeichert werden. Das Ausgabeverzeichnis sieht folgendermaßen aus:

Zahl: Ausgabeordner in unserem Projektordner 'Twitter'

Hier im Twitter-Verzeichnis finden wir die Benutzernamen der Twitter-Benutzer sowie den Zeitstempel für jeden Tweet, wie unten gezeigt:

Zahl: Ausgabedatei mit Twitter-Benutzernamen mit Zeitstempel

Nachdem wir die Twitter-Benutzernamen und den Zeitstempel erhalten haben, schauen wir uns die im Hauptverzeichnis gespeicherten Gefühle und Tweets an. Hier folgt auf jeden Tweet die Gefühlsemotion. Dieses gespeicherte Gefühl wird weiter verwendet, um eine Vielzahl von Erkenntnissen von Unternehmen zu analysieren.

Zahl: Ausgabedatei mit Tweets mit Stimmungen

Code optimieren:

Was ist ein Blockchain-Entwickler?

Lassen Sie uns nun unseren Code ein wenig ändern, um Gefühle für bestimmte Hashtags (Themen) zu erhalten. Derzeit ist Donald Trump, der Präsident der Vereinigten Staaten, im Trend über Nachrichtensender und soziale Online-Medien. Schauen wir uns die Gefühle an, die mit dem Schlüsselwort „ Trumpf „.

Zahl: Durchführen einer Stimmungsanalyse für Tweets mit dem Schlüsselwort 'Trump'

Vorankommen:

Wie wir aus unserer Demonstration zur Stimmungsanalyse gesehen haben, können wir Gefühle zu bestimmten Themen extrahieren, genau wie wir es für „Trump“ getan haben. In ähnlicher Weise kann Sentiment Analytics von Unternehmen auf der ganzen Welt für das Krisenmanagement, die Anpassung von Diensten und das gezielte Marketing eingesetzt werden.

Unternehmen, die Spark Streaming für die Stimmungsanalyse verwenden, haben denselben Ansatz angewendet, um Folgendes zu erreichen:

  1. Verbesserung des Kundenerlebnisses
  2. Wettbewerbsvorteil gewinnen
  3. Business Intelligence gewinnen
  4. Wiederbelebung einer unterlegenen Marke

Damit sind wir am Ende angelangt Spark Streaming Tutorial Blog. Inzwischen müssen Sie ein fundiertes Verständnis dafür erworben haben, was Spark Streaming ist. Der Anwendungsfall Twitter Sentiment Analysis gibt Ihnen das erforderliche Vertrauen, um an zukünftigen Projekten in Spark Streaming und Apache Spark arbeiten zu können. Übung ist der Schlüssel, um jedes Thema zu beherrschen, und ich hoffe, dieser Blog hat genug Interesse an Ihnen geweckt, um Apache Spark weiter zu erforschen.

Wir empfehlen zunächst das folgende Spark Streaming YouTube Tutorial von Edureka:

Spark Streaming | Beispiel für eine Twitter-Stimmungsanalyse | Edureka

Diese Videoserie zum Spark-Tutorial bietet einen vollständigen Hintergrund zu den Komponenten sowie reale Anwendungsfälle wie z Twitter-Stimmungsanalyse , Analyse der NBA-Spielvorhersage , Erdbebenerkennungssystem , Flugdatenanalyse und Filmempfehlungssysteme . Wir haben die Anwendungsfälle persönlich entworfen, um jedem, der den Code ausführt, ein umfassendes Fachwissen zu bieten.

Hast du eine Frage an uns? Bitte erwähnen Sie es in den Kommentaren und wir werden uns frühestens bei Ihnen melden. Wenn Sie Spark lernen und eine Karriere im Bereich Spark aufbauen und Fachwissen für die Durchführung einer umfangreichen Datenverarbeitung mit RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​und Scala mit realen Anwendungsfällen aufbauen möchten, schauen Sie sich unsere interaktiven Live-Anwendungen an online Hier, Dazu gehört eine 24 * 7-Unterstützung, die Sie während Ihrer gesamten Lernphase begleitet.