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:
Di konsol Google Cloud, buka halaman Jobs Dataflow.
Pilih tugas.
Klik keyboard_capslock di panel bawah untuk meluaskan panel log.
Klik tab Pengambilan Sampel Data.
Di kolom Step, pilih langkah pipeline. Anda juga dapat memilih langkah dalam grafik tugas.
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.
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:
Di konsol Google Cloud, buka halaman Jobs Dataflow.
Pilih tugas.
Untuk meluaskan panel Logs, klik keyboard_capslock Toggle panel di panel Logs.
Klik tab Pengambilan Sampel Data.
Di kolom Step, pilih langkah pipeline. Anda juga dapat memilih langkah dalam grafik tugas.
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.Untuk melihat contoh input dan detail pengecualian di jendela baru, klik
Buka di jendela baru.
Gambar berikut menunjukkan tampilan 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:
- Gunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk mengenkripsi bucket Cloud Storage. Untuk mengetahui informasi selengkapnya tentang cara memilih opsi enkripsi, lihat Memilih enkripsi yang tepat untuk kebutuhan Anda.
- Tetapkan time to live (TTL) di bucket Cloud Storage, sehingga file data otomatis dihapus setelah jangka waktu tertentu. Untuk informasi selengkapnya, lihat Menetapkan konfigurasi siklus proses untuk bucket.
- Gunakan prinsip hak istimewa terendah saat menetapkan izin IAM ke bucket Cloud Storage.
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:
- Pastikan pengambilan sampel data diaktifkan dengan menetapkan
opsi
enable_data_sampling
. Lihat Mengaktifkan pengambilan sampel data. - Pastikan Anda menggunakan Runner v2
- Pastikan pekerja telah dimulai. Pengambilan sampel tidak dimulai hingga pekerja dimulai.
- Pastikan tugas dan pekerja dalam kondisi yang baik.
- Periksa kembali kuota Cloud Storage project. Jika Anda melebihi batas kuota Cloud Storage, Dataflow tidak dapat menulis data sampel.
- Pengambilan sampel data tidak dapat mengambil sampel dari iterabel. Sample dari jenis streaming ini tidak tersedia.