Spark-suoratoisto-opas - Sentimenttianalyysi Apache Sparkin avulla



Tämä Spark Streaming -blogi tutustuttaa sinut Spark Streamingiin, sen ominaisuuksiin ja komponentteihin. Se sisältää Sentiment Analysis -projektin, jossa käytetään Twitteriä.

Spark Streaming on Spark-ydinsovellusliittymän laajennus, joka mahdollistaa skaalattavan, suuritehoisen ja vikasietäisen suoratoiston suorien datavirtojen prosessoinnissa. Spark Streaming -palvelua voidaan käyttää suorien tietojen suoratoistoon ja käsittely voi tapahtua reaaliajassa. Spark Streamingin jatkuvasti kasvava käyttäjäkunta koostuu kotitalouden nimistä, kuten Uber, Netflix ja Pinterest.

Reaaliaikaisen data-analyysin osalta Spark Streaming tarjoaa yhden alustan tietojen noutamiseksi nopeaa ja suoraa käsittelyä varten todistaa taitosi samassa.Tämän blogin kautta esitän sinulle tämän uuden jännittävän Spark Streaming -verkkotunnuksen ja käydään läpi täydellinen käyttötapaus, Twitter-mielipiteen analyysi käyttämällä Spark Streamingia.





Tässä blogissa käsitellään seuraavia aiheita:

  1. Mikä on suoratoisto?
  2. Miksi Spark Streaming?
  3. Spark-suoratoiston yleiskatsaus
  4. Spark-suoratoisto-ominaisuudet
  5. Kipinän suoratoiston perusteet
    5.1 Suoratoiston konteksti
    5.2 DStream
    5.3 Välimuisti / pysyvyys
    5.4 Akut, lähetysmuuttujat ja tarkistuspisteet
  6. Käytä tapaus - Twitter-mielipiteen analyysiä

Mikä on suoratoisto?

Data Streaming on tekniikka tietojen siirtämiseksi, jotta niitä voidaan käsitellä tasaisena ja jatkuvana virtana. Suoratoistotekniikat ovat yhä tärkeämpiä Internetin kasvun myötä.



Mikä on suoratoisto - Spark-suoratoisto - EdurekaKuva: Mikä on suoratoisto?

Miksi Spark Streaming?

Voimme käyttää Spark Streamingia suoratoistamaan reaaliaikaisia ​​tietoja eri lähteistä, kuten Twitter, pörssi ja maantieteelliset järjestelmät, ja tekemään tehokkaita analyyseja yritysten auttamiseksi.

Kuva: Miksi Spark Streaming?



Spark-suoratoiston yleiskatsaus

Kipinän suoratoisto käytetään reaaliaikaisen suoratoistodatan käsittelyyn. Se on hyödyllinen lisäys Spark-ydinsovellusliittymään. Spark Streaming mahdollistaa suuritehoisen ja vikasietoista suorien datavirtojen käsittelyä.

Kuva: Suoratoistot Spark-suoratoistossa

Perusvirtayksikkö on DStreamjoka on pohjimmiltaan sarja RDD-tiedostoja reaaliaikaisen datan käsittelemiseksi.

Spark-suoratoisto-ominaisuudet

  1. Skaalaus: Spark Streaming voi helposti skaalata satoihin solmuihin.
  2. Nopeus: Se asaavuttaa matalan viiveen.
  3. Vikasietoisuus: Sparkilla on kyky eviipyvästi toipua epäonnistumisista.
  4. Liittäminen: Spark integroituu erä- ja reaaliaikaiseen käsittelyyn.
  5. Liiketoiminta-analyysi: Spark Streaming on useurata asiakkaiden käyttäytymistä, joita voidaan käyttää liiketoiminta-analyyseissä.

Spark-suoratoiston työnkulku

Spark Streaming -työnkululla on neljä korkean tason vaihetta. Ensimmäinen on virrata tietoja eri lähteistä. Nämä lähteet voivat olla reaaliaikaisen suoratoiston tietolähteitä, kuten Akka, Kafka, Flume, AWS tai Parquet. Toinen tyyppinen lähde sisältää HBase-, MySQL-, PostgreSQL-, Elastic Search-, Mongo DB- ja Cassandra-sovellukset staattista / erästreamiota varten. Kun tämä tapahtuu, Sparkia voidaan käyttää suorittamaan koneoppiminen tiedoille sen MLlib-sovellusliittymän kautta. Lisäksi Spark SQL: ää käytetään näiden tietojen jatkotoimenpiteiden suorittamiseen. Lopuksi suoratoistolähtö voidaan tallentaa useisiin tietovarastojärjestelmiin, kuten HBase, Cassandra, MemSQL, Kafka, Elastic Search, HDFS ja paikalliseen tiedostojärjestelmään.

Kuva: Katsaus Spark-suoratoistoon

Kipinän suoratoiston perusteet

  1. Suoratoiston konteksti
  2. DStream
  3. Välimuisti
  4. Akut, lähetysmuuttujat ja tarkistuspisteet

Suoratoiston konteksti

Suoratoiston konteksti kuluttaa tietovirtaa Sparkissa. Se rekisteröi Syötä DStream tuottaa a Vastaanotin esine. Se on Spark-toiminnon tärkein lähtökohta. Spark tarjoaa useita oletusasetuksia lähteistä, kuten Twitter, Akka Actor ja ZeroMQ, jotka ovat käytettävissä kontekstista.

StreamingContext-objekti voidaan luoda SparkContext-objektista. SparkContext edustaa yhteyttä Spark-klusteriin, ja sitä voidaan käyttää RDD: n, akkujen ja lähetysmuuttujien luomiseen kyseiseen klusteriin.

Tuo org.apache.spark._ Tuo org.apache.spark.streaming._ var ssc = uusi StreamingContext (sc, sekuntia (1))

DStream

Diskretisoitu virta (DStream) on Spark Streamingin tarjoama perus abstraktio. Se on jatkuva tietovirta. Se vastaanotetaan tietolähteestä tai käsitellystä datavirrasta, joka on muodostettu muuntamalla tulovirta.

Kuva: Sanojen purkaminen Input DStreamista

Sisäisesti DStreamia edustaa jatkuva RDD-sarja ja jokainen RDD sisältää tietoja tietyltä aikaväliltä.

tietokantayhteydet jaavassa mysql: n kanssa

Syötä DStreams: Syötä DStreams ovat DStreameja, jotka edustavat suoratoistolähteistä vastaanotettua syötetietovirtaa.

Kuva: Vastaanotin lähettää tietoja Input DStreamiin, jossa jokainen erä sisältää RDD: itä

Jokainen tulo DStream liittyy vastaanotinobjektiin, joka vastaanottaa tiedot lähteestä ja tallentaa ne Sparkin muistiin käsittelyä varten.

mitä rmi on java

Muunnokset DStreameissa:

Kaikki DStream-sovelluksessa käytettävät toiminnot muuntavat taustalla olevien RDD-levyjen toimintoja. Transformaatiot mahdollistavat syötetyn DStreamin tietojen muokkaamisen samalla tavalla kuin RDD: t. DStreams tukee monia tavallisten Spark RDD -levyjen käytettävissä olevia muunnoksia.

Kuva: DStream-muunnokset

Seuraavassa on joitain DStreamen suosittuja muutoksia:

kartta( func )kartta( func ) palauttaa uuden DStreamin kuljettamalla lähdekoodin jokaisen elementin toiminnon läpi func.
flatMap ( func )flatMap ( func ) on samanlainen kuin kartta ( func ), mutta jokainen tulokohde voidaan yhdistää 0 tai useampaan lähtökohtaan ja palauttaa uuden DStreamin kuljettamalla jokaisen lähdeelementin funktion func.
suodattaa( func )suodattaa( func ) palauttaa uuden DStreamin valitsemalla vain sen lähdekoodin tietueet, johon func palauttaa arvon tosi.
vähentää( func )vähentää( func ) palauttaa uuden yksielementtisten RDD-levyjen uuden DStream-arvon yhdistämällä lähde-DStreamin kussakin RDD: ssä olevat elementit funktion avulla func .
ryhmäBy ( func )ryhmäBy ( func ) palauttaa uuden RDD: n, joka koostuu periaatteessa avaimesta ja vastaavasta luettelosta kyseisen ryhmän kohteista.

Lähtö D-virrat:

Tulostustoiminnot mahdollistavat DStreamin tietojen siirtämisen ulkoisiin järjestelmiin, kuten tietokantoihin tai tiedostojärjestelmiin. Tulostustoiminnot käynnistävät kaikkien DStream-muunnosten varsinaisen suorituksen.

Kuva: Ulostulotoiminnot DStreamissa

Välimuisti

DStreams anna kehittäjien tallentaa välimuistiin / säilyttää virran tiedot muistissa. Tämä on hyödyllistä, jos DStreamin tiedot lasketaan useita kertoja. Tämä voidaan tehdä käyttämällä jatkua () menetelmä DStreamissa.

Kuva: Välimuisti 2 solmuun

Syöttövirroille, jotka vastaanottavat tietoja verkon kautta (kuten Kafka, Flume, Sockets jne.),oletusarvoinen pysyvyystaso on asetettu kopioimaan tiedot kahteen solmuun vikasietoisuuden takaamiseksi.

Akut, lähetysmuuttujat ja tarkistuspisteet

Akut: Akut ovat muuttujia, jotka lisätään vain assosiatiivisen ja kommutatiivisen operaation avulla. Niitä käytetään laskurien tai summien toteuttamiseen. Akkujen seuranta käyttöliittymässä voi olla hyödyllistä ymmärrettäessä juoksevien vaiheiden edistymistä. Spark tukee luonnollisesti numeerisia akkuja. Voimme luoda nimettyjä tai nimeämättömiä akkuja.

Broadcast-muuttujat: Broadcast-muuttujat anna ohjelmoijan pitää vain luku -muuttuja välimuistissa jokaisessa koneessa sen sijaan, että se lähettäisi kopion tehtävistä. Niitä voidaan käyttää antamaan jokaiselle solmulle kopio suuresta syötetiedostosta tehokkaalla tavalla. Spark yrittää myös jakaa lähetysmuuttujia käyttämällä tehokkaita lähetysalgoritmeja viestintäkustannusten alentamiseksi.

Tarkistuskohdat: Tarkistuskohdat ovat samanlaisia ​​kuin pelaamisen tarkistuspisteet. He tekevät sen toimimaan 24/7 ja tekevät siitä joustavan vikojen suhteen, jotka eivät liity sovelluslogiikkaan.


Kuva:
Tarkistuskohteiden ominaisuudet

Käytä tapaus - Twitter-mielipiteen analyysiä

Nyt kun olemme ymmärtäneet Spark Streamingin keskeiset käsitteet, ratkaiskaamme tosielämän ongelma Spark Streamingin avulla.

Ongelma: Suunnitella Twitter Sentiment Analysis System, jossa täytämme reaaliaikaiset mielipiteet kriisinhallinnalle, palvelujen sopeuttamiselle ja kohdemarkkinoinnille.

Sentimenttianalyysin sovellukset:

  • Ennusta elokuvan menestys
  • Ennusta poliittisen kampanjan menestys
  • Päätä sijoittaa tiettyyn yritykseen
  • Kohdennettu mainonta
  • Tarkista tuotteet ja palvelut

Spark-suoratoiston toteutus:

Etsi Pseudokoodi alla:

// Tuo tarvittavat paketit Spark-ohjelmaan. Tuo org.apache.spark.streaming. {Seconds, StreamingContext} tuo org.apache.spark.SparkContext._ ... tuo java.io.File object twitterSentiment {def main (args : Taulukko [Merkkijono]) {if (argument. Pituus<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 =>Hae tekstiä hashtageista} // RDD-muunnos käyttämällä sortBy-toimintoa ja sitten kartoittamalla funktiotagit.countByValue () .foreachRDD {rdd => val now = Hanki jokaisen twiittilevyn nykyinen aika .sortBy (_._ 2). Kartta (x => (x, nyt)) // Lähdön tallentaminen osoitteeseen ~ / twitter / directory .saveAsTextFile (s '~ / twitter / $ now')} // DStream-muunnos suodatin- ja karttatoimintojen avulla val tweets = stream.filter {t => val-tunnisteet = t. Split On Spaces .filter (_. StartsWith ('#')). Muunna pieniksi kirjaimiksi 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 () // Tallennamme tuotoksemme ~ / tiedostojen nimillä, jotka alkavat kuten twitters data.saveAsTextFiles ('~ / twitters', '20000') ssc. start () ssc.awaitTermination ()}}

Tulokset:

Seuraavat ovat tulokset, jotka näytetään Eclipse IDE: ssä, kun suoritetaan Twitter Sentiment Streaming -ohjelmaa.

Kuva: Sentimenttianalyysin tulos Eclipse IDE: ssä

Kuten näemme kuvakaappauksesta, kaikki twiitit luokitellaan positiivisiksi, neutraaleiksi ja negatiivisiksi twiittien sisällön perusteella.

