Stavové transformace s vytvářením oken ve streamování jisker



Tento blogový příspěvek pojednává o stavových transformacích s vytvářením oken ve Spark Streaming. Naučte se vše o sledování dat napříč dávkami pomocí stavových D-streamů.

Přispěl Prithviraj Bose

V tomto blogu probereme koncept vytváření oken stavových transformací Apache Spark.





jak vytvořit třídu singleton

Co je stavová transformace?

Streamování Spark využívá mikro dávkovou architekturu, kde jsou příchozí data seskupena do mikro dávek zvaných Discretized Streams (DStreams), která slouží také jako základní abstrakce programování. DStreams interně mají Resilient Distributed Datasets (RDD) a jako výsledek tohoto standardního RDD lze provádět transformace a akce.



Při streamování, pokud máme případ použití ke sledování dat napříč dávkami, potřebujeme stavové DStreams.

Můžeme například sledovat interakci uživatele na webu během relace uživatele nebo můžeme sledovat konkrétní hashtag twitteru v čase a zjistit, kteří uživatelé z celého světa o tom mluví.

Typy plně funkční transformace.



State-ful DStreams jsou dvou typů - sledování založené na okně a sledování celé relace.

Pro stavové sledování by měla být všechna příchozí data transformována na páry klíč – hodnota, aby bylo možné sledovat klíčové stavy napříč dávkami. To je podmínka.

Dále bychom měli také povolit kontrolní bodování, což je koncept, o kterém budeme diskutovat v pozdějších blogech.

> Sledování na základě okna

Při sledování založeném na oknech jsou příchozí dávky seskupeny v časových intervalech, tj. Seskupovat dávky každých „x“ sekund. Další výpočty těchto dávek se provádějí pomocí intervalů snímků.

Například pokud interval okna = 3 sekundy a interval posunutí = 2 sekundy, budou všechna příchozí data seskupena v dávkách každé 3 sekundy a výpočty v těchto dávkách budou probíhat každé 2 sekundy. Alternativně můžeme říci, dělat výpočty každé 2 sekundy na dávkách, které dorazily za poslední 3 sekundy.

spark-streaming-dstream-window

Ve výše uvedeném diagramu vidíme, že příchozí dávky jsou seskupeny každé 3 jednotky času (interval okna) a výpočty jsou prováděny každé 2 jednotky času (interval snímků).
Poznámka: Na rozdíl od Apache Flink nemá Apache Spark koncept omílání okna, všechna okna jsou posuvná.

OHEŇ

Populární API pro okenní transformace je

PairDStreamFunctions.reduceByKeyAndWindow .

Existuje několik přetížených verzí tohoto API, podívejme se na tu, která má největší počet parametrů. Po tomto vysvětlení by měl být zbytek přetížených verzí tohoto API samozřejmý.

Vrací: Transformovaný DStream [(K, V)]

reduceFunc : Asociativní redukční funkce.

invReduceFunc : Inverzní funkce výše uvedené redukce. To je nutné pro efektivní výpočet příchozích a odchozích dávek. Pomocí této funkce se odečte hodnota dávek, které jsou odchozí, od kumulované hodnoty výše uvedené redukční funkce. Například pokud počítáme součet příchozích hodnot pro příslušné klíče, pak pro odchozí dávky odečteme hodnoty pro příslušné klíče (za předpokladu, že jsou přítomny v aktuální dávce, jinak ignorujeme).

windowDuration : Časové jednotky pro seskupení dávek, toto by měl být násobek intervalu dávky.

slideDuration : Jednotky času pro výpočet, měl by to být násobek dávkového intervalu. oddíly : Oddělovač, který se má použít k uložení výsledného DStream. Pro více informací o rozdělení si přečtěte tento .

filterFunc : Funkce k odfiltrování vypršených párů klíč – hodnota, tzn. Například pokud pro klíč někdy nedostaneme aktualizaci, možná ji budeme chtít odstranit.

Tady je program spočítat slova přicházející z proudu zásuvky. Použili jsme přetíženou verzi výše uvedené funkce s intervalem okna 4 s a intervalem posouvání 2 s.

V mém dalším blogu budu psát o plném sledování relací a kontrolních bodech.

Máte na nás dotaz? Uveďte to prosím v sekci komentáře a my se vám ozveme.

Související příspěvky:

Distribuované mezipaměti s proměnnými vysílání