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 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 outputnya benar.
Memahami 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 proses 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 Anda memproses elemen seperti yang diharapkan, dan untuk mendiagnosis masalah runtime seperti tombol pintas 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 disampel ke jalur Cloud Storage yang ditentukan oleh opsi pipeline gcpTempLocation
untuk Java dan temp_location
untuk Python dan Go. Anda dapat melihat data yang disampel 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. Pengambilan sampel dilakukan dengan upaya terbaik. Contoh dapat dihapus jika terjadi error sementara.
Persyaratan
Untuk menggunakan pengambilan sampel data, Anda harus mengaktifkan Runner v2. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan Runner Dataflow v2.
Untuk melihat data yang diambil sampelnya 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
Sampling 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 berkelanjutan 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
Jika pengambilan sampel berkala diaktifkan, Dataflow akan mengumpulkan sampel
dari setiap PCollection
dalam grafik tugas. Frekuensi pengambilan sampel adalah sekitar satu sampel setiap 30 detik.
Bergantung pada volume data, pengambilan sampel data berkala dapat menambah overhead performa yang signifikan. Oleh karena itu, sebaiknya Anda hanya mengaktifkan pengambilan sampel berkala selama pengujian, dan menonaktifkannya untuk workload produksi.
Melihat data sampel
Untuk melihat data yang disampel di konsol Google Cloud , lakukan langkah-langkah berikut:
Di konsol Google Cloud , buka halaman Jobs Dataflow.
Pilih lowongan.
Klik keyboard_capslock di panel bawah untuk meluaskan panel log.
Klik tab Sampling 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 yang diambil sampelnya akan muncul di tab. Untuk setiap sampel, tab menampilkan tanggal pembuatan dan elemen output. Elemen output adalah representasi serial dari elemen kumpulan, termasuk data elemen, stempel waktu, serta informasi jendela dan 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 konsol Google Cloud .
Menggunakan pengambilan sampel pengecualian
Jika pipeline Anda memunculkan pengecualian yang tidak tertangani, Anda dapat melihat pengecualian dan elemen input yang berkorelasi dengan pengecualian tersebut. Sampling pengecualian diaktifkan secara default saat Anda menggunakan Apache Beam SDK yang didukung.
Lihat pengecualian
Untuk melihat pengecualian, lakukan langkah-langkah berikut:
Di konsol Google Cloud , buka halaman Jobs Dataflow.
Pilih lowongan.
Untuk meluaskan panel Log, klik keyboard_capslock Alihkan panel di panel Log.
Klik tab Sampling 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 cara pengecualian muncul 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 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 disampel ke bucket Cloud Storage yang Anda buat dan kelola. Gunakan fitur keamanan Cloud Storage untuk menjaga 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 cara memilih opsi enkripsi, lihat Memilih enkripsi yang tepat untuk kebutuhan Anda.
- Tetapkan time to live (TTL) di 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 meng-obfuscate setiap kolom 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 meng-obfuscate input dan output dari konektor I/O, kecuali Anda memodifikasi kode sumber konektor untuk melakukannya.
Penagihan
Saat Dataflow melakukan pengambilan sampel data, Anda akan dikenai biaya untuk penyimpanan data Cloud Storage serta operasi baca dan tulis di Cloud Storage. Untuk mengetahui informasi selengkapnya, lihat harga Cloud Storage.
Setiap pekerja Dataflow menulis sampel dalam batch, sehingga 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 akan menampilkan error berikut: Google Cloud
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 tunduk pada kebijakan penolakan IAM.
Saya tidak melihat contoh apa pun
Jika Anda tidak melihat contoh 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 akan dimulai hingga pekerja dimulai.
- Pastikan tugas dan pekerja dalam kondisi 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 iterable. Sampel dari jenis streaming ini tidak tersedia.