Spark Streaming oktatóanyag - Hangulatelemzés az Apache Spark segítségével



Ez a Spark Streaming blog megismerteti Önt a Spark Streaming szolgáltatással, annak jellemzőivel és összetevőivel. Tartalmaz egy Sentiment Analysis projektet a Twitter segítségével.

A Spark Streaming az alapvető Spark API kiterjesztése, amely lehetővé teszi az élő adatfolyamok skálázható, nagy áteresztőképességű, hibatűrő adatfolyam-feldolgozását. A Spark Streaming felhasználható az élő adatok streamelésére, és a feldolgozás valós időben történhet. A Spark Streaming folyamatosan növekvő felhasználói bázisa olyan háztartási nevekből áll, mint az Uber, a Netflix és a Pinterest.

Ami a valós idejű adatelemzést illeti, a Spark Streaming egyetlen platformot kínál az adatok gyors és élő feldolgozásához, valamint ugyanebben a képességedet bizonyítja.Ezen a blogon keresztül bemutatom Önnek a Spark Streaming új, izgalmas területét, és át fogunk menni egy teljes felhasználási eseten, Twitter hangulatelemzés a Spark Streaming használatával.





A következő témákkal foglalkozik ez a blog:

  1. Mi az a streaming?
  2. Miért pont a Spark Streaming?
  3. Spark Streaming áttekintése
  4. Spark Streaming funkciók
  5. Spark Streaming alapjai
    5.1 Streaming kontextus
    5.2 DStream
    5.3 Gyorsítótár / kitartás
    5.4 Akkumulátorok, Broadcast változók és ellenőrző pontok
  6. Használja a Case - Twitter Sentiment Analysis alkalmazást

Mi az a streaming?

Az adatfolyam egy olyan módszer az adatok továbbítására, amelyek folyamatos és folyamatos adatfolyamként dolgozhatók fel. A streaming technológiák az internet növekedésével egyre fontosabbá válnak.



Mi a streaming - Spark streaming - EdurekaÁbra: Mi az a streaming?

Miért pont a Spark Streaming?

A Spark Streaming segítségével valós idejű adatokat továbbíthatunk különböző forrásokból, például a Twitter, a tőzsde és a földrajzi rendszerek, és hatékony elemzéseket végezhetünk a vállalkozások számára.

Ábra: Miért pont a Spark Streaming?



Spark Streaming áttekintése

Spark Streaming valós idejű adatfolyam-adatfeldolgozásra szolgál. Hasznos kiegészítés az alapvető Spark API-hoz. A Spark Streaming lehetővé teszi az élő adatfolyamok nagy áteresztőképességű és hibatűrő adatfolyam-feldolgozását.

Ábra: Patakok a Spark Streamingben

Az alapvető adatfolyam egység a DStreamamely alapvetően RDD-k sora a valós idejű adatok feldolgozására.

Spark Streaming funkciók

  1. Méretezés: A Spark Streaming könnyen több száz csomópontra képes méretezni.
  2. Sebesség: Ez aalacsony késleltetésűek.
  3. Hibatűrés: A Spark képes arra, hogy ekényelmesen felépülni a kudarcokból.
  4. Integráció: A Spark integrálódik a kötegelt és a valós idejű feldolgozással.
  5. Üzleti elemzés: A Spark Streaming uAz ügyfelek viselkedésének nyomon követése az üzleti elemzés során.

Spark Streaming munkafolyamat

A Spark Streaming munkafolyamatnak négy magas szintű szakasza van. Az első az adatfolyam különböző forrásokból. Ezek a források olyan adatforrások lehetnek, mint az Akka, a Kafka, a Flume, az AWS vagy a valós idejű adatfolyam-továbbítás. A második típusú források közé tartozik a statikus / kötegelt streaming HBase, MySQL, PostgreSQL, Elastic Search, Mongo DB és Cassandra. Amint ez megtörténik, a Spark felhasználható az Machine Machine Learning végrehajtására az MLlib API-n keresztül. Ezenkívül a Spark SQL-t használják ezen adatok további műveleteinek végrehajtására. Végül a streaming kimenet különféle adattároló rendszerekben tárolható, például HBase, Cassandra, MemSQL, Kafka, Elastic Search, HDFS és a helyi fájlrendszer.

