Spark Streaming Tutorial - Sentiment Analysis Using Apache Spark



Denne Spark Streaming-bloggen vil introdusere deg for Spark Streaming, dens funksjoner og komponenter. Det inkluderer et Sentiment Analysis-prosjekt ved hjelp av Twitter.

Spark Streaming er en utvidelse av kjernen Spark API som muliggjør skalerbar, høy gjennomstrømning, feiltolerant strømbehandling av live datastrømmer. Spark Streaming kan brukes til å streame live data og behandling kan skje i sanntid. Spark Streamings stadig voksende brukerbase består av husstandsnavn som Uber, Netflix og Pinterest.

Når det gjelder sanntidsdataanalyse, gir Spark Streaming en enkelt plattform for å innta data for rask og direkte behandling og beviser din dyktighet i det samme.Gjennom denne bloggen vil jeg introdusere deg for dette nye spennende domenet til Spark Streaming, og vi vil gå gjennom en komplett brukssak, Twitter Sentiment Analyse ved hjelp av Spark Streaming.





Følgende er temaene som vil bli dekket i denne bloggen:

  1. Hva er streaming?
  2. Hvorfor Spark Streaming?
  3. Spark Streaming Oversikt
  4. Funksjoner for gniststrømming
  5. Grunnleggende om Spark Streaming
    5.1 Streaming Context
    5.2 DStream
    5.3 Cache / utholdenhet
    5.4 Akkumulatorer, kringkastingsvariabler og sjekkpunkter
  6. Use Case - Twitter Sentiment Analysis

Hva er streaming?

Datastreaming er en teknikk for overføring av data slik at den kan behandles som en jevn og kontinuerlig strøm. Strømmeteknologier blir stadig viktigere med veksten på Internett.



Hva er streaming - Spark Streaming - EdurekaFigur: Hva er streaming?

Hvorfor Spark Streaming?

Vi kan bruke Spark Streaming til å streame sanntidsdata fra forskjellige kilder som Twitter, aksjemarked og geografiske systemer og utføre kraftige analyser for å hjelpe bedrifter.

Figur: Hvorfor Spark Streaming?



Spark Streaming Oversikt

Spark Streaming brukes til behandling av strømmedata i sanntid. Det er et nyttig tillegg til kjernen Spark API. Spark Streaming muliggjør høy gjennomstrømning og feiltolerant strømbehandling av live datastrømmer.

Figur: Strømmer i Spark Streaming

Den grunnleggende strømmenheten er DStreamsom i utgangspunktet er en serie RDDer for å behandle sanntidsdata.

Funksjoner for gniststrømming

  1. Skalering: Spark Streaming kan enkelt skaleres til hundrevis av noder.
  2. Hastighet: Det afår lav latens.
  3. Feiltoleranse: Spark har evnen til å egjenopprette feil etter feil.
  4. Integrering: Gnist integreres med batch- og sanntidsbehandling.
  5. Forretningsanalyse: Spark Streaming er used for å spore oppførselen til kunder som kan brukes i forretningsanalyser.

Arbeidsflyt for gniststrøm

Spark Streaming-arbeidsflyten har fire trinn på høyt nivå. Den første er å streame data fra forskjellige kilder. Disse kildene kan streame datakilder som Akka, Kafka, Flume, AWS eller Parquet for sanntids streaming. Den andre typen kilder inkluderer HBase, MySQL, PostgreSQL, Elastic Search, Mongo DB og Cassandra for statisk / batch-streaming. Når dette skjer, kan Spark brukes til å utføre maskinlæring på dataene via MLlib API. Videre brukes Spark SQL til å utføre ytterligere operasjoner på disse dataene. Til slutt kan streaming-utdataene lagres i forskjellige datalagringssystemer som HBase, Cassandra, MemSQL, Kafka, Elastic Search, HDFS og lokalt filsystem.

Figur: Oversikt over gniststrømming

Grunnleggende om Spark Streaming

  1. Streaming Context
  2. DStream
  3. Caching
  4. Akkumulatorer, kringkastingsvariabler og sjekkpunkter

Streaming Context

Streaming Context bruker en datastrøm i Spark. Den registrerer en Inngang DStream å produsere en Mottaker gjenstand. Det er hovedinngangsstedet for Spark-funksjonalitet. Spark tilbyr en rekke standardimplementeringer av kilder som Twitter, Akka Actor og ZeroMQ som er tilgjengelige fra sammenhengen.

Et StreamingContext-objekt kan opprettes fra et SparkContext-objekt. En SparkContext representerer tilkoblingen til en Spark-klynge og kan brukes til å opprette RDD-er, akkumulatorer og kringkaste variabler på den klyngen.

importer org.apache.spark._ import org.apache.spark.streaming._ var ssc = ny StreamingContext (sc, sekunder (1))

