Transformasi Stateful dengan Windowing di Spark Streaming



Posting blog ini membahas transformasi stateful dengan windowing di Spark Streaming. Pelajari semua tentang melacak data di seluruh kelompok menggunakan D-Streams yang lengkap.

Kontribusi Prithviraj Bose

Di blog ini kita akan membahas konsep windowing dari transformasi stateful Apache Spark.





Apa itu transformasi stateful?

Streaming Spark menggunakan arsitektur batch mikro di mana data yang masuk dikelompokkan ke dalam batch mikro yang disebut Discretized Streams (DStreams) yang juga berfungsi sebagai abstraksi pemrograman dasar. DStream secara internal memiliki Set Data Terdistribusi Tangguh (RDD) dan sebagai hasil dari transformasi dan tindakan RDD standar ini dapat dilakukan.



Dalam streaming jika kita memiliki kasus penggunaan untuk melacak data di seluruh batch maka kita membutuhkan DStreams yang lengkap.

Misalnya, kami dapat melacak interaksi pengguna di situs web selama sesi pengguna atau kami dapat melacak hashtag twitter tertentu sepanjang waktu dan melihat pengguna mana di seluruh dunia yang membicarakannya.

xml transformasi di informatica dengan contoh

Jenis transformasi state-ful.



DStreams lengkap terdiri dari dua jenis - pelacakan berbasis jendela dan pelacakan sesi penuh.

Untuk pelacakan berstatus semua data yang masuk harus diubah menjadi pasangan nilai-kunci sehingga status kunci dapat dilacak di seluruh kelompok. Ini adalah prasyarat.

Selanjutnya kita juga harus mengaktifkan checkpointing, sebuah konsep yang akan kita diskusikan di blog nanti.

> Pelacakan berbasis jendela

Dalam pelacakan berbasis jendela, kumpulan yang masuk dikelompokkan dalam interval waktu, yaitu kumpulan grup setiap 'x' detik. Perhitungan lebih lanjut pada kelompok ini dilakukan dengan menggunakan interval slide.

Misalnya jika interval jendela = 3 detik dan interval slide = 2 detik, maka semua data yang masuk akan dikelompokkan dalam batch setiap 3 detik dan perhitungan pada batch ini akan dilakukan setiap 2 detik. Atau kita dapat mengatakan, lakukan penghitungan setiap 2 detik pada kumpulan yang tiba dalam 3 detik terakhir.

spark-streaming-dstream-window

Pada diagram di atas kita melihat bahwa batch yang masuk dikelompokkan setiap 3 unit waktu (interval jendela) dan perhitungan dilakukan setiap 2 unit waktu (interval slide).
Catatan: Tidak seperti Apache Flink, Apache Spark tidak memiliki konsep jendela berjatuhan, semua jendela dapat digeser.

API

API populer untuk transformasi berbasis jendela adalah

PairDStreamFunctions.reduceByKeyAndWindow .

Ada beberapa versi yang kelebihan muatan dari API ini, mari kita lihat versi yang memiliki parameter paling banyak. Setelah penjelasan ini, versi lain yang kelebihan muatan dari API ini seharusnya sudah cukup jelas.

Mengembalikan: DStream yang diubah [(K, V)]

reduceFunc : Fungsi pengurangan asosiatif.

invReduceFunc : Kebalikan dari fungsi pengurangan di atas. Ini diperlukan untuk komputasi batch masuk dan keluar yang efisien. Dengan bantuan fungsi ini, nilai batch yang keluar dikurangkan dari nilai akumulasi fungsi pengurangan di atas. Misalnya, jika kita menghitung jumlah nilai yang masuk untuk masing-masing kunci maka untuk kelompok keluar kita akan mengurangi nilai untuk masing-masing kunci (asalkan ada di kelompok saat ini, abaikan saja).

windowDuration : Satuan waktu untuk mengelompokkan kelompok, ini harus berupa kelipatan dari interval kelompok.

slideDuration : Satuan waktu untuk komputasi, ini harus berupa kelipatan interval batch. partisi : Pemartisi yang akan digunakan untuk menyimpan DStream yang dihasilkan. Untuk informasi lebih lanjut tentang partisi, baca ini .

filterFunc : Fungsi untuk memfilter pasangan kunci-nilai yang sudah tidak berlaku lagi, misalnya jika kami tidak mendapatkan pembaruan untuk kunci untuk suatu saat kami mungkin ingin menghapusnya.

Ini dia program untuk menghitung kata-kata yang berasal dari aliran soket. Kami telah menggunakan versi kelebihan beban dari fungsi di atas dengan interval jendela 4 detik dan interval slide 2 detik.

Di blog saya berikutnya, saya akan menulis tentang pelacakan sesi penuh dan pos pemeriksaan.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar dan kami akan menghubungi Anda kembali.

Posting terkait:

Caching Terdistribusi dengan Variabel Siaran