Výukový program pre Spark Streaming - analýza sentimentu pomocou Apache Spark



Tento blog Spark Streaming vám predstaví Spark Streaming, jeho vlastnosti a komponenty. Zahŕňa projekt Sentiment Analysis pomocou Twitteru.

Spark Streaming je rozšírenie základného rozhrania Spark API, ktoré umožňuje škálovateľné vysokovýkonné a na chyby odolné streamové spracovanie živých dátových tokov. Spark Streaming možno použiť na streamovanie živých údajov a spracovanie môže prebiehať v reálnom čase. Stále rastúca základňa používateľov spoločnosti Spark Streaming pozostáva z mien domácností, ako sú Uber, Netflix a Pinterest.

Pokiaľ ide o analýzu údajov v reálnom čase, poskytuje Spark Streaming jednu platformu na prijímanie údajov na rýchle a živé spracovanie a dokazuje vaše schopnosti v rovnakom.Prostredníctvom tohto blogu vám predstavím túto novú zaujímavú doménu Spark Streaming a prejdeme si celý prípad použitia, Analýza sentimentu na Twitteri pomocou Spark Streamingu.





Nasledujú témy, ktorým sa tento blog bude venovať:

  1. Čo je to streamovanie?
  2. Prečo Spark Streaming?
  3. Prehľad streamovania iskier
  4. Funkcie streamovania iskier
  5. Základy streamovania iskier
    5.1 Kontext streamovania
    5.2 DStream
    5.3 Vyrovnávacia pamäť / vytrvalosť
    5.4 Akumulátory, vysielané premenné a kontrolné body
  6. Prípad použitia - analýza sentimentu na Twitteri

Čo je to streamovanie?

Streamovanie údajov je technika prenosu údajov, aby ich bolo možné spracovávať ako nepretržitý a nepretržitý tok údajov. Streamovacie technológie sú s rastom internetu čoraz dôležitejšie.



Čo je streamovanie - streamovanie iskier - EdurekaObrázok: Čo je to streamovanie?

Prečo Spark Streaming?

Spark Streaming môžeme použiť na streamovanie údajov v reálnom čase z rôznych zdrojov, ako sú Twitter, Burza cenných papierov a geografické systémy, a na vykonávanie výkonných analýz, ktoré pomáhajú podnikom.

Obrázok: Prečo Spark Streaming?



Prehľad streamovania iskier

Streamovanie iskier sa používa na spracovanie streamovaných údajov v reálnom čase. Je to užitočný doplnok k jadru Spark API. Spark Streaming umožňuje vysokovýkonné a na chyby odolné streamové spracovanie živých dátových tokov.

Obrázok: Prúdy v streamovaní Spark

Jednotkou základného prúdu je DStreamčo je v podstate séria RDD na spracovanie údajov v reálnom čase.

Funkcie streamovania iskier

  1. Mierka: Streamovanie Spark sa dá ľahko rozšíriť na stovky uzlov.
  2. Rýchlosť: To anízku latenciu.
  3. Odolnosť proti chybám: Spark má schopnosť naprefektívne sa zotaviť z neúspechov.
  4. Integrácia: Spark sa integruje do dávkového spracovania a spracovania v reálnom čase.
  5. Obchodné analýzy: Streamovanie iskier je una sledovanie správania zákazníkov, ktoré je možné použiť pri obchodnej analýze.

Pracovný postup streamovania iskier

Pracovný postup Spark Streaming má štyri fázy na vysokej úrovni. Prvým je streamovanie údajov z rôznych zdrojov. Týmito zdrojmi môžu byť streamovacie zdroje údajov, ako sú Akka, Kafka, Flume, AWS alebo Parquet, ktoré umožňujú streamovanie v reálnom čase. Druhý typ zdrojov zahŕňa HBase, MySQL, PostgreSQL, Elastic Search, Mongo DB a Cassandra pre statické / dávkové streamovanie. Akonáhle k tomu dôjde, môže byť Spark použitý na vykonanie strojového učenia na dátach prostredníctvom jeho API MLlib. Ďalej sa Spark SQL používa na vykonávanie ďalších operácií s týmito údajmi. Nakoniec je možné streamovaný výstup uložiť do rôznych systémov na ukladanie údajov, ako sú HBase, Cassandra, MemSQL, Kafka, Elastic Search, HDFS a lokálny súborový systém.

