Spark Streaming apmācība - noskaņojuma analīze, izmantojot Apache Spark



Šis Spark Streaming emuārs iepazīstinās jūs ar Spark Streaming, tā funkcijām un komponentiem. Tas ietver Sentiment Analysis projektu, izmantojot Twitter.

Spark Streaming ir Spark pamata API paplašinājums, kas ļauj mērogojamu, augstas caurlaidspējas un kļūdu izturīgu straumi apstrādāt tiešās datu plūsmas. Spark Streaming var izmantot tiešraides datu straumēšanai, un apstrāde var notikt reāllaikā. Spark Streaming nepārtraukti pieaugošā lietotāju bāze sastāv no tādiem mājsaimniecības vārdiem kā Uber, Netflix un Pinterest.

Runājot par reāllaika datu analīzi, Spark Streaming nodrošina vienotu platformu datu uzņemšanai ātrai un tiešai apstrādei un pierāda jūsu prasmi tajā pašā.Izmantojot šo emuāru, es jūs iepazīstināšu ar šo jauno aizraujošo Spark Streaming domēnu, un mēs izskatīsim pilnīgu lietošanas gadījumu, Twitter noskaņojuma analīze izmantojot Spark Streaming.





Šajā emuārā tiks aplūkotas šādas tēmas:

  1. Kas ir straumēšana?
  2. Kāpēc straumēšana straumē?
  3. Spark Streaming pārskats
  4. Dzirksteles straumēšanas funkcijas
  5. Dzirksteles straumēšanas pamati
    5.1 Straumēšanas konteksts
    5.2 DStream
    5.3 Kešatmiņa / noturība
    5.4 Akumulatori, apraides mainīgie un kontrolpunkti
  6. Izmantojiet gadījumu - čivināt noskaņojuma analīzi

Kas ir straumēšana?

Datu straumēšana ir datu pārsūtīšanas paņēmiens, lai tos varētu apstrādāt kā vienmērīgu un nepārtrauktu straumi. Straumēšanas tehnoloģijas kļūst arvien nozīmīgākas, pieaugot internetam.



Kas ir straumēšana - dzirksteļu straumēšana - EdurekaAttēls: Kas ir straumēšana?

Kāpēc straumēšana straumē?

Mēs varam izmantot Spark Streaming, lai reāllaikā straumētu datus no dažādiem avotiem, piemēram, Twitter, akciju tirgus un ģeogrāfiskajām sistēmām, un veiktu efektīvu analīzi, lai palīdzētu uzņēmumiem.

Attēls: Kāpēc straumēšana straumē?



Spark Streaming pārskats

Dzirksteļu straumēšana tiek izmantots reāllaika straumēšanas datu apstrādei. Tas ir noderīgs papildinājums galvenajai Spark API. Spark Streaming ļauj apstrādāt tiešraides datu plūsmas ar lielu caurlaidspēju un kļūdu toleranci.

Attēls: Straumes straumēšanas straumē

Pamata straumes vienība ir DStreamkas būtībā ir RDD sērija reāllaika datu apstrādei.

Dzirksteles straumēšanas funkcijas

  1. Mērogošana: Spark Streaming var viegli mērogot simtiem mezglu.
  2. Ātrums: Tas azems latentums.
  3. Kļūdu tolerance: Dzirkstelei piemīt spēja edusmīgi atgūties no neveiksmēm.
  4. Integrācija: Spark integrējas ar sērijveida un reāllaika apstrādi.
  5. Biznesa analīze: Spark Streaming ir uLai izsekotu klientu uzvedību, ko var izmantot biznesa analīzē.

Spark Streaming darbplūsma

Spark Streaming darbplūsmai ir četri augsta līmeņa posmi. Pirmais ir straumēt datus no dažādiem avotiem. Šie avoti var būt straumēšanas datu avoti, piemēram, Akka, Kafka, Flume, AWS vai Parkets reāllaika straumēšanai. Otrā veida avoti ietver HBase, MySQL, PostgreSQL, Elastic Search, Mongo DB un Cassandra statiskai / sērijveida straumēšanai. Kad tas notiks, Spark var izmantot, lai veiktu mašīnmācīšanos datiem, izmantojot tā MLlib API. Turklāt, lai veiktu turpmākas darbības ar šiem datiem, tiek izmantota Spark SQL. Visbeidzot, straumēšanas izvadi var saglabāt dažādās datu glabāšanas sistēmās, piemēram, HBase, Cassandra, MemSQL, Kafka, Elastic Search, HDFS un vietējā failu sistēmā.

Attēls: Spark Streaming pārskats

Dzirksteles straumēšanas pamati

  1. Straumēšanas konteksts
  2. DStream
  3. Kešatmiņa
  4. Akumulatori, apraides mainīgie un kontrolpunkti

Straumēšanas konteksts

Straumēšanas konteksts patērē datu plūsmu Spark. Tas reģistrē Ievada DStream ražot a Uztvērējs objekts. Tas ir galvenais Spark funkcionalitātes ieejas punkts. Spark nodrošina vairākus noklusējuma avotus, piemēram, Twitter, Akka Actor un ZeroMQ, kas ir pieejami no konteksta.

StreamingContext objektu var izveidot no SparkContext objekta. SparkContext apzīmē savienojumu ar Spark kopu, un to var izmantot, lai izveidotu RDD, akumulatorus un apraides mainīgos šajā kopā.

importēt org.apache.spark._ importēt org.apache.spark.streaming._ var ssc = jauns StreamingContext (sc, sekundes (1))

DStream

Diskretizētā straume (DStream) ir pamata abstrakcija, ko nodrošina Spark Streaming. Tā ir nepārtraukta datu plūsma. Tas tiek saņemts no datu avota vai apstrādātas datu plūsmas, kas ģenerēta, pārveidojot ievades straumi.

Attēls: Vārdu izgūšana no ievades DStream

Iekšēji DStream attēlo nepārtraukta RDD sērija, un katrā RDD ir dati no noteikta intervāla.

Ievades DStreams: Ievada DStreams ir DStream, kas attēlo no straumēšanas avotiem saņemto ievades datu plūsmu.

Attēls: Uztvērējs nosūta datus uz ievades DStream, kur katra pakete satur RDD

Katra ievade DStream ir saistīta ar objektu Receiver, kas saņem datus no avota un glabā tos Spark atmiņā apstrādei.

Pārveidojumi DStreams:

Jebkura darbība, kas lietota DStream, nozīmē operācijas ar pamatā esošajiem RDD. Transformācijas ļauj modificēt ievades DStream datus līdzīgi kā RDD. DStreams atbalsta daudzas transformācijas, kas pieejamas parastajos Spark RDD.

Attēls: DStream pārveidojumi

Tālāk ir sniegtas dažas populāras DStreams pārveidošanas:

karte ( func )karte ( func ) atgriež jaunu DStream, izlaižot katru avota DStream elementu caur funkciju func.
flatMap ( func )flatMap ( func ) ir līdzīgs kartei ( func ), bet katru ievades vienumu var piesaistīt 0 vai vairākiem izvades vienumiem un atgriež jaunu DStream, izlaižot katru avota elementu caur funkciju func.
filtrs ( func )filtrs ( func ) atgriež jaunu DStream, atlasot tikai tā avota DStream ierakstus, kurā func atgriežas taisnība.
samazināt ( func )samazināt ( func ) atgriež jaunu viena elementa RDD DStream, apkopojot elementus katrā avota DStream RDD, izmantojot funkciju func .
groupBy ( func )groupBy ( func ) atgriež jauno RDD, kuru pamatā veido atslēga un atbilstošais šīs grupas vienumu saraksts.

Izejas DStreams:

Izvades darbības ļauj DStream datus izstumt ārējās sistēmās, piemēram, datu bāzēs vai failu sistēmās. Izvades darbības izraisa visu DStream transformāciju faktisko izpildi.

Attēls: Izvades operācijas DStreams

Kešatmiņa

D straumi ļauj izstrādātājiem kešatmiņā saglabāt straumes datus atmiņā. Tas ir noderīgi, ja dati DStream tiks aprēķināti vairākas reizes. To var izdarīt, izmantojot pastāvēt () metodi DStream.

