Spark Streaming Tutorial - Pagsusuri sa Saloobin Gamit ang Apache Spark



Ang Spark Streaming blog na ito ay magpapakilala sa iyo ng Spark Streaming, ang mga tampok at bahagi nito. Nagsasama ito ng isang proyekto sa Pagsusuri ng Sentimyento gamit ang Twitter.

Ang Spark Streaming ay isang extension ng pangunahing Spark API na nagbibigay-daan sa nasusukat, mataas na throughput, mapagparaya sa pagproseso ng stream ng mga live na stream ng data. Maaaring gamitin ang Spark Streaming upang mag-stream ng live na data at maaaring mangyari ang pagproseso sa real time. Ang patuloy na lumalaking baseng gumagamit ng Spark Streaming ay binubuo ng mga pangalan ng sambahayan tulad ng Uber, Netflix at Pinterest.

Pagdating sa Real Time Data Analytics, ang Spark Streaming ay nagbibigay ng isang solong platform upang ingest data para sa mabilis at live na pagproseso at pinatunayan ang iyong husay sa pareho.Sa pamamagitan ng blog na ito, ipakikilala ko sa iyo ang bagong nakagaganyak na domain ng Spark Streaming at dadaan kami sa isang kumpletong kaso ng paggamit, Pagsusuri sa Sentimen ng Twitter gamit ang Spark Streaming.





Ang mga sumusunod ay ang mga paksa na saklaw sa blog na ito:

  1. Ano ang Streaming?
  2. Bakit Spark Streaming?
  3. Pangkalahatang-ideya ng Spark Streaming
  4. Mga Tampok ng Spark Streaming
  5. Mga Punong Pondo ng Pag-Streaming
    5.1 Streaming Context
    5.2 DStream
    5.3 Pag-cache / Pagpupumilit
    5.4 Mga Accumulator, Variable ng Broadcast at Checkpoint
  6. Gumamit ng Kaso - Pagsusuri sa Sentimento ng Twitter

Ano ang Streaming?

Ang Data Streaming ay isang pamamaraan para sa paglilipat ng data upang maaari itong maproseso bilang isang matatag at tuluy-tuloy na stream. Ang mga teknolohiya ng streaming ay lalong nagiging mahalaga sa paglago ng Internet.



Ano ang Streaming - Spark Streaming - EdurekaLarawan: Ano ang Streaming?

Bakit Spark Streaming?

Maaari naming gamitin ang Spark Streaming upang mag-stream ng real-time na data mula sa iba't ibang mga mapagkukunan tulad ng Twitter, Stock Market at Geographic System at magsagawa ng malakas na analytics upang matulungan ang mga negosyo.

Larawan: Bakit Spark Streaming?



Pangkalahatang-ideya ng Spark Streaming

Spark Streaming ay ginagamit para sa pagproseso ng real-time na data ng streaming. Ito ay isang kapaki-pakinabang na karagdagan sa pangunahing Spark API. Nagbibigay-daan ang Spark Streaming ng high-throughput at mapagparaya sa pagproseso ng stream ng mga live na stream ng data.

Larawan: Mga stream sa Spark Streaming

Ang pangunahing yunit ng stream ay DStreamna karaniwang isang serye ng mga RDD upang maproseso ang real-time na data.

Mga Tampok ng Spark Streaming

  1. Pagsukat: Ang Spark Streaming ay madaling masukat sa daan-daang mga node.
  2. Bilis: Ito amagnanakaw ng mababang latency.
  3. Fault Tolerance: May kakayahan ang Spark emahusay na mabawi mula sa mga pagkabigo.
  4. Pagsasama: Isinasama ang Spark sa pagproseso ng batch at real-time.
  5. Pagsusuri sa Negosyo: Ang Spark Streaming ay uupang subaybayan ang pag-uugali ng mga customer na maaaring magamit sa pagtatasa ng negosyo.

Spark Streaming Workflow

Ang Spark Streaming workflow ay may apat na antas ng mataas na antas. Ang una ay upang mag-stream ng data mula sa iba't ibang mga mapagkukunan. Ang mga mapagkukunang ito ay maaaring maging streaming ng mga mapagkukunan ng data tulad ng Akka, Kafka, Flume, AWS o Parquet para sa real-time streaming. Ang pangalawang uri ng mapagkukunan ay may kasamang HBase, MySQL, PostgreSQL, Elastic Search, Mongo DB at Cassandra para sa static / batch streaming. Kapag nangyari ito, maaaring magamit ang Spark upang maisagawa ang Machine Learning sa data sa pamamagitan ng MLlib API. Dagdag dito, ang Spark SQL ay ginagamit upang maisagawa ang karagdagang pagpapatakbo sa data na ito. Sa wakas, ang streaming output ay maaaring maiimbak sa iba't ibang mga sistema ng imbakan ng data tulad ng HBase, Cassandra, MemSQL, Kafka, Elastic Search, HDFS at lokal na file system.