Ábra: A Spark Streaming áttekintése

Spark Streaming alapjai

  1. Streaming kontextus
  2. DStream
  3. Gyorsítótár
  4. Akkumulátorok, Broadcast változók és ellenőrző pontok

Streaming kontextus

Streaming kontextus adatfolyamot fogyaszt a Sparkban. Regisztrál egy Bemenet DStream előállítani a Vevő tárgy. Ez a Spark funkcionalitás fő belépési pontja. A Spark számos olyan alapértelmezett megvalósítást biztosít, mint a Twitter, az Akka Actor és a ZeroMQ, amelyek a kontextusból érhetők el.

StreamingContext objektum létrehozható SparkContext objektumból. A SparkContext a Spark-fürthöz való kapcsolatot jelenti, és felhasználható RDD-k, akkumulátorok és broadcast változók létrehozására az adott fürtön.

hogyan kell telepíteni a php-t a Windows 10 rendszerre
import org.apache.spark._ import org.apache.spark.streaming._ var ssc = new StreamingContext (sc, másodperc (1))

DStream

Discretizált adatfolyam (DStream) az alapvető absztrakció, amelyet a Spark Streaming nyújt. Ez egy folyamatos adatfolyam. Adatforrásból vagy feldolgozott adatfolyamból érkezik, amelyet a bemeneti adatfolyam átalakításával hoznak létre.

Ábra: Szavak kibontása egy Input DStreamből

Belsőleg a DStream-et folyamatos RDD-sorok képviselik, és minden RDD tartalmaz egy adott intervallum adatait.

Bemenet DStreams: Bemenet DStreams a D streamok jelentik a streaming forrásokból kapott bemeneti adatok áramát.

Ábra: A vevő adatokat küld az Input DStream-be, ahol minden köteg RDD-ket tartalmaz

Minden bemeneti DStream egy vevőobjektumhoz van társítva, amely az adatokat megkapja egy forrásból, és feldolgozás céljából a Spark memóriájában tárolja.

Transzformációk a DStreameken:

A DStream-en alkalmazott bármely művelet az alapul szolgáló RDD-k műveleteinek felel meg. Az átalakítások lehetővé teszik a bemenő DStream adatainak az RDD-khez hasonló módosítását. A DStreams számos, a normál Spark RDD-n elérhető transzformációt támogat.

Ábra: DStream transzformációk

Az alábbiakban felsoroljuk a DStreams népszerű átalakításait:

térkép( func )térkép( func ) új DStream-t ad vissza a forrás DStream minden elemének egy funkción keresztül történő átadásával func.
flatMap ( func )flatMap ( func ) hasonló a térképhez ( func ), de minden bemeneti elem hozzárendelhető 0 vagy több kimeneti elemhez, és új DStream-t ad vissza azáltal, hogy az egyes forráselemeket egy függvényen keresztül továbbítja func.
szűrő( func )szűrő( func ) új DStream-t ad vissza, csak a forrás DStream rekordjait választva func true-val tér vissza.
csökkenteni ( func )csökkenteni ( func ) egy egyelemű RDD-k új DStream-jét adja vissza, a függvény segítségével összesítve az elemeket a forrás DStream minden RDD-jében func .
csoportosít( func )csoportosít( func ) az új RDD-t adja vissza, amelyet alapvetően egy kulcs és annak a csoportnak a megfelelő elemlistája alkot.

Kimeneti D streamek:

A kimeneti műveletek lehetővé teszik a DStream adatainak kiszorítását külső rendszerekbe, például adatbázisokba vagy fájlrendszerekbe. A kimeneti műveletek kiváltják az összes DStream-transzformáció tényleges végrehajtását.

Ábra: Kimeneti műveletek a DStreameken

Gyorsítótár

DStreams lehetővé teszi a fejlesztők számára, hogy gyorsítótárba tárolják / megőrizzék a folyam adatait a memóriában. Ez akkor hasznos, ha a DStream adatait többször kiszámítják. Ez a kitartani () módszer egy DStream-en.

