Pengambilan sampel 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 sebenarnya dalam tugas yang sedang berjalan atau telah selesai.
Penggunaan pengambilan sampel 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.
Pahami perilaku pipeline tanpa perlu memeriksa kode pipeline.
Lihat elemen yang diambil sampelnya di lain waktu, setelah tugas selesai, atau bandingkan data yang diambil sampelnya dengan operasi sebelumnya.
Ringkasan
Dataflow dapat mengambil sampel data pipeline dengan cara berikut:
Pengambilan sampel berkala. Dengan jenis pengambilan sampel ini, Dataflow mengumpulkan sampel saat tugas berjalan. Anda dapat menggunakan data yang diambil sampelnya untuk memeriksa apakah pipeline memproses elemen seperti yang diharapkan, dan untuk mendiagnosis masalah runtime seperti kunci aktif atau output yang salah. Untuk mengetahui informasi selengkapnya, lihat Menggunakan pengambilan sampel data berkala dalam dokumen ini.
Pengambilan sampel pengecualian. Dengan jenis pengambilan sampel 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 pengambilan sampel pengecualian dalam dokumen ini.
Dataflow menulis elemen yang diambil sampelnya ke jalur Cloud Storage
yang ditentukan oleh
gcpTempLocation
opsi pipeline untuk Java dan temp_location untuk Python dan Go. Anda dapat melihat data yang
diambil sampelnya di Google Cloud konsol, atau memeriksa file data mentah di
Cloud Storage. File akan tetap ada di Cloud Storage hingga Anda menghapusnya.
Pengambilan sampel data dijalankan oleh pekerja Dataflow. Pengambilan sampel dilakukan dengan upaya terbaik. Sampel mungkin akan dihilangkan jika terjadi error sementara.
Persyaratan
Untuk menggunakan pengambilan sampel data, Anda harus mengaktifkan Runner Portabel. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan Runner Portabel Dataflow.
Untuk melihat data yang diambil sampelnya di Google Cloud konsol, Anda memerlukan izin Identity and Access Management berikut:
storage.buckets.getstorage.objects.getstorage.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 pengambilan sampel pengecualian untuk semua tugas secara default.
Menggunakan pengambilan sampel 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 mengetahui informasi selengkapnya, lihat Menetapkan opsi pipeline eksperimental.
Saat menjalankan template Dataflow, gunakan flag additional-experiments untuk mengaktifkan pengambilan sampel data:
--additional-experiments=enable_data_sampling
Saat pengambilan sampel berkala diaktifkan, Dataflow mengumpulkan sampel dari setiap PCollection dalam grafik tugas. Frekuensi pengambilan sampel kira-kira satu sampel setiap 30 detik.
Bergantung pada volume data, pengambilan sampel data berkala dapat menambahkan overhead performa yang signifikan. Oleh karena itu, sebaiknya aktifkan pengambilan sampel berkala hanya selama pengujian, dan nonaktifkan untuk workload produksi.
Melihat data yang diambil sampelnya
Untuk melihat data yang diambil sampelnya di Google Cloud konsol, lakukan langkah-langkah berikut:
Di Google Cloud konsol, buka halaman Tugas Dataflow.
Pilih tugas.
Klik keyboard_capslock di panel bawah untuk memperluas panel log.
Klik tab Pengambilan Sampel Data.
Di kolom Langkah, pilih langkah pipeline. Anda juga dapat memilih langkah dalam grafik tugas.
Di kolom Koleksi, pilih
PCollection.
Jika Dataflow telah mengumpulkan sampel untuk PCollection tersebut, data yang diambil sampelnya akan muncul di tab. Untuk setiap sampel, tab akan menampilkan tanggal pembuatan dan elemen output. Elemen output adalah representasi serial elemen koleksi, termasuk data elemen, stempel waktu, dan informasi jendela serta panel.
Contoh berikut menunjukkan elemen yang diambil sampelnya.
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 yang diambil sampelnya di Google Cloud konsol.
Menggunakan pengambilan sampel pengecualian
Jika pipeline menampilkan pengecualian yang tidak tertangani, 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 Google Cloud konsol, buka halaman Tugas Dataflow.
Pilih tugas.
Untuk memperluas panel Log, klik keyboard_capslock Beralih panel di panel Log.
Klik tab Pengambilan Sampel Data.
Di kolom Langkah, pilih langkah pipeline. Anda juga dapat memilih langkah dalam grafik tugas.
Di kolom Koleksi, pilih
PCollection.Kolom Pengecualian 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 adalah elemen input yang berkorelasi.Untuk melihat sampel input dan detail pengecualian di jendela baru, klik Buka di jendela baru.
Gambar berikut menunjukkan tampilan pengecualian di Google Cloud konsol.
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 mengetahui 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 yang diambil sampelnya ke bucket Cloud Storage yang Anda buat dan kelola. Gunakan fitur keamanan Cloud Storage untuk melindungi keamanan data Anda. Secara khusus, pertimbangkan langkah-langkah keamanan tambahan berikut:
- Gunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk mengenkripsi bucket Cloud Storage. Untuk mengetahui informasi selengkapnya tentang memilih opsi enkripsi, lihat Memilih enkripsi yang tepat untuk kebutuhan Anda.
- Tetapkan time to live (TTL) pada bucket Cloud Storage, sehingga file data akan otomatis dihapus setelah jangka waktu tertentu. Untuk mengetahui 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 kolom individual dalam jenis data PCollection, sehingga nilai mentah tidak muncul dalam data yang diambil sampelnya:
- Python: Ganti metode
__repr__atau__str__. - Java: Ganti metode
toString.
Namun, Anda tidak dapat mengaburkan input dan output dari konektor I/O, kecuali jika Anda mengubah kode sumber konektor untuk melakukannya.
Penagihan
Saat Dataflow melakukan pengambilan sampel 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, sehingga dikenai satu operasi baca dan satu operasi tulis per batch.
Pemecahan masalah
Bagian ini berisi informasi tentang masalah umum saat menggunakan pengambilan sampel data.
Error izin
Jika Anda tidak memiliki izin untuk melihat sampel, Google Cloud konsol 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 sampel apa pun
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 Portabel
- Pastikan pekerja telah dimulai. Pengambilan sampel tidak akan dimulai hingga pekerja dimulai.
- Pastikan tugas dan pekerja dalam kondisi baik.
- Periksa kembali kuota Cloud Storage project's. Jika Anda melebihi batas kuota Cloud Storage, Dataflow tidak dapat menulis data sampel.
- Pengambilan sampel data tidak dapat mengambil sampel dari iterable. Sampel dari jenis streaming ini tidak tersedia.