„Spark Streaming“ mokymo programa - sentimentų analizė naudojant „Apache Spark“



Šis „Spark Streaming“ tinklaraštis supažindins jus su „Spark Streaming“, jo funkcijomis ir komponentais. Tai apima „Sentiment Analysis“ projektą, naudojant „Twitter“.

„Spark Streaming“ yra pagrindinės „Spark“ API pratęsimas, leidžiantis keisti, didelių pralaidumų, netoleruojančius gedimų tiesioginių duomenų srautus. „Spark Streaming“ gali būti naudojamas tiesioginiams duomenims perduoti, o apdorojimas gali įvykti realiuoju laiku. „Spark Streaming“ vis didėjančią vartotojų bazę sudaro tokie vardai kaip „Uber“, „Netflix“ ir „Pinterest“.

Kalbant apie realiojo laiko duomenų analizę, „Spark Streaming“ teikia vieną platformą duomenims įgyti, kad būtų galima greitai ir tiesiogiai apdoroti ir įrodo jūsų įgūdžius tuo pačiu.Per šį tinklaraštį aš supažindinsiu jus su šiuo nauju įdomiu „Spark Streaming“ domenu ir mes išnagrinėsime visišką naudojimo atvejį, „Twitter“ nuotaikų analizė naudojant „Spark Streaming“.



Toliau pateikiamos temos, kurios bus aptariamos šiame tinklaraštyje:

  1. Kas yra srautas?
  2. Kodėl „Spark Streaming“?
  3. „Spark Streaming“ apžvalga
  4. „Spark Streaming“ funkcijos
  5. „Spark Streaming Fundamentals“
    5.1 Srautinio perdavimo kontekstas
    5.2 „DStream“
    5.3 Talpykla / atkaklumas
    5.4 Akumuliatoriai, transliavimo kintamieji ir kontroliniai taškai
  6. Naudokite atvejį - „Twitter“ nuomonės analizę

Kas yra srautas?

Duomenų srautas yra duomenų perdavimo būdas, kad juos būtų galima apdoroti kaip pastovią ir nenutrūkstamą srautą. Srautinės technologijos tampa vis svarbesnės augant internetui.



Kas yra srautas - „Spark Streaming“ - „Edureka“Paveikslėlis: Kas yra srautas?

Kodėl „Spark Streaming“?

Mes galime naudoti „Spark Streaming“ srautams realiuoju laiku perduoti duomenis iš įvairių šaltinių, tokių kaip „Twitter“, vertybinių popierių rinka ir geografinės sistemos, ir atlikti galingą analizę verslui padėti.

Paveikslėlis: Kodėl „Spark Streaming“?



„Spark Streaming“ apžvalga

„Spark Streaming“ naudojama apdorojant srauto duomenis realiuoju laiku. Tai naudingas pagrindinės „Spark“ API priedas. „Spark Streaming“ leidžia apdoroti tiesioginius duomenų srautus didelio našumo ir atspariems trikdžiams.

Paveikslėlis: Srautai „Spark Streaming“

Pagrindinis srauto vienetas yra „DStream“kuri iš esmės yra RDD serija, skirta apdoroti duomenis realiuoju laiku.

„Spark Streaming“ funkcijos

  1. Mastelio keitimas: „Spark Streaming“ gali lengvai išplėsti iki šimtų mazgų.
  2. Greitis: Tai amenkas vėlavimas.
  3. Gedimų tolerancija: Kibirkštis turi galimybę elįveikti po nesėkmių.
  4. Integracija: „Spark“ integruojamas su paketiniu ir realiuoju laiku atliekamu apdorojimu.
  5. Verslo analizė: „Spark Streaming“ yra usekti klientų elgseną, kuri gali būti naudojama verslo analizėje.

„Spark Streaming“ darbo eiga

„Spark Streaming“ darbo eigoje yra keturi aukšto lygio etapai. Pirmasis yra srautas duomenų iš įvairių šaltinių. Šie šaltiniai gali būti srautiniai duomenų šaltiniai, pvz., „Akka“, „Kafka“, „Flume“, AWS ar „Parketas“, kad būtų galima perduoti srautą realiuoju laiku. Antrasis šaltinių tipas apima „HBase“, „MySQL“, „PostgreSQL“, „Elastic Search“, „Mongo DB“ ir „Cassandra“ statiniam / paketiniam srautui. Kai tai atsitiks, „Spark“ gali būti naudojama mašininiam mokymuisi atlikti naudojant „MLlib“ API. Be to, „Spark SQL“ naudojama tolesnėms šių duomenų operacijoms atlikti. Galiausiai srautinį išvestį galima saugoti įvairiose duomenų saugojimo sistemose, tokiose kaip HBase, Cassandra, MemSQL, Kafka, Elastic Search, HDFS ir vietinėje failų sistemoje.

