Tutorial de transmissió Spark: anàlisi de sentiments mitjançant Apache Spark

Aquest bloc de Spark Streaming us presentarà Spark Streaming, les seves característiques i components. Inclou un projecte d’Anàlisi de sentiments mitjançant Twitter.

Spark Streaming és una extensió de l'API bàsica Spark que permet el processament de fluxos de dades en viu escalables, de gran rendiment i tolerants a fallades. Spark Streaming es pot utilitzar per transmetre dades en directe i el processament es pot fer en temps real. La creixent base d’usuaris de Spark Streaming està formada per noms coneguts com Uber, Netflix i Pinterest.



Pel que fa a l’anàlisi de dades en temps real, Spark Streaming proporciona una plataforma única per ingerir dades per a un processament ràpid i directe demostra la vostra habilitat en el mateix.A través d’aquest bloc, us presentaré aquest nou i emocionant domini de Spark Streaming i passarem un cas d’ús complet, Anàlisi de sentiments de Twitter mitjançant Spark Streaming.



A continuació es detallen els temes que es tractaran en aquest bloc:

  1. Què és el streaming?
  2. Per què Spark Streaming?
  3. Visió general de Spark Streaming
  4. Funcions de transmissió Spark
  5. Fonaments de Spark Streaming
    5.1 Context de transmissió
    5.2 DStream
    5.3 Memòria cau / persistència
    5.4 Acumuladors, variables d’emissió i punts de control
  6. Cas d’ús: anàlisi de sentiments de Twitter

Què és el streaming?

El flux de dades és una tècnica per transferir dades de manera que es pugui processar com un flux continu i continu. Les tecnologies de transmissió són cada vegada més importants amb el creixement d'Internet.



Què és el streaming - Spark Streaming - EdurekaFigura: Què és el streaming?

Per què Spark Streaming?

Podem utilitzar Spark Streaming per transmetre dades en temps real de diverses fonts com Twitter, Borsa i Sistemes Geogràfics i realitzar anàlisis potents per ajudar les empreses.

Figura: Per què Spark Streaming?



Visió general de Spark Streaming

Spark Streaming s’utilitza per processar dades de transmissió en temps real. És una addició útil a l'API principal Spark. Spark Streaming permet un processament de flux de dades en temps real i tolerant a fallades.

Figura: Reproduccions a Spark Streaming

La unitat de flux fonamental és DStreamque bàsicament és una sèrie de RDD per processar les dades en temps real.

Funcions de transmissió Spark

  1. Escala: Spark Streaming pot escalar fàcilment a centenars de nodes.
  2. Velocitat: És unpica una baixa latència.
  3. Falta de tolerància: Spark té la capacitat d’erecuperar-se eficaçment dels fracassos.
  4. Integració: Spark s’integra amb el processament per lots i en temps real.
  5. Anàlisi empresarial: Spark Streaming és uper fer un seguiment del comportament dels clients que es pot utilitzar en l'anàlisi empresarial.

Flux de treball Spark Streaming

El flux de treball de Spark Streaming té quatre etapes d'alt nivell. El primer és transmetre dades de diverses fonts. Aquestes fonts poden ser fonts de dades en streaming com Akka, Kafka, Flume, AWS o Parquet per a una transmissió en temps real. El segon tipus de fonts inclou HBase, MySQL, PostgreSQL, Elastic Search, Mongo DB i Cassandra per a la transmissió estàtica / per lots. Un cop això passi, Spark es pot utilitzar per realitzar l'aprenentatge automàtic de les dades mitjançant la seva API MLlib. A més, Spark SQL s’utilitza per realitzar altres operacions sobre aquestes dades. Finalment, la sortida de transmissió es pot emmagatzemar en diversos sistemes d’emmagatzematge de dades com HBase, Cassandra, MemSQL, Kafka, Elastic Search, HDFS i el sistema de fitxers local.

Figura: Visió general de Spark Streaming

Fonaments de Spark Streaming

  1. Context de transmissió
  2. DStream
  3. Memòria cau
  4. Acumuladors, variables d’emissió i punts de control

Context de transmissió

Context de transmissió consumeix un flux de dades a Spark. Registra un fitxer Entrada DStream produir un Receptor objecte. És el principal punt d'entrada per a la funcionalitat Spark. Spark proporciona una sèrie d’implementacions predeterminades de fonts com Twitter, Akka Actor i ZeroMQ accessibles des del context.

Es pot crear un objecte StreamingContext a partir d’un objecte SparkContext. Un SparkContext representa la connexió a un clúster Spark i es pot utilitzar per crear RDD, acumuladors i variables de difusió en aquest clúster.

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

DStream

