Menggunakan sampling data untuk mengamati data pipeline

Dengan sampling data, Anda dapat mengamati data di setiap langkah pipeline Dataflow. Informasi ini dapat membantu Anda men-debug masalah pada pipeline, dengan menampilkan input dan output sebenarnya dalam tugas yang sedang berjalan atau sudah selesai.

Penggunaan sampling data mencakup hal berikut:

  • Selama pengembangan, lihat elemen apa yang dihasilkan di seluruh pipeline.

  • Jika pipeline menampilkan pengecualian, lihat elemen yang berkorelasi dengan pengecualian tersebut.

  • Saat melakukan proses debug, lihat output transformasi untuk memastikan output sudah benar.

  • Memahami perilaku pipeline tanpa perlu memeriksa kode pipeline.

  • Lihat elemen yang diambil sampelnya di lain waktu, setelah tugas selesai, atau bandingkan data sampel dengan proses sebelumnya.

Ringkasan

Dataflow dapat mengambil sampel data pipeline dengan cara berikut:

  • Pengambilan sampel berkala. Dengan jenis pengambilan sampel ini, Dataflow mengumpulkan sampel selagi tugas berjalan. Anda dapat menggunakan sampel data untuk memeriksa apakah pipeline Anda memproses elemen seperti yang diharapkan, dan untuk mendiagnosis masalah runtime seperti hot key atau output yang salah. Untuk mengetahui informasi selengkapnya, lihat Menggunakan sampling data berkala dalam dokumen ini.

  • Pengambilan sampel pengecualian. Dengan jenis pengambilan sampel ini, Dataflow mengumpulkan sampel jika pipeline menampilkan pengecualian. Anda dapat menggunakan sampel tersebut untuk melihat data yang sedang diproses saat pengecualian terjadi. Pengambilan sampel pengecualian diaktifkan secara default dan dapat dinonaktifkan. Untuk mengetahui informasi selengkapnya, lihat Menggunakan sampling pengecualian dalam dokumen ini.

Dataflow menulis elemen yang diambil sampelnya ke jalur Cloud Storage yang ditentukan oleh opsi pipeline temp_location. Anda dapat melihat sampel data di Konsol Google Cloud, atau memeriksa file data mentah di Cloud Storage. File tetap ada di Cloud Storage sampai Anda menghapusnya.

Sampling data dijalankan oleh pekerja Dataflow. Pengambilan sampel adalah upaya terbaik. Sampel mungkin dihapus jika terjadi error sementara.

Persyaratan

Untuk menggunakan sampling data, Anda harus mengaktifkan Runner v2. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan Dataflow Runner v2.

Untuk melihat sampel data di Konsol Google Cloud, Anda memerlukan izin Identity and Access Management berikut:

  • storage.buckets.get
  • storage.objects.get
  • storage.objects.list

Pengambilan sampel berkala memerlukan Apache Beam SDK berikut:

  • Apache Beam Java SDK 2.47.0 atau yang lebih baru
  • Apache Beam Python SDK 2.46.0 atau yang lebih baru
  • Apache Beam Go SDK 2.53.0 atau yang lebih baru

Pengambilan sampel pengecualian memerlukan Apache Beam SDK berikut:

  • Apache Beam Java SDK 2.51.0 atau yang lebih baru
  • Apache Beam Python SDK 2.51.0 atau yang lebih baru
  • Apache Beam Go SDK tidak mendukung pengambilan sampel pengecualian.

Dimulai dengan SDK ini, Dataflow mengaktifkan pengambilan sampel pengecualian untuk semua tugas secara default.

Menggunakan sampling data berkala

Bagian ini menjelaskan cara mengambil sampel data pipeline secara terus-menerus saat tugas berjalan.

Mengaktifkan sampling data berkala

Pengambilan sampel berkala dinonaktifkan secara default. Untuk mengaktifkannya, tetapkan opsi pipeline berikut:

Java

--experiments=enable_data_sampling

Python

--experiments=enable_data_sampling

Go

--experiments=enable_data_sampling

Anda dapat menetapkan opsi ini secara terprogram atau dengan menggunakan command line. Untuk mengetahui informasi selengkapnya, lihat Menetapkan opsi pipeline eksperimental.

Saat menjalankan template Dataflow, gunakan flag additional-experiments untuk mengaktifkan sampling data:

--additional-experiments=enable_data_sampling

Jika pengambilan sampel berkala diaktifkan, Dataflow akan mengumpulkan sampel dari setiap PCollection dalam grafik tugas. Frekuensi sampling kira-kira satu sampel setiap 30 detik.

Bergantung pada volume data, sampling data berkala dapat menambahkan overhead performa yang signifikan. Oleh karena itu, sebaiknya hanya aktifkan pengambilan sampel berkala selama pengujian, dan menonaktifkannya untuk beban kerja produksi.

Melihat sampel data

Untuk melihat sampel data di konsol Google Cloud, lakukan langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Jobs Dataflow.

    Buka Tugas

  2. Pilih pekerjaan.

  3. Klik di panel bawah untuk meluaskan panel log.

  4. Klik tab Sampling Data.

  5. Di kolom Langkah, pilih langkah pipeline. Anda juga dapat memilih langkah di grafik pekerjaan.

  6. Di kolom Koleksi, pilih PCollection.

Jika Dataflow telah mengumpulkan sampel untuk PCollection tersebut, sampel data akan muncul di tab. Untuk setiap contoh, tab menampilkan tanggal pembuatan dan elemen output. Elemen output adalah representasi serial dari elemen koleksi, termasuk data elemen, stempel waktu, serta informasi jendela dan panel.

Contoh berikut menunjukkan elemen sampel.

Java

TimestampedValueInGlobalWindow{value=KV{way, [21]},
timestamp=294247-01-09T04:00:54.775Z, pane=PaneInfo{isFirst=true, isLast=true,
timing=ON_TIME, index=0, onTimeIndex=0}}

Python

(('THE', 1), MIN_TIMESTAMP, (GloblWindow,), PaneInfo(first: True, last: True,
timing: UNKNOWN, index: 0, nonspeculative_index: 0))

Go

KV<THE,1> [@1708122738999:[[*]]:{3 true true 0 0}]

Gambar berikut menunjukkan tampilan sampel data di Konsol Google Cloud.

Data sampel di konsol Google Cloud

Menggunakan sampling pengecualian

Jika pipeline Anda menampilkan pengecualian yang tidak tertangani, Anda dapat melihat pengecualian tersebut dan elemen input yang terkait dengan pengecualian tersebut. Pengambilan sampel pengecualian diaktifkan secara default saat Anda menggunakan Apache Beam SDK yang didukung.

Lihat pengecualian

Untuk melihat pengecualian, lakukan langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Jobs Dataflow.

    Buka Tugas

  2. Pilih pekerjaan.

  3. Untuk meluaskan panel Logs, klik Toggle panel di panel Logs.

  4. Klik tab Sampling Data.

  5. Di kolom Langkah, pilih langkah pipeline. Anda juga dapat memilih langkah di grafik pekerjaan.

  6. Di kolom Koleksi, pilih PCollection.

    Kolom Exception berisi detail pengecualian. Tidak ada elemen output untuk pengecualian. Sebagai gantinya, kolom Elemen output berisi pesan Failed to process input element: INPUT_ELEMENT, dengan INPUT_ELEMENT sebagai elemen input yang berkorelasi.

  7. Untuk melihat contoh input dan detail pengecualian di jendela baru, klik Open in new.

Gambar berikut menunjukkan cara pengecualian muncul di Konsol Google Cloud.

Contoh pengecualian di konsol Google Cloud

Nonaktifkan pengambilan sampel pengecualian

Untuk menonaktifkan pengambilan sampel pengecualian, tetapkan opsi pipeline berikut:

Java

--experiments=disable_always_on_exception_sampling

Python

--experiments=disable_always_on_exception_sampling

Anda dapat menetapkan opsi ini secara terprogram atau dengan menggunakan command line. Untuk mengetahui informasi selengkapnya, lihat Menetapkan opsi pipeline eksperimental.

Saat menjalankan template Dataflow, gunakan tanda additional-experiments untuk menonaktifkan pengambilan sampel pengecualian:

--additional-experiments=disable_always_on_exception_sampling

Pertimbangan keamanan

Dataflow menulis data sampel ke bucket Cloud Storage yang Anda buat dan kelola. Gunakan fitur keamanan Cloud Storage untuk melindungi keamanan data Anda. Secara khusus, pertimbangkan langkah keamanan tambahan berikut:

Anda juga dapat menyamarkan kolom individual dalam jenis data PCollection, sehingga nilai mentah tidak muncul pada data sampel:

  • Python: Mengganti metode __repr__ atau __str__.
  • Java: Mengganti metode toString.

Namun, Anda tidak dapat menyamarkan input dan output dari konektor I/O, kecuali jika Anda mengubah kode sumber konektor untuk melakukannya.

Penagihan

Saat Dataflow melakukan sampling data, Anda akan dikenai biaya untuk penyimpanan data Cloud Storage serta operasi baca dan tulis di Cloud Storage. Untuk mengetahui informasi lebih lanjut, lihat harga Cloud Storage.

Setiap pekerja Dataflow menulis sampel dalam batch, yang mengakibatkan satu operasi baca dan satu operasi tulis per batch.

Pemecahan masalah

Bagian ini berisi informasi tentang masalah umum saat menggunakan sampling data.

Error izin

Jika Anda tidak memiliki izin untuk melihat contoh, Konsol Google Cloud akan menampilkan error berikut:

You don't have permission to view a data sample.

Untuk mengatasi error ini, pastikan Anda memiliki izin IAM yang diperlukan. Jika error masih terjadi, Anda mungkin akan dikenai kebijakan penolakan IAM.

Saya tidak melihat sampel apa pun

Jika Anda tidak melihat contoh, periksa hal berikut:

  1. Pastikan sampling data diaktifkan dengan menetapkan opsi enable_data_sampling. Lihat Mengaktifkan sampling data.
  2. Pastikan Anda menggunakan Runner v2
  3. Pastikan pekerja telah dimulai. Sampling data tidak dimulai sampai pekerja dimulai.
  4. Pastikan pekerjaan dan pekerja dalam kondisi sehat.
  5. Periksa kembali kuota Cloud Storage project. Jika Anda melebihi batas kuota Cloud Storage, Dataflow tidak dapat menulis data sampel.

Langkah selanjutnya