Menggunakan sampling data untuk mengamati data pipeline

Sampling data memungkinkan Anda mengamati data di setiap langkah pipeline Dataflow. Informasi ini dapat membantu Anda men-debug masalah pada pipeline, dengan menampilkan input dan output yang sebenarnya dalam tugas yang sedang berjalan atau telah 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 men-debug, lihat output transformasi untuk memastikan output sudah benar.

  • Memahami perilaku pipeline tanpa perlu memeriksa kode pipeline.

  • Lihat elemen sampel di lain waktu, setelah tugas selesai, atau bandingkan data sampel dengan operasi sebelumnya.

Ringkasan

Dataflow dapat mengambil sampel data pipeline dengan cara berikut:

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

  • Pengambilan sampel pengecualian. Dengan jenis sampling ini, Dataflow mengumpulkan sampel jika pipeline menampilkan pengecualian. Anda dapat menggunakan sampel 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 sampel ke jalur Cloud Storage yang ditentukan oleh opsi pipeline temp_location. Anda dapat melihat data sampel di konsol Google Cloud, atau memeriksa file data mentah di Cloud Storage. File akan tetap ada di Cloud Storage hingga Anda menghapusnya.

Sampling data dijalankan oleh pekerja Dataflow. Sampling dilakukan secara maksimal. Sampel mungkin dihapus jika terjadi error sementara.

Persyaratan

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

Untuk melihat data sampel 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.

Mulai dari SDK ini, Dataflow mengaktifkan sampling 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 pengambilan sampel 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 secara terprogram atau menggunakan command line. Untuk 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 samplingnya adalah sekitar satu sampel setiap 30 detik.

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

Melihat data sampel

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

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

    Buka Tugas

  2. Pilih tugas.

  3. Klik di panel bawah untuk meluaskan panel log.

  4. Klik tab Pengambilan Sampel Data.

  5. Di kolom Step, pilih langkah pipeline. Anda juga dapat memilih langkah dalam grafik tugas.

  6. Di kolom Collection, pilih PCollection.

Jika Dataflow telah mengumpulkan sampel untuk PCollection tersebut, data sampel akan muncul di tab. Untuk setiap sampel, tab menampilkan tanggal pembuatan dan elemen output. Elemen output adalah representasi serial 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 data sampel di konsol Google Cloud.

Data sampel di konsol Google Cloud

Menggunakan sampling pengecualian

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

Melihat pengecualian

Untuk melihat pengecualian, lakukan langkah-langkah berikut:

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

    Buka Tugas

  2. Pilih tugas.

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

  4. Klik tab Pengambilan Sampel Data.

  5. Di kolom Step, pilih langkah pipeline. Anda juga dapat memilih langkah dalam grafik tugas.

  6. Di kolom Collection, pilih PCollection.

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

  7. Untuk melihat contoh input dan detail pengecualian di jendela baru, klik Buka di jendela baru.

Gambar berikut menunjukkan tampilan pengecualian di konsol Google Cloud.

Contoh pengecualian di konsol Google Cloud

Menonaktifkan 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 secara terprogram atau menggunakan command line. Untuk informasi selengkapnya, lihat Menetapkan opsi pipeline eksperimental.

Saat menjalankan template Dataflow, gunakan flag 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 menjaga keamanan data Anda. Secara khusus, pertimbangkan tindakan keamanan tambahan berikut:

Anda juga dapat mengaburkan setiap kolom dalam jenis data PCollection, sehingga nilai mentah tidak muncul dalam data sampel:

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

Namun, Anda tidak dapat meng-obfuscate input dan output dari konektor I/O, kecuali Anda memodifikasi kode sumber konektor untuk melakukannya.

Penagihan

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

Setiap pekerja Dataflow menulis sampel dalam batch, yang menimbulkan 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 sampel, 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 dikenai kebijakan penolakan IAM.

Saya tidak melihat contoh

Jika Anda tidak melihat sampel apa pun, periksa hal berikut:

  1. Pastikan pengambilan sampel data diaktifkan dengan menetapkan opsi enable_data_sampling. Lihat Mengaktifkan pengambilan sampel data.
  2. Pastikan Anda menggunakan Runner v2
  3. Pastikan pekerja telah dimulai. Pengambilan sampel tidak dimulai hingga pekerja dimulai.
  4. Pastikan tugas dan pekerja dalam kondisi yang baik.
  5. Periksa kembali kuota Cloud Storage project. Jika Anda melebihi batas kuota Cloud Storage, Dataflow tidak dapat menulis data sampel.
  6. Pengambilan sampel data tidak dapat mengambil sampel dari iterabel. Sample dari jenis streaming ini tidak tersedia.

Langkah selanjutnya