Paveikslėlis: „Spark Streaming“ apžvalga

„Spark Streaming Fundamentals“

  1. Srautinio perdavimo kontekstas
  2. „DStream“
  3. Talpykla
  4. Akumuliatoriai, transliavimo kintamieji ir kontroliniai taškai

Srautinio perdavimo kontekstas

Srautinio perdavimo kontekstas sunaudoja duomenų srautą „Spark“. Jis registruoja Įveskite „DStream“ gaminti a Imtuvas objektas. Tai yra pagrindinis „Spark“ funkcijų įėjimo taškas. „Spark“ teikia daugybę numatytųjų šaltinių, tokių kaip „Twitter“, „Akka Actor“ ir „ZeroMQ“, kuriuos galima pasiekti iš konteksto.

„StreamingContext“ objektą galima sukurti iš „SparkContext“ objekto. „SparkContext“ reiškia ryšį su „Spark“ grupe ir gali būti naudojamas kuriant RDD, kaupiklius ir transliavimo kintamuosius toje grupėje.

ms sql pamokos pradedantiesiems
importuoti org.apache.spark._ importuoti org.apache.spark.streaming._ var ssc = naujas „StreamingContext“ (sc, sekundės (1))

„DStream“

Diskretizuotas srautas („DStream“) yra pagrindinė „Spark Streaming“ teikiama abstrakcija. Tai nuolatinis duomenų srautas. Jis gaunamas iš duomenų šaltinio arba apdoroto duomenų srauto, sukurto transformuojant įvesties srautą.

Paveikslėlis: Žodžių ištraukimas iš įvesties „DStream“

Viduje „DStream“ vaizduoja nenutrūkstama RDD serija, o kiekviename RDD yra tam tikro intervalo duomenys.

Įvesties „Dstream“: Įveskite „Dstream“ yra D srautai, rodantys iš srautinių šaltinių gautų įvesties duomenų srautą.

Paveikslėlis: Imtuvas siunčia duomenis į įvesties DStream, kur kiekvienoje pakuotėje yra RDD

Kiekvienas įvesties „DStream“ yra susietas su imtuvo objektu, kuris gauna duomenis iš šaltinio ir saugo juos „Spark“ atmintyje apdoroti.

Transformacijos „DStreams“:

Bet kokia „DStream“ taikoma operacija reiškia operacijas su pagrindiniais RDD. Transformacijos leidžia modifikuoti įvesties „DStream“ duomenis panašiai kaip RDD. „DStreams“ palaiko daugelį transformacijų, pasiekiamų įprastuose „Spark RDD“.

Paveikslėlis: „DStream“ transformacijos

Toliau pateikiami keli populiariausi „DStreams“ pokyčiai:

žemėlapis ( func )žemėlapis ( func ) grąžina naują DStream, praleidžiant kiekvieną šaltinio DStream elementą per funkciją func.
„flatMap“ ( func )„flatMap“ ( func ) yra panašus į žemėlapį ( func ), tačiau kiekvieną įvesties elementą galima susieti su 0 ar daugiau išvesties elementų ir grąžinti naują „DStream“, perduodant kiekvieną šaltinio elementą per funkciją func.
filtras( func )filtras( func ) grąžina naują DStream pasirinkdamas tik šaltinio DStream įrašus, kuriame func grįžta tiesa.
sumažinti ( func )sumažinti ( func ) grąžina naują vieno elemento RDD DStream, sudedant elementus kiekviename šaltinio DStream RDD naudojant funkciją func .
Grupuoti pagal( func )Grupuoti pagal( func ) pateikia naują RDD, kurį iš esmės sudaro raktas ir atitinkamas tos grupės elementų sąrašas.

Išvesties D srautai:

Išvesties operacijos leidžia „DStream“ duomenis išstumti į išorines sistemas, tokias kaip duomenų bazės ar failų sistemos. Išvesties operacijos suaktyvina faktinį visų „DStream“ transformacijų vykdymą.

Paveikslėlis: „DStreams“ išvesties operacijos

Talpykla

D srautai leisti kūrėjams talpinti / išsaugoti srauto duomenis atmintyje. Tai naudinga, jei „DStream“ duomenys bus skaičiuojami kelis kartus. Tai galima padaryti naudojant išlikti () metodas „DStream“.

Paveikslėlis: Talpykla į 2 mazgus

„Oracle pl sql“ klaidų tvarkymo geriausia praktika

Įvesties srautams, gaunantiems duomenis per tinklą (pvz., „Kafka“, „Flume“, „Sockets“ ir kt.),nustatytas numatytasis patvarumo lygis, kad duomenys būtų pakartoti dviem mazgams, kad būtų galima toleruoti gedimus.

Akumuliatoriai, transliavimo kintamieji ir kontroliniai taškai

Akumuliatoriai: Akumuliatoriai yra kintamieji, kurie pridedami tik vykdant asociacinę ir komutacinę operaciją. Jie naudojami skaitikliams ar sumoms įgyvendinti. Akumuliatorių stebėjimas vartotojo sąsajoje gali būti naudingas norint suprasti bėgimo etapų eigą. „Spark“ natūraliai palaiko skaitmeninius akumuliatorius. Galime sukurti vardinius ar neįvardytus akumuliatorius.

Transliacijos kintamieji: Transliuoti kintamieji leisti programuotojui kiekvienoje mašinoje laikyti tik skaitomą kintamąjį talpykloje, o ne siųsti jo kopiją su užduotimis. Jie gali būti naudojami kiekvienam mazgui efektyviai suteikti didelio įvesties duomenų rinkinio kopiją. „Spark“ taip pat bando platinti transliacijos kintamuosius, naudodamas efektyvius transliacijos algoritmus, kad sumažintų komunikacijos kainą.

Kontrolės punktai: Kontrolės punktai yra panašūs į žaidimų kontrolinius punktus. Jie priverčia jį veikti 24 valandas per parą 7 dienas ir tampa atsparūs gedimams, nesusijusiems su programos logika.


Paveikslėlis:
Kontrolinių punktų ypatybės

Naudokite atvejį - „Twitter“ nuomonės analizę

Dabar, kai supratome pagrindines „Spark Streaming“ sąvokas, spręskime realaus gyvenimo problemas naudodami „Spark Streaming“.

Problemos pareiškimas: Sukurti „Twitter“ nuotaikų analizės sistemą, kurioje pateikiame realaus laiko krizių valdymo, paslaugų pritaikymo ir tikslinės rinkodaros požiūrius.

Sentimento analizės programos:

  • Spėkite filmo sėkmę
  • Numatyti politinės kampanijos sėkmę
  • Nuspręskite, ar investuoti į tam tikrą įmonę
  • Tikslinė reklama
  • Peržiūrėkite produktus ir paslaugas

„Spark Streaming“ įgyvendinimas:

Žemiau rasite pseudo kodą:

// Importuokite reikiamus paketus į „Spark“ programą importuodami org.apache.spark.streaming. {Seconds, StreamingContext} importuokite org.apache.spark.SparkContext._ ... importuokite java.io.File objekto twitterSentiment {def main (args : Masyvas [Stygos]) {if (argument. Ilgis<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 =>Gauti tekstą iš hashtagų} // RDD transformacija naudojant sortBy, tada susiejant funkcijos žymes.countByValue () .foreachRDD {rdd => val now = Gauti kiekvieno „Tweet rdd“ .sortBy (_._ 2) dabartinį laiką. Žemėlapis (x => (x, dabar)) // Išvesties išsaugojimas adresu ~ / twitter / directory .saveAsTextFile (s '~ / twitter / $ now')} // DStream transformacija naudojant filtro ir žemėlapio funkcijas val tweets = stream.filter {t => val žymos = t. „Split On Spaces“ .filter (_. StartsWith ('#')). Konvertuoti į mažąsias raides 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 () // Išvesties išsaugojimas ~ / failų pavadinimais, prasidedančiais kaip twitters data.saveAsTextFiles ('~ / twitters', '20000') ssc. pradžia () ssc.awaitTermination ()}}

Rezultatai:

Toliau pateikiami rezultatai, kurie rodomi „Eclipse IDE“ vykdant „Twitter Sentiment Streaming“ programą.

Paveikslėlis: Sentimentų analizės rezultatas „Eclipse IDE“

