Apache Spark DStream (Discretized Streams)

Čvn 1, 2021
admin

Sledujte nejnovější technologické trendy
Přidejte se k DataFlair na Telegramu!!

Cíl

Tento výukový kurz Sparku vás provede technologií Apache Spark DStream. Nejprve si ukážeme, co je to Spark Streaming, a poté, co je to DStream v Apache Spark. V tomto blogu o Apache Spark se také probírají diskrétní proudové operace, tj. bezstavové a stavové transformace, výstupní operace, vstupní DStream a přijímače.

Apache Spark DStream (diskrétní proudy)

Apache Spark DStream (diskrétní proudy)

Úvod do DStream v Apache Spark

V této části se seznámíme s DStream. Jaká je jeho úloha a jaká je jeho odpovědnost ve Spark Streaming? Zahrnuje, jaké všechny metody jsou inkludovány pro řešení živého streamování dat.
Jako rozšíření rozhraní API Apache Spark je Spark Streaming systém odolný proti chybám a s vysokou propustností. Zpracovává živý datový tok. Spark Streaming přijímá vstupní data z různých spolehlivých vstupních zdrojů, jako jsou Flume, HDFS a Kafka atd., a poté zpracovaná data odesílá do souborových systémů, databází nebo živých řídicích panelů. Vstupní datový proud je rozdělen na dávky dat a poté generuje konečný proud výsledků v dávkách.

Spark DStream (Discretized Stream) je základní abstrakcí Spark Streaming. DStream je spojitý proud dat. Přijímá vstupy z různých zdrojů, jako jsou Kafka, Flume, Kinesis nebo TCP sokety. Může to být také datový proud vytvořený transformací vstupního proudu. Ve své podstatě je DStream spojitý proud RDD (abstrakce Sparku). Každý RDD v DStreamu obsahuje data z určitého intervalu.

Každá operace nad DStreamem se vztahuje na všechny podkladové RDD. DStream pokrývá všechny podrobnosti. Pro pohodlí vývojáře poskytuje vysokoúrovňové rozhraní API. Výsledkem je, že Spark DStream usnadňuje práci se streamovanými daty.

Spark Streaming nabízí pro DStreamy stejné vlastnosti odolnosti proti chybám jako pro RDD. dokud je k dispozici kopie vstupních dat, může z nich přepočítat libovolný stav pomocí linie RDD. Ve výchozím nastavení Spark replikuje data na dvou uzlech. V důsledku toho Spark Streaming snese selhání jednoho pracovníka.

Apache Spark DStream Operations

Stejně jako RDD i Spark DStream podporuje dva typy operací: Transformace a výstupní operace-

i. Transformace

V DStreamu existují dva typy transformací:

  • Stateless Transformations
  • Stateful Transformations

a. Bezstavové transformace

Zpracování každé dávky není závislé na datech předchozích dávek. Bezstavové transformace jsou jednoduché transformace RDD. Aplikují se na každou dávku, což znamená každý RDD v DStreamu. Zahrnuje běžné transformace RDD, jako je map(), filter(), reduceByKey() atd.
Ačkoli se zdá, že se tyto funkce aplikují na celý proud, každý DStream je kolekcí mnoha RDD (dávek). V důsledku toho se každá bezstavová transformace vztahuje na každý RDD.

Bezstavové transformace jsou schopny kombinovat data z mnoha DStreamů v rámci každého časového kroku. Například DStreamy klíč/hodnota mají stejné transformace související se spojováním jako RDD – cogroup(), join(), leftOuterJoin() atd.

Tyto operace na DStreamech můžeme použít k provedení základních operací RDD na každé dávce.

Pokud jsou bezstavové transformace nedostatečné, DStreamy přicházejí s pokročilým operátorem nazvaným transform(). transform() umožňuje operovat na RDD uvnitř nich. Operátor transform() umožňuje působit na DStream libovolnou funkcí z RDD na RDD. Tato funkce se volá na každou dávku dat ve streamu a vytváří nový stream.

b. Stavové transformace

Použije data nebo mezivýsledky z předchozích dávek a vypočítá výsledek aktuální dávky. Stavové transformace jsou operace nad DStreamy, které sledují data v čase. Využívá tedy některá data z předchozích dávek k vytvoření výsledků pro novou dávku.

Dva hlavní typy jsou operace s oknem, které působí přes klouzavé okno časových úseků, a updateStateByKey(), která se používá ke sledování stavu napříč událostmi pro každý klíč (např. k sestavení objektu reprezentujícího každou uživatelskou relaci).

Podle tohoto odkazu si můžete podrobně přečíst transformace DStreamu s příklady.

ii. Výstupní operace

Jakmile získáme data po transformaci, provedou se nad nimi ve Spark Streaming výstupní operace. Po odladění našeho programu můžeme pomocí výstupní operace pouze uložit náš výstup. Některé z výstupních operací jsou print(), save() atd.. Operace save vyžaduje adresář, do kterého se má soubor uložit, a volitelnou příponu. Operace print() vezme prvních 10 prvků z každé dávky DStreamu a vytiskne výsledek.

Vstupní DStreamy a přijímače

Vstupní DStream je DStream představující proud vstupních dat ze streamovacího zdroje. Ke každému objektu vstupního DStreamu je přiřazen objekt Receiver (dok. Scala, dok. Java). Přijímá data ze zdroje a ukládá je do paměti Sparku ke zpracování.

Spark Streaming poskytuje dvě kategorie vestavěných streamovacích zdrojů:

  • Základní zdroje – Jedná se o zdroj, který je přímo dostupný v rozhraní StreamingContext API. Příklady: souborové systémy a soketová připojení.
  • Pokročilé zdroje – Tyto zdroje jsou dostupné pomocí dodatečných obslužných tříd, jako jsou Kafka, Flume, Kinesis. Vyžadují tedy propojení proti dalším závislostem.

Například:

  • Kafka: artefakt vyžadovaný pro Kafku je spark-streaming-kafka-0-8_2.11.
  • Flume: artefakt vyžadovaný pro Flume je dspark-streaming-flume_2.11.
  • Kinesis: artefakt vyžadovaný pro Kinesis je spark-streaming-kinesis-asl_2.11.

Vytváří mnoho vstupů DStream pro paralelní příjem více proudů dat. Vytváří více přijímačů, které přijímají mnoho datových proudů. Spark worker/executor je dlouhodobá úloha. Zabírá tedy jedno z jader, která se přidružují k aplikaci Spark Streaming. Je tedy nutné, aby aplikace Spark Streaming měla dostatek jader pro zpracování přijatých dat.

Závěr

Závěrem lze říci, že stejně jako RDD ve Sparku poskytuje Spark Streaming abstrakci vysoké úrovně známou jako DStream. DStream představuje spojitý proud dat. Interně je DStream zobrazen jako posloupnost RDD. Stejně jako RDD tedy můžeme DStream získat ze vstupních DStreamů jako Kafka, Flume atd. Také lze na stávající DStream aplikovat transformaci a získat tak nový DStream.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.