Twiitien sentimenttien tulosteet tallennetaan kansioihin ja tiedostoihin niiden luomisajan mukaan. Tämä lähtö voidaan tarvittaessa tallentaa paikalliseen tiedostojärjestelmään tai HDFS: ään. Lähtöhakemisto näyttää tältä:

Kuva: Tulostuskansiot twitter-projektikansiossamme

Täältä, Twitter-hakemistosta, löydämme Twitter-käyttäjien käyttäjätunnukset sekä aikaleiman jokaiselle tweetille alla esitetyllä tavalla:

Kuva: Tulostustiedosto, joka sisältää Twitter-käyttäjänimet ja aikaleiman

Nyt kun olemme saaneet Twitter-käyttäjänimet ja aikaleiman, katsokaamme päähakemistoon tallennettuja tunteita ja twiittejä. Tässä jokaista twiittiä seuraa tunteen tunne. Tätä tallennettua mielipidettä käytetään edelleen yritysten valtavan määrän oivallusten analysointiin.

Kuva: Tulostustiedosto, joka sisältää twiittejä ja tunteita

Säätökoodi:

Anna meidän nyt muokata koodiamme hieman saadaksemme mielipiteitä tietyistä hashtageista (aiheista). Tällä hetkellä Yhdysvaltain presidentti Donald Trump on etenemässä uutiskanavien ja sosiaalisen median kautta. Tarkastellaan avainsanaan ”liittyviä mielipiteitä” Valtti ”.

Kuva: Sentimenttianalyysin tekeminen twiiteistä ‘Trump’ -avainsanalla

Eteenpäin:

Kuten olemme havainneet Sentiment Analysis -esittelystämme, voimme poimia tiettyjen aiheiden mielipiteitä aivan kuten 'Trumpille'. Vastaavasti Sentiment Analyticsia voidaan käyttää kriisinhallinnassa, palvelujen sopeuttamisessa ja kohdemarkkinoinnissa yrityksissä ympäri maailmaa.

Spark Streaming for Sentiment Analysis -yritystä käyttävät yritykset ovat soveltaneet samaa lähestymistapaa saavuttaakseen seuraavat tavoitteet:

  1. Paranna asiakaskokemusta
  2. Kilpailuedun saaminen
  3. Liiketoimintatiedon hankkiminen
  4. Menettävän tuotemerkin elvyttäminen

Tämän avulla olemme päässeet tämän loppuun Spark Streaming -opastus blogi. Tähän mennessä sinun on hankittu vankka käsitys siitä, mikä Spark Streaming on. Twitter-mielipiteen analyysin käyttötapaus antaa sinulle tarvittavan varmuuden työskennellä tulevissa projekteissa, joita kohtaat Spark Streamingissa ja Apache Sparkissa. Harjoittelu on avain minkä tahansa aiheen hallintaan, ja toivon, että tämä blogi on herättänyt sinussa tarpeeksi kiinnostusta tutkia lisää Apache Sparkista.

mitä java on java

Aluksi suosittelemme seuraavaa Edurekan Spark Streaming YouTube -opetusohjelmaa:

Kipinän suoratoisto | Twitter-mielipiteiden analyysi | Edureka

Tämä Spark Tutorialin videosarja tarjoaa täydellisen taustan komponenteille sekä tosielämän käyttötapauksia, kuten Twitter-mielipiteen analyysi , NBA-pelien ennustusanalyysi , Maanjäristyksen havaitsemisjärjestelmä , Lentotietojen analyysi ja Elokuvien suositusjärjestelmät . Olemme suunnitelleet henkilökohtaiset käyttötapaukset tarjoamaan kaikenkattavaa asiantuntemusta kaikille, jotka käyttävät koodia.

Onko sinulla kysymys meille? Mainitse se kommenttiosassa ja otamme sinuun yhteyttä aikaisintaan. Jos haluat oppia Sparkia ja rakentaa uraa Sparkin toimialueella ja rakentaa asiantuntemusta laajamittaisen tietojenkäsittelyn suorittamiseksi RDD: n, Spark Streamingin, SparkSQL: n, MLlibin, GraphX: n ja Scalan kanssa tosielämän käyttötapauksilla, tutustu interaktiiviseen live verkossa tässä, jonka mukana tulee 24 * 7 -tuki, joka ohjaa sinua koko oppimisjaksosi ajan.