Corrent discretitzat (DStream) és l’abstracció bàsica proporcionada per Spark Streaming. És un flux continu de dades. Es rep des d’una font de dades o un flux de dades processat generat mitjançant la transformació del flux d’entrada.

Figura: Extracció de paraules d'un DStream d'entrada

Internament, un DStream està representat per una sèrie contínua de RDD i cada RDD conté dades d'un determinat interval.

Entrada DStreams: Entrada DStreams són DStreams que representen el flux de dades d'entrada rebudes de fonts de transmissió.

Figura: El receptor envia dades a l’entrada DStream on cada lot conté RDD

Cada entrada DStream s’associa a un objecte receptor que rep les dades d’una font i les emmagatzema a la memòria de Spark per al seu processament.

Transformacions a DStreams:

Qualsevol operació aplicada a un DStream es tradueix en operacions als RDD subjacents. Les transformacions permeten modificar les dades del DStream d'entrada de manera similar als RDD. DStreams admet moltes de les transformacions disponibles en els RDD Spark normals.

Figura: Transformacions de DStream

Les següents són algunes de les transformacions populars a DStreams:

mapa ( func )mapa ( func ) retorna un nou DStream passant cada element del DStream d'origen a través d'una funció func.
mapa pla ( func )mapa pla ( func ) és similar al mapa ( func ), però cada element d'entrada es pot assignar a 0 o més elements de sortida i retorna un DStream nou passant cada element d'origen a través d'una funció func.
filtre ( func )filtre ( func ) retorna un nou DStream seleccionant només els registres de la font DStream en què func torna cert.
reduir ( func )reduir ( func ) retorna un nou DStream de RDD d'un element agregant els elements de cada RDD del DStream d'origen mitjançant una funció func .
agrupar per( func )agrupar per( func ) retorna el nou RDD que bàsicament es compon amb una clau i la llista corresponent d’elements d’aquest grup.

DStreams de sortida:

què és el marc del seleni

Les operacions de sortida permeten enviar les dades de DStream a sistemes externs com ara bases de dades o sistemes de fitxers. Les operacions de sortida activen l'execució real de totes les transformacions DStream.

Figura: Operacions de sortida a DStreams

Memòria cau

DStreams permet als desenvolupadors emmagatzemar a la memòria cau / persistir les dades del flux. Això és útil si les dades del DStream es calcularan diverses vegades. Això es pot fer mitjançant el fitxer persistir () mètode en un DStream.

Figura: Memòria cau en 2 nodes

Per als fluxos d’entrada que reben dades per la xarxa (com ara Kafka, Flume, Sockets, etc.),el nivell de persistència per defecte està configurat per replicar les dades a dos nodes per obtenir una tolerància a fallades.

Acumuladors, variables d’emissió i punts de control

Acumuladors: Acumuladors són variables que només s’afegeixen mitjançant una operació associativa i commutativa. S'utilitzen per implementar comptadors o sumes. El seguiment dels acumuladors a la IU pot ser útil per entendre el progrés de les etapes en curs. Spark admet nativament acumuladors numèrics. Podem crear acumuladors amb nom o sense nom.

Variables d'emissió: Variables de difusió permeteu al programador mantenir una variable de només lectura emmagatzemada a la memòria cau a cada màquina en lloc d'enviar-ne una còpia amb tasques. Es poden utilitzar per donar a cada node una còpia d’un gran conjunt de dades d’entrada d’una manera eficient. Spark també intenta distribuir variables d'emissió mitjançant algoritmes d'emissió eficients per reduir el cost de la comunicació.

Punts de control: Punts de control són similars als punts de control dels jocs. El fan funcionar 24/7 i el fan resistent a fallades no relacionades amb la lògica de l’aplicació.


Figura:
Característiques dels punts de control

Cas d’ús: anàlisi de sentiments de Twitter

Ara que hem entès els conceptes bàsics de Spark Streaming, resolem un problema de la vida real mitjançant Spark Streaming.

Plantejament del problema: Dissenyar un sistema d’anàlisi de sentiments de Twitter on omplim sentiments en temps real per a la gestió de crisis, l’ajust de serveis i el màrqueting objectiu.

Aplicacions de l'anàlisi del sentiment:

  • Prediu l'èxit d'una pel·lícula
  • Preveure l'èxit de la campanya política
  • Decidiu si voleu invertir en una empresa determinada
  • Publicitat orientada
  • Reviseu els productes i serveis

Implementació de Spark Streaming:

Trobeu el pseudocodi a continuació:

// Importeu els paquets necessaris al programa Spark import org.apache.spark.streaming. {Seconds, StreamingContext} import org.apache.spark.SparkContext._ ... import java.io.File object twitterSentiment {def main (args : Matriu [Cadena]) {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 =>Obtingueu text des de les etiquetes d’etiqueta} // Transformació RDD mitjançant sortBy i després assigneu funcions tags.countByValue () .foreachRDD {rdd => val now = Obteniu l’hora actual de cada Tweet rdd. (x, ara)) // Desar la nostra sortida a ~ / twitter / directory .saveAsTextFile (s '~ / twitter / $ now')} // Transformació de DStream mitjançant funcions de filtre i mapa val tweets = stream.filter {t => val tags = t. Dividir en espais .filter (_. StartsWith ('#')). Converteix en minúscules 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 () // Desar la nostra sortida a ~ / amb noms de fitxer que comencen com twitters data.saveAsTextFiles ('~ / twitters', '20000') ssc. start () ssc.awaitTermination ()}}

Resultats:

A continuació es mostren els resultats que es mostren a l'IDE Eclipse mentre s'executa el programa Twitter Sentiment Streaming.

Figura: Sortida d’anàlisi de sentiments en IDE Eclipse

Com podem veure a la captura de pantalla, tots els tuits es classifiquen en Positiu, Neutre i Negatiu segons el sentiment del contingut dels tuits.

La sortida dels sentiments dels tuits s’emmagatzema en carpetes i fitxers segons el moment en què es van crear. Aquesta sortida es pot emmagatzemar al sistema de fitxers local o HDFS si cal. El directori de sortida té aquest aspecte:

Figura: Carpetes de sortida dins de la nostra carpeta de projectes ‘twitter’

Aquí, dins del directori de twitter, podem trobar els noms d’usuari dels usuaris de Twitter juntament amb la marca de temps de cada tweet, tal com es mostra a continuació:

Figura: Fitxer de sortida que conté noms d’usuari de Twitter amb marca de temps

Ara que tenim els noms d’usuari i la marca de temps de Twitter, vegem els sentiments i els tweets emmagatzemats al directori principal. Aquí, cada tuit va seguit de l’emoció sentimental. Aquest sentiment que s’emmagatzema s’utilitza a més per analitzar una gran multitud d’informacions de les empreses.

Figura: Fitxer de sortida que conté tuits amb sentiments

Codi de modificació:

Ara, anem a modificar una mica el nostre codi per obtenir opinions sobre hashtags (temes) específics. Actualment, Donald Trump, el president dels Estats Units, està tendint a través de canals de notícies i xarxes socials en línia. Vegem els sentiments associats a la paraula clau ' Trump '.

Figura: Realització d’anàlisis de sentiments en tuits amb la paraula clau ‘Trump’

exemple de sobrecàrrega i substitució de mètodes a Java

Avançant:

Com hem vist a la nostra demostració d’Anàlisi de sentiments, podem extreure sentiments de temes particulars tal com vam fer per a ‘Trump’. De la mateixa manera, Sentiment Analytics es pot utilitzar en la gestió de crisis, l’ajust de serveis i el màrqueting objectiu per empreses de tot el món.

Les empreses que utilitzen Spark Streaming per a l'anàlisi de sentiments han aplicat el mateix enfocament per aconseguir el següent:

  1. Millorar l’experiència del client
  2. Obtenir avantatges competitius
  3. Obtenir intel·ligència empresarial
  4. Revitalitzar una marca perdedora

Amb això, hem arribat al final Tutorial de transmissió Spark bloc. A hores d’ara, heu d’haver adquirit una bona comprensió del que és Spark Streaming. El cas d’ús de Twitter Sentiment Analysis us proporcionarà la confiança necessària per treballar en qualsevol projecte futur que pugueu trobar a Spark Streaming i Apache Spark. La pràctica és la clau per dominar qualsevol tema i espero que aquest blog us hagi creat prou interès per explorar més sobre Apache Spark.

Per començar, us recomanem el següent tutorial de YouTube Spark Streaming d'Edureka:

Spark Streaming | Exemple d'anàlisi de sentiments de Twitter | Edureka

Aquesta sèrie de vídeo de Spark Tutorial proporciona un fons complet sobre els components juntament amb casos d'ús de la vida real, com ara Anàlisi de sentiments de Twitter , Anàlisi de prediccions del joc NBA , Sistema de detecció de terratrèmols , Anàlisi de dades de vol i Sistemes de recomanació de pel·lícules . Hem dissenyat personalment els casos d’ús per proporcionar una experiència completa a qualsevol que executi el codi.

Tens alguna pregunta? Si us plau, mencioneu-lo a la secció de comentaris i ens posarem en contacte amb vosaltres al més aviat possible. Si voleu aprendre Spark i construir una carrera en el domini de Spark i adquirir experiència per realitzar processos de dades a gran escala mitjançant RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​i Scala amb casos d’ús de la vida real, consulteu el nostre en línia aquí, que inclou suport 24 * 7 per orientar-vos durant tot el vostre període d'aprenentatge.