Obrázok: Prehľad streamovania iskier

Základy streamovania iskier

  1. Kontext streamovania
  2. DStream
  3. Ukladanie do vyrovnávacej pamäte
  4. Akumulátory, vysielané premenné a kontrolné body

Kontext streamovania

Kontext streamovania spotrebúva prúd dát v Sparku. Registruje Zadajte DStream vyrobiť a Prijímač objekt. Je to hlavný vstupný bod pre funkčnosť Spark. Spark poskytuje niekoľko predvolených implementácií zdrojov, ako sú Twitter, Akka Actor a ZeroMQ, ktoré sú prístupné z kontextu.

Objekt StreamingContext je možné vytvoriť z objektu SparkContext. SparkContext predstavuje pripojenie k klastru Spark a je možné ho použiť na vytvorenie RDD, akumulátorov a vysielacích premenných v tomto klastri.

import org.apache.spark._ import org.apache.spark.streaming._ var ssc = nový StreamingContext (sc, sekundy (1))

DStream

Diskretizovaný stream (DStream) je základná abstrakcia poskytovaná službou Spark Streaming. Ide o nepretržitý tok údajov. Prijíma sa zo zdroja údajov alebo zo spracovaného dátového toku generovaného transformáciou vstupného toku.

tutorial vizuálneho štúdia pre začiatočníkov

Obrázok: Extrahovanie slov z aplikácie Input DStream

Interne predstavuje DStream súvislá séria RDD a každý RDD obsahuje údaje z určitého intervalu.

Vstupné streamy DS: Vstupné streamy DS sú DStreamy predstavujúce tok vstupných údajov prijatých zo zdrojov streamovania.

Obrázok: Prijímač odosiela dáta na vstupný DStream, kde každá dávka obsahuje RDD

Každý vstup DStream je spojený s objektom Receiver, ktorý prijíma údaje zo zdroja a ukladá ich do Sparkovej pamäte na spracovanie.

Transformácie v aplikácii DStreams:

Akákoľvek operácia použitá na DStream sa premieňa na operácie na základných RDD. Transformácie umožňujú modifikovať údaje zo vstupného DStream podobne ako RDD. Program DStreams podporuje mnoho transformácií, ktoré sú k dispozícii na bežných diskoch Spark RDD.

Obrázok: Transformácie DStream

Nasledujú niektoré populárne transformácie v aplikácii DStreams:

mapa ( func )mapa ( func ) vráti nový DStream prechodom každého prvku zdrojového DStream cez funkciu func.
flatMap ( func )flatMap ( func ) je podobný mape ( func ) ale každú vstupnú položku je možné namapovať na 0 alebo viac výstupných položiek a vráti nový DStream prechodom každého zdrojového prvku cez funkciu func.
filter ( func )filter ( func ) vráti nový DStream výberom iba záznamov zdrojového DStream, na ktorom func vracia sa pravda.
znížiť ( func )znížiť ( func ) vráti nový DStream jednoprvkových RDD agregáciou prvkov v každom RDD zdrojového DStreamu pomocou funkcie func .
skupinaBy ( func )skupinaBy ( func ) vráti nové RDD, ktoré je v zásade tvorené kľúčom a zodpovedajúcim zoznamom položiek tejto skupiny.

Výstupné streamy DS:

Výstupné operácie umožňujú vytlačenie údajov DStream do externých systémov, ako sú databázy alebo súborové systémy. Výstupné operácie spúšťajú skutočné vykonávanie všetkých transformácií DStream.

Obrázok: Výstupné operácie na DStreamoch

Ukladanie do vyrovnávacej pamäte