Larawan: Pangkalahatang-ideya Ng Spark Streaming

Mga Punong Pondo ng Pag-Streaming

  1. Streaming Context
  2. DStream
  3. Pag-cache
  4. Mga Accumulator, Variable ng Broadcast at Checkpoint

Streaming Context

Streaming Context kumonsumo ng isang stream ng data sa Spark. Nagrerehistro ito ng I-input ang DStream upang makabuo ng a Tagatanggap bagay Ito ang pangunahing punto ng pagpasok para sa pagpapaandar ng Spark. Nagbibigay ang Spark ng isang bilang ng mga default na pagpapatupad ng mga mapagkukunan tulad ng Twitter, Akka Actor at ZeroMQ na naa-access mula sa konteksto.

Ang isang streaming na object ng StreamingContext ay maaaring malikha mula sa isang SparkContext na bagay. Ang isang SparkContext ay kumakatawan sa koneksyon sa isang Spark cluster at maaaring magamit upang lumikha ng mga RDD, nagtitipon at mga variable ng pag-broadcast sa kumpol na iyon.

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

DStream

Discretized Stream Ang (DStream) ay ang pangunahing abstraction na ibinigay ng Spark Streaming. Ito ay isang tuluy-tuloy na stream ng data. Natanggap ito mula sa isang mapagkukunan ng data o isang naprosesong stream ng data na nabuo sa pamamagitan ng pagbabago ng input stream.

Larawan: Ang pagkuha ng mga salita mula sa isang Input DStream

Sa panloob, ang isang DStream ay kinakatawan ng isang tuluy-tuloy na serye ng mga RDD at ang bawat RDD ay naglalaman ng data mula sa isang tiyak na agwat.

Mga input ng DStreams: Mga input ng DStreams ang mga DStream na kumakatawan sa stream ng input data na natanggap mula sa mga mapagkukunan ng streaming.

ano ang pojo based programming model

Larawan: Nagpapadala ang Tagatanggap ng data sa Input DStream kung saan naglalaman ang bawat Batch ng mga RDD

Ang bawat input na DStream ay naiugnay sa isang bagay ng Receiver na tumatanggap ng data mula sa isang mapagkukunan at iniimbak ito sa memorya ng Spark para sa pagproseso.

Mga pagbabago sa DStreams:

Ang anumang operasyon na inilapat sa isang DStream ay isinasalin sa mga pagpapatakbo sa mga kalakip na RDD. Pinapayagan ng mga pagbabago ang data mula sa input na DStream na mabago katulad ng mga RDD. Sinusuportahan ng DStreams ang marami sa mga pagbabagong magagamit sa normal na Spark RDD.

Larawan: Mga Pagbabagong DStream

Ang mga sumusunod ay ilan sa mga tanyag na pagbabago sa DStreams:

mapa ( humihingal )mapa ( humihingal ) nagbabalik ng isang bagong DStream sa pamamagitan ng pagpasa sa bawat elemento ng pinagmulan ng DStream sa pamamagitan ng isang pagpapaandar humihingal
flatMap ( humihingal )flatMap ( humihingal ) ay katulad sa mapa ( humihingal ) ngunit ang bawat input item ay maaaring mapa sa 0 o higit pang mga item sa output at nagbabalik ng isang bagong DStream sa pamamagitan ng pagpasa sa bawat elemento ng mapagkukunan sa pamamagitan ng isang pagpapaandar humihingal
filter ( humihingal )filter ( humihingal ) nagbabalik ng isang bagong DStream sa pamamagitan ng pagpili lamang ng mga tala ng pinagmulan ng DStream kung saan humihingal nagbabalik totoo.
bawasan ( humihingal )bawasan ( humihingal ) nagbabalik ng isang bagong DStream ng mga solong-elemento RDD sa pamamagitan ng pagsasama-sama ng mga elemento sa bawat RDD ng pinagmulan ng DStream gamit ang isang function humihingal .
groupBy ( humihingal )groupBy ( humihingal ) ibabalik ang bagong RDD na karaniwang binubuo ng isang susi at kaukulang listahan ng mga item ng pangkat na iyon.

Mga Output DStreams:

Pinapayagan ng mga pagpapatakbo ng output ang data ng DStream na itulak sa mga panlabas na system tulad ng mga database o file system. Ang mga pagpapatakbo ng output ay nagpapalitaw ng aktwal na pagpapatupad ng lahat ng mga pagbabago sa DStream.

Larawan: Mga Pagpapatakbo ng Output sa DStreams

Pag-cache