Kaip matome ekrano kopijoje, visi tweetai skirstomi į teigiamus, neutralius ir neigiamus pagal tweetų turinio nuotaiką.

„Tweets Sentiments“ išvestis saugoma aplankuose ir failuose, atsižvelgiant į jų sukūrimo laiką. Jei reikia, šią išvestį galima išsaugoti vietinėje failų sistemoje arba HDFS. Išvesties katalogas atrodo taip:

Paveikslėlis: Išvesties aplankai mūsų „twitter“ projekto aplanke

Čia, „Twitter“ kataloge, galime rasti „Twitter“ vartotojų vartotojo vardus ir kiekvieno tweetingo laiko žymą, kaip parodyta žemiau:

Paveikslėlis: Išvesties failas, kuriame yra „Twitter“ vartotojo vardai su laiko žyma

Dabar, kai turime „Twitter“ naudotojo vardus ir laiko žymą, pažvelkime į „Sentiments“ ir „tweet“, saugomus pagrindiniame kataloge. Čia po kiekvieno tviterio seka jausmo emocija. Šis saugomas požiūris toliau naudojamas analizuojant daugybę kompanijų įžvalgų.

Paveikslėlis: Išvesties failas, kuriame yra tweetai su sentimentais

Koregavimo kodas:

kaip pakeisti skaičių java

Dabar šiek tiek pakoreguokime savo kodą, kad gautume jausmų dėl konkrečių žymų (temų). Šiuo metu JAV prezidentas Donaldas Trumpas populiarėja naujienų kanaluose ir internetinėje socialinėje žiniasklaidoje. Pažvelkime į jausmus, susijusius su raktiniu žodžiu „ Trumpas „.

Paveikslėlis: Atliekant „Twitter“ raktinių žodžių nuotaikų analizę

Judėjimas į priekį:

Kaip matėme iš mūsų „Sentiment Analysis“ demonstracijos, galime išskirti tam tikrų temų nuotaikas, kaip ir „Trump“. Panašiai „Sentiment Analytics“ gali naudoti krizių valdymas, paslaugų pritaikymas ir tikslinė rinkodara visame pasaulyje.

Įmonės, naudojančios „Spark Streaming“ nuotaikų analizei, taikė tą patį metodą, kad pasiektų:

  1. Klientų patirties gerinimas
  2. Įgyti konkurencinį pranašumą
  3. Verslo intelekto įgijimas
  4. Pralošusio prekės ženklo atgaivinimas

Tai pasiekėme „Spark Streaming“ mokymo programa dienoraštis. Dabar jau turite gerai suprasti, kas yra „Spark Streaming“. „Twitter Sentiment Analysis“ naudojimo atvejis suteiks jums reikalingo pasitikėjimo, kad galėtumėte dirbti su bet kokiais būsimais projektais, kuriuos susiduriate „Spark Streaming“ ir „Apache Spark“. Praktika yra raktas įvaldant bet kurią temą, ir tikiuosi, kad šis tinklaraštis sukėlė pakankamai susidomėjimo jumis, kad galėtumėte toliau tyrinėti „Apache Spark“.

Pirmiausia rekomenduojame šią „Edureka“ „Spark Streaming“ „YouTube“ mokymo programą:

Kibirkščių srautas | „Twitter“ nuomonės analizės pavyzdys Edureka

Ši vaizdo įrašų serija „Spark Tutorial“ pateikia išsamų komponentų pagrindą kartu su „Real-Life“ naudojimo atvejais, tokiais kaip „Twitter“ nuotaikų analizė , NBA žaidimų prognozavimo analizė , Žemės drebėjimo aptikimo sistema , Skrydžio duomenų analizė ir Filmų rekomendavimo sistemos . Mes asmeniškai suprojektavome naudojimo atvejus, kad galėtume suteikti visapusišką patirtį visiems, naudojantiems kodą.

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje ir mes su jumis susisieksime anksčiausiai. Jei norite išmokti „Spark“ ir kurti karjerą „Spark“ srityje ir kaupti patirtį, kad būtų galima atlikti didelio masto duomenų apdorojimą naudojant RDD, „Spark Streaming“, „SparkSQL“, „MLlib“, „GraphX“ ir „Scala“ su „Real Life“ naudojimo atvejais, peržiūrėkite mūsų interaktyvius tiesioginius pranešimus prisijungęs čia, su 24 * 7 palaikymu, kuris padės jums mokytis.