Ábra: Gyorsítótárazás 2 csomópontra

egy egész python fordított számjegyei

Bemeneti adatfolyamok esetén, amelyek adatokat fogadnak a hálózaton (például Kafka, Flume, Sockets stb.),az alapértelmezett perzisztencia szint úgy van beállítva, hogy az adatokat két csomópontra replikálja a hibatűrés érdekében.

Akkumulátorok, Broadcast változók és ellenőrző pontok

Akkumulátorok: Akkumulátorok olyan változók, amelyeket csak asszociatív és kommutatív művelettel adunk hozzá. Számlálók vagy összegek végrehajtására szolgálnak. A felhasználói felületen lévő akkumulátorok nyomon követése hasznos lehet a futási szakaszok előrehaladásának megértéséhez. A Spark natívan támogatja a numerikus akkumulátorokat. Készíthetünk elnevezett vagy meg nem nevezett akkumulátorokat.

Broadcast változók: Broadcast változók engedje meg a programozónak, hogy csak olvasható változót tároljon gyorsítótárban minden gépen, ahelyett, hogy annak egy példányát feladatokkal együtt szállítaná. Használhatók arra, hogy minden csomópontnak hatékonyan megadhassanak egy nagy bemeneti adatkészlet másolatát. A Spark emellett megkísérli a szórási változók terjesztését hatékony közvetítési algoritmusok segítségével a kommunikációs költségek csökkentése érdekében.

Ellenőrzőpontok: Ellenőrzőpontok hasonlóak a játékokban az ellenőrző pontokhoz. 24 órás futtatást tesznek lehetővé, és ellenállóvá teszik az alkalmazás logikájától független hibákkal szemben.


Ábra:
Az ellenőrzőpontok jellemzői

Használja a Case - Twitter Sentiment Analysis alkalmazást

Most, hogy megértettük a Spark Streaming alapfogalmait, oldjunk meg egy valós problémát a Spark Streaming segítségével.

Probléma nyilatkozat: Twitter-hangulatelemző rendszer megtervezése, ahol valós idejű véleményeket töltünk fel a válságkezeléssel, a szolgáltatások kiigazításával és a célmarketinggel kapcsolatban.

A hangulatelemzés alkalmazásai:

  • Megjósolni a film sikerét
  • Megjósolni a politikai kampány sikerét
  • Döntse el, hogy befektet-e egy bizonyos társaságba
  • Célzott reklámozás
  • Tekintse át a termékeket és szolgáltatásokat

Spark Streaming megvalósítása:

Az alábbi álkódot megtalálja:

// Importálja a szükséges csomagokat a Spark programba: import org.apache.spark.streaming. {Seconds, StreamingContext} import org.apache.spark.SparkContext._ ... import java.io.File object twitterSentiment {def main (args : [String] tömb) {if (arg. Hossz<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 =>Szöveg beolvasása a Hashtags} // RDD átalakításból a sortBy használatával, majd a tag.countByValue () függvény leképezésével. ForeachRDD {rdd => val now = Minden tweet rdd .sortBy (_._ 2) .map (x => aktuális ideje) lekérése (x, most)) // Kimenetünk mentése a ~ / twitter / könyvtárba .saveAsTextFile (s '~ / twitter / $ now')} // DStream transzformáció szűrő és térképfüggvények használatával val tweets = stream.filter {t => val tagek = t. Split On Spaces .filter (_. StartsWith ('#')). Átalakítás kisbetűkké (status.getText, sentiment.toString, tagss.toString ())} data.print () // Kimenetünk mentése ~ / / fájlnevekkel kezdődik, mint a twitters data.saveAsTextFiles ('~ / twitters', '20000') ssc. start () ssc.awaitTermination ()}}

Eredmények:

Az alábbiakban bemutatjuk azokat az eredményeket, amelyek az Eclipse IDE alkalmazásban jelennek meg a Twitter Sentiment Streaming program futtatása közben.

Ábra: Hangulatelemzési kimenet az Eclipse IDE-ben

Amint a képernyőképen láthatjuk, az összes tweetet pozitív, semleges és negatív kategóriába sorolják a tweetek tartalmának érzékenysége szerint.