DStreams payagan ang mga developer na i-cache / magpatuloy ang data ng stream sa memorya. Kapaki-pakinabang ito kung ang data sa DStream ay makalkula ng maraming beses. Maaari itong magawa gamit ang magpumilit() pamamaraan sa isang DStream.

Larawan: Pag-cache sa 2 Node

Para sa mga input stream na tumatanggap ng data sa network (tulad ng Kafka, Flume, Sockets, atbp.),ang antas ng default na pagtitiyaga ay itinakda upang magtiklop ng data sa dalawang mga node para sa tolerance ng kasalanan.

Mga Accumulator, Variable ng Broadcast at Checkpoint

Mga accumulator: Mga accumulator ay mga variable na idinagdag lamang sa pamamagitan ng isang nauugnay at komutatibong operasyon. Ginagamit ang mga ito upang magpatupad ng mga counter o kabuuan. Ang pagsubaybay sa mga nagtitipon sa UI ay maaaring maging kapaki-pakinabang para sa pag-unawa sa pag-unlad ng mga tumatakbo na yugto. Native na sinusuportahan ng Spark ang mga nagtitipong bilang. Maaari kaming lumikha ng pinangalanan o hindi pinangalanan na mga nagtitipon.

Mga Variable ng Broadcast: Mga variable ng broadcast payagan ang programmer na panatilihin ang isang read-only variable na naka-cache sa bawat machine kaysa sa pagpapadala ng isang kopya nito sa mga gawain. Maaari silang magamit upang bigyan ang bawat node ng isang kopya ng isang malaking input dataset sa isang mahusay na pamamaraan. Sinusubukan din ng Spark na ipamahagi ang mga variable ng pag-broadcast gamit ang mahusay na mga algorithm sa pag-broadcast upang mabawasan ang gastos sa komunikasyon.

Mga checkpoint: Mga checkpoint ay katulad ng mga checkpoint sa paglalaro. Ginagawa nilang patakbo ito ng 24/7 at gawin itong matatag sa mga pagkabigo na walang kaugnayan sa lohika ng application.


Larawan:
Mga tampok ng Checkpoint

Gumamit ng Kaso - Pagsusuri sa Sentimento ng Twitter

Ngayon na naintindihan na namin ang mga pangunahing konsepto ng Spark Streaming, lutasin natin ang isang problema sa totoong buhay gamit ang Spark Streaming.

Pahayag ng Suliranin: Upang mag-disenyo ng isang Twitter Sentiment Analysis System kung saan pinapuno namin ang mga real-time na damdamin para sa pamamahala ng krisis, pagsasaayos ng serbisyo at pag-target sa marketing.

Mga Aplikasyon ng Pagsusuri sa Sentimento:

  • Hulaan ang tagumpay ng isang pelikula
  • Hulaan ang tagumpay sa kampanya sa politika
  • Magpasya kung mamuhunan sa isang tiyak na kumpanya
  • Naka-target na advertising
  • Suriin ang mga produkto at serbisyo

Pagpapatupad ng Spark Streaming:

Hanapin ang Pseudo Code sa ibaba:

// I-import ang mga kinakailangang package sa Spark Program import org.apache.spark.streaming. {Seconds, StreamingContext} import org.apache.spark.SparkContext._ ... import java.io.File object twitterSentiment {def main (args : Array [String]) {kung (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 =>Kumuha ng Teksto Mula Sa Hashtags} // RDD pagbabagong-anyo gamit ang sortBy at pagkatapos ay ang pag-andar ng map tags.countByValue () .foreachRDD {rdd => val now = Kumuha ng kasalukuyang oras ng bawat Tweet rdd .sortBy (_._ 2) .map (x => (x, ngayon)) // Sine-save ang aming output sa ~ / twitter / direktoryo .saveAsTextFile (s '~ / twitter / $ ngayon')} // DStream transformation using filter and map functions val tweets = stream.filter {t => val tags = t. Split On Spaces .filter (_. MagsisimulaWith ('#')). I-convert Sa Mababang Kaso tags.exists {x => true}} val data = tweets.map {status => val sentiment = SentimentAnalysisUtils.detectSentiment (status.getText) val tags = status.getHashtagEntities.map (_. GetText.toLowerCase) (status.getText, sentiment.toString, tagss.toString ())} data.print () // Sine-save ang aming output sa ~ / may mga filename na nagsisimula tulad ng twitters data.saveAsTextFiles ('~ / twitters', '20000') ssc. simulan () ssc.awaitTermination ()}}

Mga Resulta:

Ang mga sumusunod ay ang mga resulta na ipinapakita sa Eclipse IDE habang pinapatakbo ang programa ng Twitter Sentiment Streaming.

Larawan: Output ng Pagsusuri ng Saloobin sa Eclipse IDE