DSprúdi umožniť vývojárom ukladať do vyrovnávacej pamäte / pretrvávať údaje streamu v pamäti. Je to užitočné, ak sa dáta v DStreame budú počítať viackrát. To je možné vykonať pomocou pretrvávať () metóda na DStream.

Obrázok: Ukladanie do medzipamäte do 2 uzlov

Pre vstupné toky, ktoré prijímajú údaje cez sieť (napríklad Kafka, Flume, Sockets atď.),predvolená úroveň perzistencie je nastavená na replikáciu údajov do dvoch uzlov kvôli odolnosti voči chybám.

Akumulátory, vysielané premenné a kontrolné body

Akumulátory: Akumulátory sú premenné, ktoré sa pridávajú iba prostredníctvom asociatívnej a komutatívnej operácie. Používajú sa na realizáciu počítadiel alebo súčtov. Sledovanie akumulátorov v používateľskom rozhraní môže byť užitočné na pochopenie pokroku v prebiehajúcich fázach. Spark natívne podporuje číselné akumulátory. Môžeme vytvárať pomenované alebo nepomenované akumulátory.

Premenné vysielania: Vysielacie premenné dovoľte programátorovi uchovať premennú iba na čítanie uloženú v medzipamäti na každom stroji namiesto toho, aby ste jej kópiu dodávali s úlohami. Môžu byť použité na efektívne poskytnutie každého uzla kópie veľkého súboru vstupných údajov. Spark sa tiež pokúša distribuovať vysielané premenné pomocou efektívnych vysielacích algoritmov na zníženie nákladov na komunikáciu.

Kontrolné body: Kontrolné body sú podobné ako kontrolné body v hrách. Umožňujú jeho fungovanie 24/7 a zvyšujú jeho odolnosť voči zlyhaniam nesúvisiacim s logikou aplikácie.


Obrázok:
Vlastnosti kontrolných bodov

ako vytvoriť reláciu v

Prípad použitia - analýza sentimentu na Twitteri

Teraz, keď sme pochopili základné koncepty Spark Streaming, vyriešime problém v reálnom živote pomocou Spark Streaming.

Vyhlásenie o probléme: Navrhnúť systém analýzy sentimentu na Twitteri, v ktorom naplníme sentiment v reálnom čase pre krízové ​​riadenie, prispôsobenie služieb a cieľový marketing.

Aplikácie analýzy sentimentu:

  • Predpovedajte úspešnosť filmu
  • Predvídajte úspech politickej kampane
  • Rozhodnite sa, či investovať do určitej spoločnosti
  • Cielená reklama
  • Skontrolujte produkty a služby

Implementácia streamovania iskry:

Pseudokód nájdete nižšie:

// Import potrebných balíkov do programu Spark import org.apache.spark.streaming. {Seconds, StreamingContext} import org.apache.spark.SparkContext._ ... import java.io.File objekt 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 =>Získajte text z transformácie Hashtags} // RDD pomocou sortBy a potom namapujte funkciu tags.countByValue () .foreachRDD {rdd => val now = Získajte aktuálny čas každého Tweetu rdd .sortBy (_._ 2) .map (x => (x, now)) // Uloženie nášho výstupu na ~ / twitter / adresár .saveAsTextFile (s '~ / twitter / $ now')} // Transformácia DStream pomocou filtračných a mapových funkcií val tweets = stream.filter {t => val tagy = t. Split On Spaces .filter (_. StartsWith ('#')). Prevod na malé písmená 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 () // Ukladáme náš výstup na ~ / s názvami súborov začínajúcich ako twitters data.saveAsTextFiles ('~ / twitters', '20 000') ssc. start () ssc.awaitTermination ()}}

Výsledky:

Nasledujú výsledky, ktoré sa zobrazujú v Eclipse IDE počas spustenia programu Streamovanie twitterov.

Obrázok: Výstup analýzy sentimentu v prostredí Eclipse IDE