Attēls: Kešatmiņa 2 mezglos

Ievades straumēm, kas datus saņem tīklā (piemēram, Kafka, Flume, Sockets utt.),noklusējuma noturības līmenis ir iestatīts, lai datus atkārtotu divos mezglos, lai nodrošinātu kļūdu toleranci.

Akumulatori, apraides mainīgie un kontrolpunkti

Akumulatori: Akumulatori ir mainīgie, kas tiek pievienoti tikai ar asociatīvu un komutatīvu darbību. Tos izmanto, lai ieviestu skaitītājus vai summas. Akumulatoru izsekošana lietotāja saskarnē var būt noderīga, lai izprastu skriešanas posmu gaitu. Spark dabiski atbalsta ciparu akumulatorus. Mēs varam izveidot nosauktus vai nenosauktus akumulatorus.

Apraides mainīgie: Apraides mainīgie ļauj programmētājam saglabāt tikai lasāmu mainīgo kešatmiņā katrā mašīnā, nevis nosūtīt tā kopiju ar uzdevumiem. Tos var izmantot, lai katram mezglam efektīvi piešķirtu lielas ievades datu kopijas kopiju. Spark arī mēģina izplatīt apraides mainīgos, izmantojot efektīvus apraides algoritmus, lai samazinātu komunikācijas izmaksas.

Kontroles punkti: Kontrolpunkti ir līdzīgi kontrolpunktiem spēļu jomā. Viņi liek tai darboties visu diennakti un padara to izturīgu pret kļūmēm, kas nav saistītas ar lietojumprogrammas loģiku.


Attēls:
Kontrolpunktu iezīmes

Izmantojiet gadījumu - čivināt noskaņojuma analīzi

Tagad, kad esam sapratuši dzirksteles straumēšanas pamatjēdzienus, atrisināsim reālās dzīves problēmu, izmantojot Spark Streaming.

Problēmas izklāsts: Lai izveidotu čivināt noskaņojuma analīzes sistēmu, kur mēs reāllaikā veidojam krīzes pārvarēšanas, pakalpojumu pielāgošanas un mārketinga mērķus.

Noskaņojuma analīzes pielietojums:

  • Paredziet filmas panākumus
  • Paredzēt politiskās kampaņas panākumus
  • Izlemiet, vai ieguldīt noteiktā uzņēmumā
  • Mērķtiecīga reklāma
  • Pārskatiet produktus un pakalpojumus

Spark Streaming ieviešana:

Zemāk atrodiet pseidokodu:

// Importējiet nepieciešamās pakotnes programmā Spark, importējiet org.apache.spark.streaming. {Seconds, StreamingContext} importējiet org.apache.spark.SparkContext._ ... importējiet java.io.File objektu twitterSentiment {def main (args : Masīvs [virkne]) {ja (argument. Garums<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 =>Iegūt tekstu no Hashtags} // RDD transformācijas, izmantojot sortBy un pēc tam kartējot funkciju tags.countByValue () .foreachRDD {rdd => val now = Iegūstiet katra čivināt rdd .sortBy (_._ 2) pašreizējo laiku. (X => (x, tagad)) // Mūsu izejas saglabāšana vietnē ~ / twitter / directory .saveAsTextFile (s '~ / twitter / $ now')} // DStream transformācija, izmantojot filtru un kartes funkcijas val tweets = stream.filter {t => val tagi = t. Split On Spaces .filter (_. StartsWith ('#')). Pārvērst par mazajiem burtiem 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 () // Mūsu izejas saglabāšana pie ~ / ar failu nosaukumiem, kas sākas tāpat kā twitters data.saveAsTextFiles ('~ / twitters', '20000') ssc. start () ssc.awaitTermination ()}}

Rezultāti:

Šie ir rezultāti, kas tiek parādīti Eclipse IDE, palaižot programmu Twitter Sentiment Streaming.

Attēls: Noskaņojuma analīzes rezultāts Eclipse IDE

Kā redzam ekrānuzņēmumā, visi tvīti tiek iedalīti pozitīvajos, neitrālajos un negatīvajos atbilstoši tvītu satura noskaņojumam.