Tulad ng nakikita natin sa screenshot, ang lahat ng mga tweet ay ikinategorya sa Positive, Neutral at Negative ayon sa damdamin ng mga nilalaman ng mga tweet.

Ang output ng Sentiment ng mga Tweet ay nakaimbak sa mga folder at file ayon sa oras na nilikha ito. Ang output na ito ay maaaring maiimbak sa lokal na file system o HDFS kung kinakailangan. Ganito ang direktoryo ng output:

Larawan: Mga folder ng output sa loob ng aming folder ng proyekto na 'twitter'

Dito, sa loob ng direktoryo ng kaba, mahahanap natin ang mga username ng mga gumagamit ng Twitter kasama ang timestamp para sa bawat tweet tulad ng ipinakita sa ibaba:

Larawan: Output file na naglalaman ng mga username sa Twitter na may timestamp

Ngayon na nakuha na namin ang mga username sa Twitter at timestamp, tingnan natin ang Sentiment at mga tweet na nakaimbak sa pangunahing direktoryo. Dito, ang bawat tweet ay sinusundan ng damdamin ng damdamin. Ang sentimyentong ito na nakaimbak ay karagdagang ginagamit para sa pagsusuri ng isang malawak na bilang ng mga pananaw ng mga kumpanya.

Larawan: Output file na naglalaman ng mga tweet na may sentiment

Tweaking Code:

Ngayon, baguhin natin nang kaunti ang aming code upang makakuha ng mga sentiment para sa mga tukoy na hashtag (paksa). Sa kasalukuyan, si Donald Trump, ang Pangulo ng Estados Unidos ay nagte-trend sa mga channel ng balita at online na social media. Tingnan natin ang damdaming nauugnay sa keyword na ' magkatakata β€˜.

Larawan: Pagsasagawa ng Pagsusuri sa Sentimento sa mga Tweet na may 'Trump' Keyword

Tumuloy:

Tulad ng nakita natin mula sa aming demonstrasyon ng Sentiment Analysis, maaari naming makuha ang mga sentiment ng mga partikular na paksa tulad ng ginawa namin para sa 'Trump'. Katulad nito, ang Sentiment Analytics ay maaaring magamit sa pamamahala ng krisis, pagsasaayos ng serbisyo at pag-target sa marketing ng mga kumpanya sa buong mundo.

Ang mga kumpanya na gumagamit ng Spark Streaming para sa Sentiment Analysis ay naglapat ng parehong diskarte upang makamit ang mga sumusunod:

  1. Pagpapahusay ng karanasan sa customer
  2. Pagkuha ng mapagkumpitensyang kalamangan
  3. Pagkuha ng Katalinuhan sa Negosyo
  4. Muling pagbuhay ng isang nawawalang tatak

Sa pamamagitan nito, natapos na natin ito Spark Streaming Tutorial Blog. Sa ngayon, dapat ay nakakuha ka ng isang mahusay na pag-unawa sa kung ano ang Spark Streaming. Ang kaso sa paggamit ng Sentiment ng Twitter Sentiment ay magbibigay sa iyo ng kinakailangang kumpiyansa upang magtrabaho sa anumang mga proyekto sa hinaharap na nakasalubong mo sa Spark Streaming at Apache Spark. Ang pagsasanay ay ang susi sa mastering anumang paksa at inaasahan kong ang blog na ito ay lumikha ng sapat na interes sa iyo upang galugarin ang karagdagang sa Apache Spark.

Inirerekumenda namin ang sumusunod na Spark Streaming Tutorial sa YouTube mula sa Edureka upang magsimula sa:

Spark Streaming | Halimbawa ng Pagsusuri sa Sentimento ng Twitter | Edureka

Ang serye ng video na ito sa Spark Tutorial ay nagbibigay ng isang kumpletong background sa mga bahagi kasama ang mga kaso ng paggamit ng Real-Life tulad ng Pagsusuri sa Sentimen ng Twitter , Pagsusuri sa Pagtataya ng Laro sa NBA , Sistema ng Pagtuklas ng Lindol , Flight Data Analytics at Mga Sistema ng Rekumenda ng Pelikula . Personal naming dinisenyo ang mga kaso ng paggamit upang makapagbigay ng kadalasang kadalubhasaan sa sinumang nagpapatakbo ng code.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento at babalik kami sa iyo sa pinakamaagang. Kung nais mong malaman ang Spark at bumuo ng isang karera sa domain ng Spark at bumuo ng kadalubhasaan upang maisagawa ang malakihang Pagproseso ng Data gamit ang RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​at Scala na may mga Real-Life Life na kaso, tingnan ang aming interactive, live sa online dito, na may kasamang 24 * 7 na suporta upang gabayan ka sa buong panahon ng iyong pag-aaral.