Vadnica za pretakanje. - Analiza sentimenta z uporabo Apache Spark

Ta spletni dnevnik Spark Streaming vam bo predstavil Spark Streaming, njegove značilnosti in komponente. Vključuje projekt Sentiment Analysis z uporabo Twitterja.

Spark Streaming je razširitev osnovnega API-ja Spark, ki omogoča razširljivo obdelavo tokov podatkovnih tokov v živo z visoko zmogljivostjo in odpornostjo na napake. Spark Streaming se lahko uporablja za pretakanje podatkov v živo, obdelava pa se lahko zgodi v realnem času. Vedno večjo bazo uporabnikov Spark Streaming sestavljajo imena gospodinjstev, kot so Uber, Netflix in Pinterest.

Ko gre za analizo podatkov v realnem času, Spark Streaming ponuja enotno platformo za vnos podatkov za hitro in živo obdelavo in dokazuje svojo spretnost v istem.Preko tega spletnega dnevnika vam bom predstavil to novo vznemirljivo domeno pretočnega iskanja Spark in opravili bomo celoten primer uporabe, Twitter Sentiment Analysis z uporabo Spark Streaming.





V tem blogu bodo obravnavane teme:

  1. Kaj je pretakanje?
  2. Zakaj Spark Streaming?
  3. Pregled pretočnega iskanja Spark
  4. Funkcije pretočnega iskanja
  5. Osnove pretočnega iskanja
    5.1 Kontekst pretakanja
    5.2 DStream
    5.3 Predpomnjenje / vztrajnost
    5.4 Akumulatorji, oddajne spremenljivke in kontrolne točke
  6. Primer uporabe - Twitter Sentiment Analysis

Kaj je pretakanje?

Pretakanje podatkov je tehnika prenosa podatkov, tako da jih je mogoče obdelati kot stalen in neprekinjen tok. Pretočne tehnologije postajajo vse bolj pomembne z rastjo interneta.



Kaj je pretakanje - Spark Streaming - EdurekaSlika: Kaj je pretakanje?

Zakaj Spark Streaming?

Spark Streaming lahko uporabljamo za pretakanje podatkov v realnem času iz različnih virov, kot so Twitter, Stock Market in Geographic Systems, ter izvajamo zmogljivo analitiko za pomoč podjetjem.

Slika: Zakaj Spark Streaming?



Pregled pretočnega iskanja Spark

Spark Streaming se uporablja za obdelavo pretočnih podatkov v realnem času. Je koristen dodatek jedru API Spark. Spark Streaming omogoča obdelavo pretokov podatkovnih tokov v živo z visoko prepustnostjo in odpornostjo na napake.

Slika: Pretoki v pretočnem iskanju

Temeljna enota toka je DStreamki je v bistvu vrsta RDD-jev za obdelavo podatkov v realnem času.

Funkcije pretočnega iskanja

  1. Skaliranje: Spark Streaming se lahko zlahka razširi na stotine vozlišč.
  2. Hitrost: To adrobci z nizko zakasnitvijo.
  3. Toleranca napak: Spark ima sposobnost enaključno okrevanje po okvarah.
  4. Integracija: Spark se integrira s paketno obdelavo in obdelavo v realnem času.
  5. Poslovna analiza: Spark Streaming je used za sledenje vedenja kupcev, ki ga je mogoče uporabiti pri poslovnih analizah.

Spark Streaming Workflow

Potek dela Spark Streaming ima štiri stopnje na visoki ravni. Prva je pretakanje podatkov iz različnih virov. Ti viri so lahko pretočni viri podatkov, kot so Akka, Kafka, Flume, AWS ali Parket za pretakanje v realnem času. Druga vrsta virov vključuje HBase, MySQL, PostgreSQL, Elastic Search, Mongo DB in Cassandra za statično / paketno pretakanje. Ko se to zgodi, lahko Spark uporabite za izvajanje strojnega učenja na podatkih prek svojega MLlib API-ja. Nadalje se Spark SQL uporablja za izvajanje nadaljnjih operacij s temi podatki. Končno, izhodni tok lahko shranite v različne sisteme za shranjevanje podatkov, kot so HBase, Cassandra, MemSQL, Kafka, Elastic Search, HDFS in lokalni datotečni sistem.

Slika: Pregled pretočnega iskanja Spark

Osnove pretočnega iskanja

  1. Kontekst pretakanja
  2. DStream
  3. Predpomnjenje
  4. Akumulatorji, oddajne spremenljivke in kontrolne točke

Kontekst pretakanja

Kontekst pretakanja porabi tok podatkov v Sparku. Registrira Vnesite DStream za izdelavo a Sprejemnik predmet. Je glavna vstopna točka za funkcionalnost Spark. Spark ponuja številne privzete izvedbe virov, kot so Twitter, Akka Actor in ZeroMQ, ki so dostopni iz konteksta.

Objekt StreamingContext je mogoče ustvariti iz predmeta SparkContext. SparkContext predstavlja povezavo z gručo Spark in se lahko uporablja za ustvarjanje RDD-jev, akumulatorjev in spremenljivk oddajanja v tej gruči.

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

DStream

Diskretni tok (DStream) je osnovna abstrakcija, ki jo ponuja Spark Streaming. Gre za neprekinjen tok podatkov. Prejeta je iz podatkovnega vira ali obdelanega podatkovnega toka, ustvarjenega s pretvorbo vhodnega toka.

Slika: Izdvajanje besed iz vhodnega DStreama

Interno je DStream predstavljen z neprekinjeno serijo RDD-jev in vsak RDD vsebuje podatke iz določenega intervala.

Vhodni DStreams: Vhodni DStreams so DStreams, ki predstavljajo tok vhodnih podatkov, prejetih iz pretočnih virov.

Slika: Sprejemnik pošlje podatke na Input DStream, kjer vsak paket vsebuje RDD-je

Vsak vhodni DStream je povezan s sprejemnikom, ki prejme podatke iz vira in jih shrani v Sparkov pomnilnik za obdelavo.

Transformacije na DStreams:

Vsaka operacija, uporabljena na DStream, pomeni operacijo na osnovnih RDD-jih. Transformacije omogočajo spreminjanje podatkov iz vhodnega DStreama podobno kot RDD. DStreams podpirajo številne transformacije, ki so na voljo na običajnih RDD-jih Spark.

Slika: DStream Transformacije

Sledi nekaj priljubljenih sprememb na DStreams:

zemljevid( func )zemljevid( func ) vrne nov DStream s prenašanjem vsakega elementa izvornega DStreama skozi funkcijo func.
flatMap ( func )flatMap ( func ) je podoben zemljevidu ( func ), vendar je mogoče vsak vhodni element preslikati na 0 ali več izhodnih elementov in vrne nov DStream s prenašanjem vsakega izvornega elementa skozi funkcijo func.
filter ( func )filter ( func ) vrne nov DStream tako, da izbere samo zapise izvornega DStreama, na katerem func vrne true.
zmanjšati ( func )zmanjšati ( func ) vrne nov DStream enojnih RDD-jev z združevanjem elementov v vsakem RDD-ju izvornega DStream-a s pomočjo funkcije func .
groupBy ( func )groupBy ( func ) vrne novo RDD, ki je v bistvu sestavljen iz ključa in ustreznega seznama elementov te skupine.

Izhodni DStreams:

Izhodne operacije omogočajo potiskanje podatkov DStreama v zunanje sisteme, kot so zbirke podatkov ali datotečni sistemi. Izhodne operacije sprožijo dejansko izvedbo vseh transformacij DStream.

Slika: Izhodne operacije na DStreams

Predpomnjenje

DStreams omogoča razvijalcem, da predpomnijo / ohranijo podatke toka v pomnilniku. To je koristno, če bodo podatki v DStream izračunani večkrat. To lahko storite z uporabo vztrajati () na DStream.

Slika: Predpomnjenje v 2 vozlišči

Za vhodne tokove, ki sprejemajo podatke po omrežju (kot so Kafka, Flume, Sockets itd.),privzeta raven obstojnosti je nastavljena tako, da podvoji podatke na dva vozlišča za odpornost na napake.

Akumulatorji, oddajne spremenljivke in kontrolne točke

Akumulatorji: Akumulatorji so spremenljivke, ki se dodajo samo s pomočjo asociativne in komutativne operacije. Uporabljajo se za izvajanje števcev ali vsot. Sledenje akumulatorjem v uporabniškem vmesniku je lahko koristno za razumevanje napredka tekaških faz. Spark prvotno podpira numerične akumulatorje. Ustvarjamo lahko imenovane ali neimenovane akumulatorje.

Spremenljivke oddajanja: Spremenljive spremenljivke dovolite programerju, da na vsakem računalniku shrani predpomnilnik samo za branje, namesto da pošlje kopijo z nalogami. Z njimi lahko učinkovito damo vsakemu vozlišču kopijo velikega vhodnega nabora podatkov. Spark tudi poskuša distribuirati spremenljivke oddajanja z uporabo učinkovitih algoritmov oddajanja, da zmanjša stroške komunikacije.

Kontrolne točke: Kontrolne točke so podobne kontrolnim točkam v igrah. Zaradi njih deluje 24 ur na dan, 7 dni v tednu, in so odporni na napake, ki niso povezane z logiko aplikacije.


Slika:
Značilnosti kontrolnih točk

Primer uporabe - Twitter Sentiment Analysis

Zdaj, ko smo razumeli ključne koncepte pretočnega iskanja Spark Streaming, rešimo resničen problem z uporabo pretočnega iskanja Spark.

Izjava o težavi: Oblikovati sistem za analizo sentimenta na Twitterju, v katerem v realnem času naseljujemo občutke za obvladovanje kriz, prilagajanje storitev in ciljno trženje.

Uporaba analize sentimenta:

  • Napovejte uspeh filma
  • Napovejte uspeh politične kampanje
  • Odločite se, ali boste vlagali v določeno podjetje
  • Ciljno oglaševanje
  • Preglejte izdelke in storitve

Izvajanje pretočnega iskanja:

Poiščite psevdo kodo spodaj:

// Uvozite potrebne pakete v program 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 =>Pridobite besedilo iz Hashtags} // preoblikovanje RDD s pomočjo sortBy in nato preslikajte funkcijske oznake.countByValue () .foreachRDD {rdd => val zdaj = Pridobite trenutni čas vsakega Tweet rdd .sortBy (_._ 2) .map (x => (x, zdaj)) // Shranjevanje našega izhoda v ~ / twitter / directory .saveAsTextFile (s '~ / twitter / $ now')} // Transformacija DStream z uporabo funkcij filtra in zemljevida val tweets = stream.filter {t => oznake val = t. Razdeli na prostore .filter (_. StartWith ('#')). Pretvori v male črke 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 () // Shranjevanje našega izhoda v ~ / z imeni datotek, ki se začnejo kot twitters data.saveAsTextFiles ('~ / twitters', '20000') ssc. start () ssc.awaitTermination ()}}

Rezultati:

Sledijo rezultati, ki se med izvajanjem programa Twitter Sentiment Streaming prikažejo v Eclipse IDE.

Slika: Rezultat analize sentimenta v Eclipse IDE

kako ustvariti dinamično matriko v javi -

Kot lahko vidimo na posnetku zaslona, ​​so vsi tviti razvrščeni v pozitivne, nevtralne in negativne glede na sentiment vsebine tweetov.

Rezultati Sentiment of the Tweets se shranijo v mape in datoteke glede na čas, ko so bili ustvarjeni. Ta izhod lahko po potrebi shranite v lokalni datotečni sistem ali HDFS. Izhodni imenik je videti takole:

Slika: Izhodne mape v naši projektni mapi »twitter«

Tu lahko v imeniku twitterja najdemo uporabniška imena uporabnikov Twitterja skupaj s časovnim žigom za vsak tvit, kot je prikazano spodaj:

Slika: Izhodna datoteka, ki vsebuje uporabniška imena Twitterja s časovnim žigom

Zdaj, ko imamo uporabniška imena in časovni žig za Twitter, si oglejmo Sentiment in tweet, shranjene v glavnem imeniku. Tu vsakemu tweetu sledi čustveno čustvo. Ta shranjeni sentiment se nadalje uporablja za analizo velike množice vpogledov podjetij.

Slika: Izhodna datoteka, ki vsebuje tvite s čustvi

Koda za prilagajanje:

Zdaj pa malo spremenimo kodo, da dobimo občutke za določene hashtagove (teme). Trenutno Donald Trump, ameriški predsednik, posluje po novinskih kanalih in spletnih družbenih omrežjih. Oglejmo si občutke, povezane s ključno besedo ‘ Trump ‘.

Slika: Izvajanje analize sentimenta na tvitih s ključno besedo 'Trump'

Premik naprej:

Kot smo videli iz naše demonstracije Sentiment Analysis, lahko izvlečemo občutke določenih tem, tako kot smo to storili za 'Trumpa'. Podobno lahko Sentiment Analytics uporabljajo podjetja za upravljanje kriz, prilagajanje storitev in ciljno trženje.

Podjetja, ki uporabljajo Spark Streaming za analizo sentimenta, so uporabila enak pristop, da so dosegla naslednje:

  1. Izboljšanje uporabniške izkušnje
  2. Pridobivanje konkurenčne prednosti
  3. Pridobivanje poslovne inteligence
  4. Oživitev izgubljene blagovne znamke

S tem smo prišli do konca tega Vadnica za pretakanje v iskri blog. Do zdaj ste že dobro razumeli, kaj je Spark Streaming. Primer uporabe funkcije Twitter Sentiment Analysis vam bo dal potrebno samozavest za delo pri vseh prihodnjih projektih, ki jih naletite na Spark Streaming in Apache Spark. Vadba je ključna za obvladovanje katere koli teme in upam, da je ta blog vzbudil dovolj zanimanja za vas, da bi lahko nadaljevali z raziskovanjem Apache Spark.

Za začetek priporočamo naslednjo vadnico za pretakanje v iskri YouTube za Edureka:

Spark Streaming | Primer analize razpoloženja Twitterja | Edureka

Ta video serija v vadnici Spark nudi popolno ozadje komponent skupaj s primeri uporabe v resničnem življenju, kot so Twitter Sentiment Analysis , Analiza napovedi igre NBA , Sistem za odkrivanje potresov , Analiza podatkov o letih in Sistemi za priporočanje filmov . Primere uporabe smo osebno zasnovali tako, da vsem, ki izvajajo kodo, zagotovimo vsestransko strokovno znanje.

Imate vprašanje za nas? Prosimo, navedite to v oddelku za komentarje in prej se vam bomo oglasili. Če se želite naučiti Sparka in si ustvariti kariero na področju Sparka ter pridobiti strokovno znanje za izvajanje obsežne obdelave podatkov z uporabo RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​in Scala z resničnimi primeri uporabe, si oglejte naš interaktivni v živo na spletu tukaj, prihaja s podporo 24 * 7, ki vas vodi skozi celotno obdobje učenja.