Valstybinės transformacijos su „Windowing“ srautu



Šiame tinklaraščio įraše aptariami reikšmingi pokyčiai su „Spark Streaming“. Sužinokite viską apie duomenų paketais stebėjimą naudojant valstybinius D srautus.

Prisidėjo Prithviraj Bose

Šiame tinklaraštyje aptarsime apgaulingą „Apache Spark“ valstybinių virsmų koncepciją.



Kas yra valstybinė transformacija?

„Spark“ sraute naudojama mikro paketinė architektūra, kai gaunami duomenys yra sugrupuoti į mikro paketus, vadinamus diskretizuotais srautais (DStreams), kurie taip pat yra pagrindinė programavimo abstrakcija. „DStreams“ viduje yra atsparūs paskirstyti duomenų rinkiniai (RDD), todėl dėl šio standarto galima atlikti transformacijas ir veiksmus.



kaip mesti dvigubai int java

Jei turime srautinio perdavimo atvejį, jei norite stebėti duomenų paketus, mums reikia būsenos „DStreams“.

Pavyzdžiui, galime stebėti vartotojo sąveiką svetainėje vartotojo seanso metu arba stebėti tam tikrą „Twitter“ žymą su grotelėmis ir pamatyti, kurie vartotojai visame pasaulyje apie tai kalba.

Valstybinės transformacijos tipai.



Valstybiniai „DStream“ yra dviejų tipų - stebėjimas pagal langą ir viso seanso stebėjimas.

Jei norite sekti būseną, visi gaunami duomenys turėtų būti paversti raktų ir reikšmių poromis, kad raktų būsenas būtų galima stebėti visomis paketais. Tai yra būtina sąlyga.

Be to, mes taip pat turėtume įgalinti kontrolinį tašką - koncepciją, kurią aptarsime vėlesniuose tinklaraščiuose.

> Langų stebėjimas

Stebint langą, gaunamos partijos sugrupuojamos laiko intervalais, t. Y. Grupuojamos kas „x“ sekundes. Tolesnis šių partijų skaičiavimas atliekamas naudojant skaidrės intervalus.

Pavyzdžiui, jei lango intervalas = 3 sekundės ir skaidrės intervalas = 2 sekundės, tada visi gaunami duomenys bus grupuojami į grupes kas 3 sekundes, o šių paketų skaičiavimai bus atliekami kas 2 sekundes. Arba galime sakyti: atlikite skaičiavimus kas 2 sekundes partijoms, kurios buvo gautos per paskutines 3 sekundes.

spark-streaming-dstream-window

Aukščiau pateiktoje diagramoje matome, kad gaunamos partijos yra grupuojamos kas 3 laiko vienetus (lango intervalas), o skaičiavimai atliekami kas 2 laiko vienetus (skaidrės intervalas).
Pastaba: Skirtingai nuo „Apache Flink“, „Apache Spark“ neturi „lango“ sąvokos, visi langai slenka.

UGNIS

Populiarus langų transformacijų API yra

„PairDStreamFunctions.reduceByKeyAndWindow“ .

Yra kelios perkrautos šios API versijos. Pažiūrėkime, kuri turi daugiausiai parametrų. Po šio paaiškinimo likusios perkrautos šios API versijos turėtų būti savaime suprantamos.

Grąžina: transformuotas DStream [(K, V)]

sumažintiFunc : Asociatyviosios redukcijos funkcija.

invReduceFunc : Atvirkštinė aukščiau nurodytų funkcijų sumažinimo funkcija Tai reikalinga norint efektyviai apskaičiuoti gaunamas ir siunčiamas partijas. Naudojant šią funkciją, iš minėtos sumažinimo funkcijos sukauptos vertės atimama siunčiamų partijų vertė. Pvz., Jei mes skaičiuojame atitinkamų raktų gaunamų verčių sumą, tada išeinančioms partijoms atimsime atitinkamų raktų vertes (jei jų nepaisoma).

langas Trukmė : Partijų grupavimo laiko vienetai, tai turėtų būti partijos intervalo kartotiniai.

slideDuration : Skaičiavimo laiko vienetai turėtų būti paketinio intervalo kartotiniai. pertvaros : Skaidinys, naudojamas saugoti gautą „DStream“. Norėdami gauti daugiau informacijos apie skaidymą, skaitykite tai .

filterFunc : Funkcija filtruoti pasibaigusias raktų ir verčių poras, t. Y., Pavyzdžiui, jei mes negauname rakto atnaujinimo, galbūt norime jį pašalinti.

Štai a programa suskaičiuoti žodžius, kylančius iš lizdo srauto. Mes naudojome perkrautą pirmiau nurodytos funkcijos versiją, kurios lango intervalas yra 4 sekundės ir skaidrės intervalas - 2 sekundės.

Kitame savo tinklaraštyje rašysiu apie viso seanso stebėjimą ir kontrolinį tašką.

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje ir mes su jumis susisieksime.

Susijusios žinutės:

Paskirstyta talpykla su transliavimo kintamaisiais