Vodič za strujanje Spark - Analiza raspoloženja pomoću Apache Spark



Ovaj blog Spark Streaming upoznat će vas sa Spark Streamingom, njegovim značajkama i komponentama. Uključuje projekt Analize raspoloženja pomoću Twittera.

Spark Streaming je produžetak jezgre Spark API-ja koji omogućuje skalabilnu, visokopropusnu obradu tokova podataka koji toleriraju kvarove. Spark Streaming može se koristiti za strujanje podataka uživo, a obrada se može dogoditi u stvarnom vremenu. Stalnu bazu korisnika Spark Streaming-a čine imena kućanstava poput Uber, Netflix i Pinterest.

Kada je riječ o analitici podataka u stvarnom vremenu, Spark Streaming pruža jedinstvenu platformu za unos podataka za brzu i živu obradu i dokazuje svoju vještinu u istom.Kroz ovaj blog upoznat ću vas s ovom novom uzbudljivom domenom Spark Streaminga i proći ćemo kroz cjelovit slučaj korištenja, Twitter analiza raspoloženja koristeći Spark Streaming.





Slijede teme koje će biti obrađene na ovom blogu:

  1. Što je streaming?
  2. Zašto Spark Streaming?
  3. Pregled prijenosa streaminga Spark
  4. Značajke streaminga Spark
  5. Osnove streaminga Spark
    5.1 Kontekst strujanja
    5.2 DStream
    5.3 Keširanje / ustrajnost
    5.4 Akumulatori, emisijske varijable i kontrolne točke
  6. Slučaj upotrebe - Twitter analiza raspoloženja

Što je streaming?

Streaming podataka tehnika je za prijenos podataka kako bi se mogli obrađivati ​​kao stalan i neprekidan tok. Streaming tehnologije postaju sve važnije s rastom Interneta.



Što je streaming - Spark Streaming - EdurekaLik: Što je streaming?

Zašto Spark Streaming?

Spark Streaming možemo koristiti za strujanje podataka u stvarnom vremenu iz različitih izvora poput Twittera, Burze i Geografskih sustava te izvoditi snažnu analitiku za pomoć tvrtkama.

Lik: Zašto Spark Streaming?



Pregled prijenosa streaminga Spark

Iskreno strujanje koristi se za obradu podataka strujanja u stvarnom vremenu. To je koristan dodatak osnovnom API-ju Spark. Spark Streaming omogućuje visoku protočnost i otpornost na greške u obradi tokova podataka uživo.

Lik: Streamovi u Spark Streamingu

Temeljna strujna jedinica je DStreamšto je u osnovi niz RDD-ova za obradu podataka u stvarnom vremenu.

Značajke streaminga Spark

  1. Skaliranje: Spark Streaming se lako može skalirati na stotine čvorova.
  2. Ubrzati: To achieves niska latencija.
  3. Tolerancija kvarova: Iskra ima sposobnost edjelotvorno se oporaviti od neuspjeha.
  4. Integracija: Spark se integrira s batch i obradom u stvarnom vremenu.
  5. Analiza poslovanja: Spark Streaming je used za praćenje ponašanja kupaca koje se mogu koristiti u poslovnoj analizi.

Iskreni tok strujanja

Tok rada Spark Streaming ima četiri stupnja visoke razine. Prvo je strujanje podataka iz različitih izvora. Ti izvori mogu biti izvori podataka kao što su Akka, Kafka, Flume, AWS ili Parket za strujanje u stvarnom vremenu. Druga vrsta izvora uključuje HBase, MySQL, PostgreSQL, Elastic Search, Mongo DB i Cassandra za statički / batch streaming. Jednom kada se to dogodi, Spark se može koristiti za izvođenje strojnog učenja na podacima putem svog MLlib API-ja. Nadalje, Spark SQL koristi se za izvođenje daljnjih operacija na tim podacima. Konačno, strujni izlaz može se pohraniti u razne sustave za pohranu podataka poput HBase, Cassandre, MemSQL, Kafke, Elastic Search, HDFS i lokalnog datotečnog sustava.

Lik: Pregled Spark Streaminga

Osnove streaminga Spark

  1. Kontekst strujanja
  2. DStream
  3. Predmemoriranje
  4. Akumulatori, emisijske varijable i kontrolne točke

Kontekst strujanja

Kontekst strujanja troši tok podataka u Sparku. Registrira Unesite DStream proizvesti a Prijamnik objekt. To je glavna ulazna točka za Spark funkcionalnost. Spark nudi brojne zadane implementacije izvora kao što su Twitter, Akka Actor i ZeroMQ kojima je moguće pristupiti iz konteksta.

Objekt StreamingContext može se stvoriti od objekta SparkContext. SparkContext predstavlja vezu s klasterom Spark i može se koristiti za stvaranje RDD-ova, akumulatora i varijabli emitiranja na tom klasteru.

što je binarno pretraživanje u javi
import org.apache.spark._ import org.apache.spark.streaming._ var ssc = novi StreamingContext (sc, sekunde (1))

DStream