Tweets sentimentu izeja tiek saglabāta mapēs un failos atbilstoši to izveides laikam. Šo izvadi pēc vajadzības var saglabāt vietējā failu sistēmā vai HDFS. Izvades direktorijs izskatās šādi:

Attēls: Izejas mapes mūsu projekta twitter mapē

Šeit, twitter direktorijā, mēs varam atrast Twitter lietotāju lietotājvārdus, kā arī katra čivināt laika zīmogu, kā parādīts zemāk:

Attēls: Izejas fails, kurā ir Twitter lietotājvārdi ar laika zīmogu

Tagad, kad esam ieguvuši čivināt lietotājvārdus un laika zīmogu, apskatīsim galvenajā direktorijā saglabātos sentimentus un tvītus. Katram tvītam seko noskaņojuma emocija. Šo saglabāto noskaņojumu tālāk izmanto, lai analizētu plašu uzņēmumu ieskatu.

ko skeneris dara java

Attēls: Izejas fails, kurā ir tvīti ar noskaņojumu

Koda pielāgošana:

Ļaujiet mums nedaudz pārveidot savu kodu, lai iegūtu viedokļus par konkrētām atsaucēm (tēmām). Pašlaik ASV prezidents Donalds Tramps popularizē ziņu kanālus un tiešsaistes sociālos medijus. Apskatīsim ar atslēgvārdu saistītās noskaņas trumpis “.

Attēls: Noskaņojuma analīzes veikšana Tweets ar ‘Trump’ atslēgvārdu

Kustība uz priekšu:

Kā mēs redzējām no mūsu Sentiment Analysis demonstrācijas, mēs varam iegūt konkrētu tēmu noskaņu tāpat kā to darījām attiecībā uz Trump. Līdzīgi Sentiment Analytics var izmantot krīžu pārvarēšanā, pakalpojumu pielāgošanā un mērķa mārketingā visā pasaulē.

Uzņēmumi, kuri izmanto Spark Streaming Sentiment Analysis, ir izmantojuši to pašu pieeju, lai sasniegtu:

  1. Klientu pieredzes uzlabošana
  2. Konkurences priekšrocību iegūšana
  3. Biznesa inteliģences iegūšana
  4. Zaudējoša zīmola atdzīvināšana

Ar to mēs esam nonākuši līdz beigām Dzirksteles straumēšanas apmācība emuārs. Tagad jums noteikti ir jāiegūst laba izpratne par to, kas ir Spark Streaming. Twitter noskaņojuma analīzes izmantošanas gadījums dos jums nepieciešamo pārliecību, lai strādātu pie visiem turpmākajiem projektiem, ar kuriem sastopaties Spark Streaming un Apache Spark. Prakse ir jebkura priekšmeta apguves atslēga, un es ceru, ka šis emuārs ir radījis jums pietiekamu interesi, lai turpinātu izpētīt Apache Spark.

Iesākumam iesakām šo YouTube lietotnes Spark Streaming apmācību:

Dzirksteles straumēšana Twitter noskaņojuma analīzes piemērs Edureka

Šī Spark Tutorial video sērija sniedz pilnīgu priekšstatu par komponentiem, kā arī ar reālās dzīves lietojumiem, piemēram, Twitter noskaņojuma analīze , NBA spēļu prognozēšanas analīze , Zemestrīču atklāšanas sistēma , Lidojuma datu analīze un Filmu ieteikumu sistēmas . Mēs esam personīgi izstrādājuši lietošanas gadījumus tā, lai ikvienam, kurš izmanto kodu, būtu visaptveroša pieredze.

Vai mums ir jautājums? Lūdzu, pieminējiet to komentāru sadaļā, un mēs ar jums sazināsimies ātrāk. Ja vēlaties iemācīties Spark un veidot karjeru Spark jomā un iegūt zināšanas, lai veiktu liela mēroga datu apstrādi, izmantojot RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​un Scala ar reālās dzīves lietojumiem, apskatiet mūsu interaktīvo tiešraidi tiešsaistē šeit, kas nāk ar 24 * 7 atbalstu, kas palīdzēs jums visu mācību laiku.