DStream

Diskretisert strøm (DStream) er den grunnleggende abstraksjonen som leveres av Spark Streaming. Det er en kontinuerlig datastrøm. Den mottas fra en datakilde eller en behandlet datastrøm generert ved å transformere inngangsstrømmen.

Figur: Pakke ut ord fra en Input DStream

Internt er en DStream representert av en kontinuerlig serie RDDer, og hver RDD inneholder data fra et bestemt intervall.

forskjellen mellom qtp og selen

Inngang DStreams: Inngang DStreams er DStreams som representerer strømmen av inngangsdata mottatt fra streamingkilder.

Figur: Mottakeren sender data til DStream-inngangen der hver batch inneholder RDD-er

Hver inngang DStream er tilknyttet et mottakerobjekt som mottar dataene fra en kilde og lagrer dem i Sparks minne for behandling.

hvordan du bruker varsel i javascript

Transformasjoner på DStreams:

Enhver operasjon som brukes på en DStream, oversettes til operasjoner på de underliggende RDDene. Transformasjoner gjør at dataene fra inngangen DStream kan modifiseres i likhet med RDD. DStreams støtter mange av transformasjonene som er tilgjengelige på normale Spark RDDer.

Figur: DStream Transformations

Følgende er noen av de populære transformasjonene på DStreams:

kart( func )kart( func ) returnerer en ny DStream ved å sende hvert element i kilden DStream gjennom en funksjon func.
flatMap ( func )flatMap ( func ) ligner på kart ( func ) men hvert inngangselement kan tilordnes til 0 eller flere utgangselementer og returnerer en ny DStream ved å føre hvert kildeelement gjennom en funksjon func.
filter( func )filter( func ) returnerer en ny DStream ved å velge bare postene til kilden DStream der func returnerer sant.
redusere( func )redusere( func ) returnerer en ny DStream av enkeltelement RDD ved å samle elementene i hver RDD for kilden DStream ved hjelp av en funksjon func .
gruppe av( func )gruppe av( func ) returnerer den nye RDD som i utgangspunktet består av en nøkkel og tilhørende liste over elementer i den gruppen.

Utgang DStreams:

Utdataoperasjoner gjør at DStreams data kan skyves ut til eksterne systemer som databaser eller filsystemer. Utgangsoperasjoner utløser den faktiske kjøringen av alle DStream-transformasjoner.

Figur: Utgangsoperasjoner på DStreams

Caching

DStreams tillate utviklere å cache / vedvare strømens data i minnet. Dette er nyttig hvis dataene i DStream blir beregnet flere ganger. Dette kan gjøres ved hjelp av fortsette() metode på en DStream.

Figur: Caching i 2 noder

For inngangsstrømmer som mottar data over nettverket (som Kafka, Flume, Sockets, etc.),standard persistensnivå er satt til å replikere dataene til to noder for feiltoleranse.

Akkumulatorer, kringkastingsvariabler og sjekkpunkter

Akkumulatorer: Akkumulatorer er variabler som bare legges til gjennom en assosiativ og kommutativ operasjon. De brukes til å implementere tellere eller summer. Sporing av akkumulatorer i brukergrensesnittet kan være nyttig for å forstå fremdriften i løpende stadier. Spark støtter innfødte numeriske akkumulatorer. Vi kan lage navngitte eller ikke navngitte akkumulatorer.

Kringkastingsvariabler: Kringkastingsvariabler la programmereren beholde en skrivebeskyttet variabel hurtigbufret på hver maskin i stedet for å sende en kopi av den med oppgaver. De kan brukes til å gi hver node en kopi av et stort datasett på en effektiv måte. Spark prøver også å distribuere kringkastingsvariabler ved hjelp av effektive kringkastingsalgoritmer for å redusere kommunikasjonskostnadene.

Sjekkpunkter: Kontrollpunkter ligner kontrollpunkter i spill. De får den til å kjøre 24/7 og gjør den motstandsdyktig mot feil som ikke er relatert til applikasjonslogikken.


Figur:
Funksjoner av sjekkpunkter

Use Case - Twitter Sentiment Analysis

Nå som vi har forstått kjernekonseptene i Spark Streaming, la oss løse et virkelig problem ved hjelp av Spark Streaming.

Problemstilling: Å designe et Twitter Sentiment Analysis System der vi fyller sanntidssentimenter for krisehåndtering, tjenestejustering og målmarkedsføring.

Anvendelser av sentimentanalyse:

  • Forutsi suksessen til en film
  • Forutsi suksess for politisk kampanje
  • Bestem om du vil investere i et bestemt selskap
  • Målrettet annonsering
  • Gjennomgå produkter og tjenester

Implementering av gniststrømning:

Finn Pseudo-koden nedenfor:

// Importer de nødvendige pakkene til Spark Program 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 =>Få tekst fra Hashtags} // RDD-transformasjon ved hjelp av sortBy og deretter kartfunksjonstagger.countByValue () .foreachRDD {rdd => val now = Få nåværende tid for hver Tweet rdd .sortBy (_._ 2) .map (x => (x, nå)) // Lagrer utdataene våre på ~ / twitter / katalog .saveAsTextFile (s '~ / twitter / $ now')} // DStream-transformasjon ved hjelp av filter- og kartfunksjoner val tweets = stream.filter {t => val tags = t. Split On Spaces .filter (_. StartsWith ('#')). Konverter til små bokstaver. Eksisterer {x => sann}} 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 () // Lagrer utdataene våre ved ~ / med filnavn som begynner som twitters data.saveAsTextFiles ('~ / twitters', '20000') ssc. start () ssc.awaitTermination ()}}

Resultater:

Følgende er resultatene som vises i Eclipse IDE mens du kjører Twitter Sentiment Streaming-programmet.

Figur: Sentimentanalyseutgang i formørkelse IDE

Som vi kan se på skjermbildet, er alle tweets kategorisert i Positive, Neutral og Negative i henhold til følelsen av innholdet i tweets.

Utdataene fra Sentiments of the Tweets lagres i mapper og filer i henhold til tidspunktet de ble opprettet. Denne utgangen kan lagres på det lokale filsystemet eller HDFS etter behov. Utgangskatalogen ser slik ut:

Figur: Skriv ut mapper i prosjektmappen ‘twitter’

koblet listeimplementering i c

Her, inne i twitter-katalogen, kan vi finne brukernavnene til Twitter-brukerne sammen med tidsstemplet for hver tweet som vist nedenfor:

Figur: Utdatafil som inneholder Twitter-brukernavn med tidsstempel

Nå som vi har fått Twitter-brukernavn og tidsstempel, la oss se på følelser og tweets som er lagret i hovedkatalogen. Her følges hver tweet av følelsesfølelsen. Denne følelsen som er lagret, brukes videre til å analysere et stort antall innsikter fra selskaper.

Figur: Utdatafil som inneholder tweets med følelser

Tweaking Code:

La oss nå endre koden vår litt for å få følelser for spesifikke hashtags (emner). For tiden trender Donald Trump, USAs president, på tvers av nyhetskanaler og online sosiale medier. La oss se på følelsene som er knyttet til søkeordet ‘ Trump ‘.

Figur: Utfører sentimentanalyse på tweets med ‘Trump’ Keyword

Kommer fremover:

Som vi har sett fra demonstrasjonen vår om sentimentanalyse, kan vi trekke ut følelser av bestemte emner akkurat som vi gjorde for ‘Trump’. Tilsvarende kan Sentiment Analytics brukes i krisehåndtering, servicejustering og målmarkedsføring av selskaper over hele verden.

Bedrifter som bruker Spark Streaming for sentimentanalyse, har brukt samme tilnærming for å oppnå følgende:

  1. Forbedre kundeopplevelsen
  2. Få konkurransefortrinn
  3. Få forretningsinformasjon
  4. Revitalisere et tapende merke

Med dette har vi kommet til slutten av dette Spark Streaming Tutorial blogg. Nå må du ha fått en god forståelse av hva Spark Streaming er. Brukssaken til Twitter Sentiment Analysis vil gi deg den nødvendige tilliten til å jobbe med fremtidige prosjekter du støter på i Spark Streaming og Apache Spark. Øvelse er nøkkelen til å mestre ethvert emne, og jeg håper denne bloggen har skapt nok interesse for deg til å utforske videre på Apache Spark.

Vi anbefaler følgende YouTube-veiledning for gniststrømming fra Edureka til å begynne med:

Spark Streaming | Eksempel på analyse av Twitter-sentiment | Edureka

Denne videoserien på Spark Tutorial gir en komplett bakgrunn i komponentene sammen med virkelige livssaker som Twitter Sentiment Analyse , NBA Game Prediction Analysis , Jordskjelvdeteksjonssystem , Flydataanalyse og Anbefalingssystemer for film . Vi har personlig utformet brukssakene for å gi en allsidig ekspertise til alle som kjører koden.

Har du spørsmål til oss? Vennligst nevn det i kommentarfeltet, så vil vi snarest komme tilbake til deg. Hvis du ønsker å lære Spark og bygge en karriere innen Spark-domenet og bygge ekspertise for å utføre databehandling i stor skala ved hjelp av RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​og Scala med bruk i Real Life, sjekk ut våre interaktive, live på nett her, som kommer med 24 * 7 støtte for å veilede deg gjennom hele læringsperioden.