A Tweetek Sentiments kimenete mappákba és fájlokba kerül, a létrehozásuknak megfelelő idő szerint. Ez a kimenet szükség esetén a helyi fájlrendszeren vagy a HDFS-en tárolható. A kimeneti könyvtár így néz ki:

Ábra: Kimeneti mappák a 'twitter' projekt mappánkban

Itt, a twitter könyvtárban, megtalálhatjuk a Twitter felhasználók felhasználóneveit, valamint az egyes tweetek időbélyegét, az alábbiak szerint:

Ábra: Kimeneti fájl, amely Twitter-felhasználóneveket tartalmaz időbélyeggel

Most, hogy megkaptuk a Twitter felhasználóneveket és időbélyeget, nézzük meg a főkönyvtárban tárolt érzelmeket és tweeteket. Itt minden tweetet az érzelem érzelme követ. Ezt a tárolt hangulatot tovább használják a vállalatok felismeréseinek sokaságának elemzésére.

Ábra: Kimeneti fájl, amely tweeteket tartalmaz érzelmekkel

Csípési kód:

állítsa be az osztály elérési útját a linuxban

Most módosítsunk egy kicsit a kódunkon, hogy megkapjuk a véleményeket bizonyos hashtagekről (témákról). Jelenleg Donald Trump, az Egyesült Államok elnöke a hírcsatornákon és az online közösségi médián keresztül mozog. Nézzük meg a ‘kulcsszóhoz kapcsolódó érzelmeket Adu ’.

Ábra: Hangulatelemzés elvégzése a Twitteren a ‘Trump’ kulcsszóval

Előre haladni:

Amint azt a Sentiment Analysis bemutatónkból láthattuk, úgy ki tudjuk vonni bizonyos témák hangulatát, mint a „Trump” esetében. Hasonlóképpen, a Sentiment Analytics alkalmazható válságkezelésben, a szolgáltatások kiigazításában és a célmarketingben világszerte működő vállalatok körében.

A Spark Streaming for Sentiment Analysis alkalmazó cégek ugyanazt a megközelítést alkalmazták a következők elérésére:

  1. Az ügyfélélmény növelése
  2. Versenyelőny megszerzése
  3. Üzleti intelligencia megszerzése
  4. A vesztes márka újjáélesztése

Ezzel ennek a végére értünk Spark Streaming bemutató blog. Mostanra biztosan megismerte a Spark Streaming jelentését. A Twitter Sentiment Analysis használati eset megadja a szükséges bizalmat ahhoz, hogy a jövőben a Spark Streamingben és az Apache Sparkban találkozhasson bármilyen projekten. A gyakorlat kulcsfontosságú bármely téma elsajátításához, és remélem, hogy ez a blog elegendő érdeklődést váltott ki irántad, hogy tovább vizsgálódj az Apache Spark-on.

Először a következő Spur Streaming YouTube oktatóanyagot javasoljuk az Edurekától:

Spark Streaming | Példa a Twitter-hangulatelemzésre | Edureka

Ez a Spark Tutorial videósorozat teljes hátteret nyújt az összetevőkhöz, valamint a való életben használt esetekhez, mint pl Twitter hangulatelemzés , NBA játékjóslás elemzése , Földrengés-észlelő rendszer , Repülési adatok elemzése és Filmajánló rendszerek . A felhasználási eseteket személyesen úgy alakítottuk ki, hogy átfogó szakértelmet nyújtsunk a kódot futtató bárki számára.

Van egy kérdésünk? Kérjük, említse meg a megjegyzések részben, és leghamarabb kapcsolatba lépünk Önnel. Ha meg akarja tanulni a Sparkot, és karriert szeretne kialakítani a Spark területén, valamint szakértelmet szerez az RDD, a Spark Streaming, a SparkSQL, az MLlib, a GraphX ​​és a Scala, valamint a valós élet használati eseteivel történő nagyméretű adatfeldolgozás végrehajtásához, nézze meg interaktív, élő online itt, 24 * 7 támogatással jár, amely végigvezeti Önt a tanulási időszak alatt.