Ako vidíme na snímke obrazovky, všetky tweety sú kategorizované na pozitívne, neutrálne a negatívne podľa sentimentu obsahu tweetov.

Výstup sentimentu tweetov sa ukladá do priečinkov a súborov podľa času, kedy boli vytvorené. Tento výstup je možné podľa potreby uložiť do lokálneho súborového systému alebo HDFS. Výstupný adresár vyzerá takto:

Obrázok: Výstupné priečinky v našom priečinku projektu „twitter“

Tu, v priečinku twitter, nájdeme užívateľské mená používateľov Twitteru spolu s časovou značkou pre každý tweet, ako je uvedené nižšie:

Obrázok: Výstupný súbor obsahujúci používateľské mená na Twitteri s časovou pečiatkou

Teraz, keď máme používateľské mená a časové značky na Twitteri, pozrime sa na sentimenty a tweety uložené v hlavnom adresári. Po každom tweete nasleduje sentimentálna emócia. Tento uložený sentiment sa ďalej používa na analýzu obrovského množstva poznatkov spoločností.

Obrázok: Výstupný súbor obsahujúci tweety s pocitmi

Vylepšovací kód:

Teraz trochu upravme náš kód, aby sme získali sentiment pre konkrétne hashtagy (témy). V súčasnosti Donald Trump, prezident Spojených štátov, sleduje trendy v spravodajských kanáloch a online sociálnych médiách. Pozrime sa na nálady spojené s kľúčovým slovom „ Trump „.

Obrázok: Analýza sentimentu na tweetoch s kľúčovým slovom „Trump“

Pohyb vpred:

reťazec k dátumu previesť v

Ako sme videli z našej demonštrácie Analýza sentimentu, môžeme extrahovať nálady k konkrétnym témam rovnako, ako sme to robili pre „Trump“. Spoločnosť Sentiment Analytics môže spoločnosti z celého sveta podobne použiť v krízovom manažmente, úprave služieb a cieľovom marketingu.

Spoločnosti využívajúce Spark Streaming na analýzu sentimentu uplatnili rovnaký prístup na dosiahnutie týchto cieľov:

  1. Zvyšovanie zákazníckej skúsenosti
  2. Získanie konkurenčnej výhody
  3. Získanie Business Intelligence
  4. Oživenie stratovej značky

Týmto sme sa dostali na koniec Výukový program pre Spark Streaming blog. Teraz ste už určite správne pochopili, čo je Spark Streaming. Prípad použitia analýzy sentimentu na Twitteri vám dá potrebnú istotu pri práci na akýchkoľvek budúcich projektoch, s ktorými sa stretnete v programoch Spark Streaming a Apache Spark. Cvičenie je kľúčom k zvládnutiu akéhokoľvek predmetu a dúfam, že tento blog vo vás vyvolal dostatočný záujem na ďalšie skúmanie Apache Spark.

Na úvod vám odporúčame nasledujúci tutoriál Spark Streaming YouTube od spoločnosti Edureka:

Streamovanie iskier | Príklad analýzy sentimentu na Twitteri Edureka

Táto séria videí v Spark Tutorial poskytuje kompletné pozadie komponentov spolu s prípadmi použitia v reálnom živote, ako napr Analýza sentimentu na Twitteri , Analýza predikcie hry NBA , Systém detekcie zemetrasenia , Analýza letových údajov a Systémy odporúčaní filmov . Prípady použitia sme osobne navrhli tak, aby sme všetkým, ktorí používajú tento kód, poskytovali komplexné odborné znalosti.

Máte na nás otázku? Uveďte to prosím v sekcii komentárov a my sa vám ozveme najskôr. Ak sa chcete naučiť Spark a budovať si kariéru v doméne Spark a budovať odborné znalosti na vykonávanie rozsiahleho spracovania údajov pomocou RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​a Scala s prípadmi použitia v reálnom živote, pozrite si naše interaktívne, živé online tu, ktorá je dodávaná s podporou 24 * 7, ktorá vás prevedie celým vzdelávacím obdobím.