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:
- Mi az a streaming?
- Miért pont a Spark Streaming?
- Spark Streaming áttekintése
- Spark Streaming funkciók
- 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 - 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.
Á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
- Méretezés: A Spark Streaming könnyen több száz csomópontra képes méretezni.
- Sebesség: Ez aalacsony késleltetésűek.
- Hibatűrés: A Spark képes arra, hogy ekényelmesen felépülni a kudarcokból.
- Integráció: A Spark integrálódik a kötegelt és a valós idejű feldolgozással.
- Ü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
- Streaming kontextus
- DStream
- Gyorsítótár
- 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:
- Az ügyfélélmény növelése
- Versenyelőny megszerzése
- Üzleti intelligencia megszerzése
- 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.