Diskretni tok (DStream) osnovna je apstrakcija koju pruža Spark Streaming. To je kontinuirani tok podataka. Primljen je iz izvora podataka ili obrađenog toka podataka generiranog transformiranjem ulaznog toka.

Lik: Izdvajanje riječi iz ulaznog DStreama

Interno je DStream predstavljen kontinuiranim nizom RDD-ova i svaki RDD sadrži podatke iz određenog intervala.

Ulazni DStreamovi: Ulazni DStreamovi su DStreamovi koji predstavljaju tok ulaznih podataka primljenih iz izvora strujanja.

Lik: Prijemnik šalje podatke na ulazni DStream gdje svaka serija sadrži RDD-ove

Svaki ulazni DStream povezan je s objektom prijemnika koji prima podatke iz izvora i pohranjuje ih u Sparkovu memoriju za obradu.

Transformacije na DStreams-u:

Svaka operacija primijenjena na DStreamu prevodi se u operacije na temeljnim RDD-ovima. Transformacije omogućuju izmjenu podataka iz ulaznog DStreama slično RDD-ovima. DStreams podržavaju mnoge transformacije dostupne na normalnim Spark RDD-ima.

Lik: DStream transformacije

Slijede neke od popularnih transformacija na DStreams-u:

karta( func )karta( func ) vraća novi DStream propuštanjem svakog elementa izvornog DStreama kroz funkciju func.
flatMap ( func )flatMap ( func ) je sličan mapi ( func ), ali svaka ulazna stavka može se preslikati na 0 ili više izlaznih stavki i vraća novi DStream prolazeći svaki izvorni element kroz funkciju func.
filtar( func )filtar( func ) vraća novi DStream odabirom samo zapisa izvornog DStreama na kojem func vraća istina.
smanjiti( func )smanjiti( func ) vraća novi DStream jednoelementnih RDD-a agregiranjem elemenata u svakom RDD-u izvornog DStreama pomoću funkcije func .
grupaBy ( func )grupaBy ( func ) vraća novi RDD koji je u osnovi sastavljen od ključa i odgovarajućeg popisa stavki te grupe.

Izlazni DStreamovi:

Izlazne operacije omogućuju potiskivanje podataka DStreama u vanjske sustave poput baza podataka ili datotečnih sustava. Izlazne operacije pokreću stvarno izvršavanje svih DStream transformacija.

Lik: Izlazne operacije na DStreamovima

Predmemoriranje

DStreams omogućiti programerima da predmemoriraju / ustraju podatke streama u memoriji. To je korisno ako će se podaci u DStreamu izračunavati više puta. To se može učiniti pomoću ustrajati() metoda na DStreamu.

Lik: Keširanje u 2 čvora

Za ulazne tokove koji primaju podatke putem mreže (kao što su Kafka, Flume, Sockets, itd.),zadana razina postojanosti postavljena je za repliciranje podataka na dva čvora radi tolerancije kvarova.

Akumulatori, emisijske varijable i kontrolne točke

Akumulatori: Akumulatori su varijable koje se dodaju samo asocijativnom i komutativnom operacijom. Koriste se za provođenje brojača ili iznosa. Akumulatori za praćenje u korisničkom sučelju mogu biti korisni za razumijevanje napredovanja faza. Spark izvorno podržava numeričke akumulatore. Možemo stvoriti imenovane ili neimenovane akumulatore.

Promjenjive emisije: Emitirane varijable dopustite programeru da na svakom stroju drži predmemoriranu varijablu samo za čitanje, umjesto da kopiju isporuči sa zadacima. Mogu se koristiti za učinkovito davanje svakog čvora kopijom velikog ulaznog skupa podataka. Spark također pokušava distribuirati varijable emitiranja pomoću učinkovitih algoritama emitiranja kako bi smanjio troškove komunikacije.

Kontrolne točke: Kontrolne točke slični su kontrolnim točkama u igrama. Oni ga rade 24/7 i čine ga otpornim na kvarove koji nisu povezani s logikom aplikacije.


Lik:
Značajke kontrolnih točaka

Slučaj upotrebe - Twitter analiza raspoloženja

Sad kad smo shvatili temeljne koncepte Spark Streaminga, riješimo stvarni problem pomoću Spark Streaminga.

Izjava o problemu: Dizajnirati sustav za analizu sentimenta na Twitteru u koji ugrađujemo osjećaje u stvarnom vremenu za upravljanje krizama, prilagođavanje usluga i ciljni marketing.

Primjene analize osjećaja:

  • Predvidite uspjeh filma
  • Predvidite uspjeh političke kampanje
  • Odlučite hoćete li ulagati u određenu tvrtku
  • Ciljano oglašavanje
  • Pregledajte proizvode i usluge

Implementacija Spark Streaminga:

Pronađite pseudo kod ispod:

// Uvoz potrebnih paketa u 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 =>Nabavite tekst iz heš-oznaka} // RDD transformacija pomoću sortBy, a zatim mapirajte funkcijske oznake.countByValue () .foreachRDD {rdd => val now = Dobijte trenutno vrijeme svakog Tweet-a rdd .sortBy (_._ 2) .map (x => (x, sada)) // Spremanje našeg rezultata na ~ / twitter / directory .saveAsTextFile (s '~ / twitter / $ now')} // DStream transformacija pomoću funkcija filtra i mape val tweets = stream.filter {t => oznake val = t. Split On Spaces .filter (_. StartWith ('#')). Pretvori u mala slova tags.exists {x => true}} val podaci = tweets.map {status => val sentiment = SentimentAnalysisUtils.detectSentiment (status.getText) val tagss = status.getHashtagEntities.map (_. GetText.toLowerCase) (status.getText, sentiment.toString, tagss.toString ())} data.print () // Spremanje rezultata na ~ / s imenima datoteka koja počinju poput twittera data.saveAsTextFiles ('~ / twitters', '20000') ssc. start () ssc.awaitTermination ()}}

Rezultati:

Slijede rezultati koji se prikazuju u Eclipse IDE-u tijekom izvođenja programa Twitter Sentiment Streaming.

Lik: Izlaz analize raspoloženja u Eclipse IDE-u

Kao što možemo vidjeti na snimci zaslona, ​​svi su tweetovi kategorizirani u pozitivne, neutralne i negativne prema osjećaju sadržaja tweetova.

Izlaz Sentiment of Tweets pohranjuje se u mape i datoteke prema vremenu kada su stvoreni. Ovaj se izlaz po potrebi može pohraniti u lokalni datotečni sustav ili HDFS. Izlazni direktorij izgleda ovako:

Lik: Izlazne mape unutar mape projekta 'twitter'

Ovdje, unutar direktorija twitter, možemo pronaći korisnička imena korisnika Twittera zajedno s vremenskom oznakom za svaki tweet, kao što je prikazano dolje:

Lik: Izlazna datoteka koja sadrži korisnička imena Twittera s vremenskom oznakom

Sad kad smo dobili korisnička imena i vremensku oznaku za Twitter, pogledajmo Sentimente i tweetove pohranjene u glavnom direktoriju. Ovdje svaki tweet prati emocija osjećaja. Ovaj pohranjeni sentiment dalje se koristi za analizu velikog broja uvida tvrtki.

Lik: Izlazna datoteka koja sadrži tweetove s osjećajima

je-odnos u javi

Kôd za podešavanje:

Sada ćemo malo izmijeniti naš kod da bismo dobili osjećaje za određene hashtagove (teme). Trenutno Donald Trump, predsjednik Sjedinjenih Država, trguje vijestima i mrežnim društvenim mrežama. Pogledajmo osjećaje povezane s ključnom riječi ‘ Adut ‘.

Lik: Izvođenje analize sentimenta na tweetovima s ključnom riječi ‘Trump’

Kretanje unaprijed:

Kao što smo vidjeli iz naše demonstracije Sentiment Analysis, možemo izvući osjećaje određenih tema baš kao što smo to učinili za ‘Trumpa’. Slično tome, Sentiment Analytics mogu se koristiti u upravljanju krizama, prilagođavanju usluga i ciljanom marketingu od strane tvrtki širom svijeta.

Tvrtke koje koriste Spark Streaming za analizu sentimenta primijenile su isti pristup kako bi postigle sljedeće:

  1. Poboljšanje korisničkog iskustva
  2. Sticanje konkurentske prednosti
  3. Dobivanje poslovne inteligencije
  4. Revitalizacija izgubljene marke

Ovim smo došli do kraja ovoga Spark Streaming Vodič blog. Do sada ste sigurno stekli dobro razumijevanje što je Spark Streaming. Slučaj upotrebe Twitter Sentiment Analysis dat će vam potrebno povjerenje za rad na svim budućim projektima s kojima se susrećete u Spark Streamingu i Apache Sparku. Praksa je ključ za savladavanje bilo koje teme i nadam se da je ovaj blog stvorio dovoljno interesa za vas da dalje istražujete Apache Spark.

Za početak preporučujemo sljedeće vodiče za Spark Streaming YouTube od Edureke:

Iskreno strujanje | Primjer analize sentimenata na Twitteru | Edureka

Ova video serija na vodiču Spark pruža potpunu pozadinu komponenata zajedno sa stvarnim slučajevima upotrebe kao što su Twitter analiza raspoloženja , NBA analiza predviđanja utakmica , Sustav za otkrivanje potresa , Analitika podataka o letu i Sustavi za preporuku filmova . Osobno smo osmislili slučajeve upotrebe kako bismo pružili sveobuhvatnu stručnost svima koji upravljaju kodom.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare i javit ćemo vam se najranije. Ako želite naučiti Spark i izgraditi karijeru u domeni Spark i izgraditi stručnost za obavljanje velike obrade podataka pomoću RDD-a, Spark Streaming-a, SparkSQL-a, MLlib-a, GraphX-a i Scale sa stvarnim slučajevima upotrebe, pogledajte našu interaktivnu, uživo na liniji ovdje, koja dolazi s podrškom 24 * 7 koja će vas voditi tijekom cijelog razdoblja učenja.