Dataflow Pipeline Concepts

Pada modul ini kita akan membahas lebih mendalam Dataflow Concepts seperti:

  • ParDo Transforms
  • Aggregation Transforms
  • PCollections Characteristics
  • Core Beam Transforms

ParDo

Merupakan singkatan dari Parallel Do, adalah generic parallel processing transform.

Misalnya terdapat PCollection1 yang akan ditransform menjadi PCollection2. ParDo akan melakukan transformasi masing-masing element dari PCollection1 dimana hasilnya bisa menghasilkan 0 atau lebih element.

Aggregation

Adalah transform untuk menghasilkan 1 value dari multiple input. Dalam Apache Beam, aggregating semua element dalam common key atau common window. Kita dapat menggunakan user defined function untuk melakukan aggregation.

Pada gambar dibawah warna menunjukan key. Key yang sama akan diagregasi menggunakan Aggregation Transform.

PCollection Characteristic

Karekteristik PCollection:

  • Data types, element dari PCollection dapat menggunakan tipe data apa pun, namun setiap element harus menggunakan tipe data yang sama. Apache Beam SDK menyediakan data type yang umum digunakan dan custom encoding.
  • Acces, PCollection tidak mendukung random access terhadap element dan transform akan diaplikasikan masing-masing pada setiap element
  • Immutable, PCollection tidak bisa diubah. Setelah PCollection dibuat, element tidak bisa ditambahkan atau dibuang. Beam transform tidak akan mengubah PCollection, tetapi menggunakan PCollection sebagai input untuk menghasilkan PCollection output.
  • Boundedness, tidak ada limit jumlah element dalam PCollection. Namun dapat diatur memiliki limit element (Bounded) atau tidak memiliki limit (Unbounded).
  • Timestamp, setiap element memiliki timestamp yang inisalisasinya dilakukan saat pembuatan PCollection.

Core Beam Transform

Berikut Core Beam Transform yang tersedia:

  • ParDo, generic parallel transform. (lihat penjelasan diatas).
  • GroupByKey, processing collection berdasarkan key-value pairs. Memproses collection berdasarkan key unik.
  • CoGroupByKey, menggabungkan multiple PCollection, melakukan relational joint 2 atau lebih key-value PCollection dengan key yang sama.
  • Combine, untuk menggabungkan element. Perlu menyediakan fungsi yang berisi logika untuk melakukan combine. Fungsi harus associative dan commutative. Beam menyediakan fungsi combine seperti: sum, min dan max.
  • Flatten, merge multiple input PCollection menjadi satu logikal PCollection.
  • Partition, berguna untuk memisahkan element dalam PCollection.

Event Time

Event time adalah waktu dimana data element terbentuk dan menggunakan timestamp. Ketika element data berpindah dari satu point ke-point lainnya dalam pipeline, diperlukan waktu.

Processing time adalah timestamp ketika suatu process terjadi. Processing time lebih besar dari Event time.

Windowing

Misalnya Anda memiliki unbounded PCollection berupa stream of events. Windowing berguna untuk kondisi seperti ini. Windowing function digunakan pada PCollection, memungkinkan untuk mengelompokan element PCollection berdasarkan timestamp.

Tujuan dari windowing adalah mengelompokan atau mengagregasi untuk unbounded collection. Windowing akan melakukan grouping element dalam finite windows.

Window Types

  • Fixed, window yang paling sederhana, berupa konstan, non overlap time interval. Digunakan untuk durasi yang konstan contoh satu menit. Non overlap berarti setiap element dalam stream akan berada dalam satu window.
  • Sliding, juga menunjukan time interval dalam data stream, namun sliding window dapat overlap. Oleh karena itu sebuah element mungkin dapat masuk ke lebih dari satu window. Contohnya adalah menjalankan window dengan interval satu menit setiap sepuluh detik.
  • Session, Session window berbeda akan dibuat dalam stream yang terdapat interupsi event flow yang terjadi dalam periode waktu tertentu. Berguna untuk distributed data yang iregular.
  • Single Global, secara default, semua data dalam PCollection diassign kedalam single global window.

Windowing function diassign dengan menggunakan Window Transform. Anda juga perlu mengatur trigger ketika menggunakan windowing function.

Watermarks

Watermark adalah ambang batas yang menunjukkan kapan Dataflow mengharapkan semua data dalam window telah tiba. Jika data baru tiba dengan stempel waktu yang ada di jendela tetapi lebih lama dari watermark, data dianggap sebagai late data.

Dataflow melacak watermark karena hal berikut:

  • Data tidak dijamin tiba dalam urutan waktu atau pada interval yang dapat diprediksi.
  • Data events tidak dijamin muncul di pipeline dalam urutan yang sama seperti saat dibuat.

Triggers

Triggers menentukan kapan untuk mengeluarkan hasil aggregated ketika data tiba. Secara default, results ditampilkan ketika watermark melewati akhir window.

Anda dapat menggunakan Apache Beam SDK untuk membuat atau modifikasi triggers. Anda tidak dapat mengatur triggers untuk Dataflow SQL.

Apache Beam SDK dapat menyetel trigger yang beroperasi pada kombinasi dari kondisi berikut:

  • Event time, seperti yang ditunjukkan oleh timestamp pada setiap elemen data.
  • Processing time, yaitu waktu elemen data diproses pada setiap tahap tertentu dalam pipeline.
  • Jumlah elemen data dalam koleksi.

External Source

Beam Programming Model

Sharing is caring: