Untuk meningkatkan performa pipeline data, Anda dapat mengirim beberapa operasi transformasi ke BigQuery, bukan Apache Spark. Pushdown Transformasi merujuk pada setelan yang memungkinkan operasi di pipeline data Cloud Data Fusion dikirim ke BigQuery sebagai mesin eksekusi. Akibatnya, operasi dan datanya akan ditransfer ke BigQuery dan operasi dilakukan di sana.
Pushdown Transformasi meningkatkan performa pipeline yang memiliki beberapa operasi JOIN
kompleks atau transformasi lain yang didukung. Mengeksekusi beberapa transformasi di BigQuery mungkin lebih cepat daripada menjalankannya di Spark.
Transformasi yang tidak didukung dan semua transformasi pratinjau dijalankan di Spark.
Transformasi yang didukung
Pushdown Transformasi tersedia di Cloud Data Fusion versi 6.5.0 dan yang lebih baru, tetapi beberapa transformasi berikut hanya didukung di versi yang lebih baru.
JOIN
operasi
Pushdown Transformasi tersedia untuk operasi
JOIN
di Cloud Data Fusion versi 6.5.0 dan yang lebih baru.Operasi
JOIN
dasar (on-key) dan lanjutan didukung.Gabungan harus memiliki tepat dua tahap input agar eksekusi dapat dilakukan di BigQuery.
Gabungan yang dikonfigurasi untuk memuat satu atau beberapa input ke dalam memori dijalankan di Spark, bukan BigQuery, kecuali dalam kasus berikut:
- Jika salah satu input ke join sudah didorong ke bawah.
- Jika Anda mengonfigurasi join untuk dijalankan di SQL Engine (lihat opsi Stages to force execution).
Sink BigQuery
Pushdown Transformasi tersedia untuk Sink BigQuery di Cloud Data Fusion versi 6.7.0 dan yang lebih baru.
Saat Sink BigQuery mengikuti tahap yang telah dijalankan di BigQuery, operasi yang menulis data ke BigQuery dilakukan langsung di BigQuery.
Untuk meningkatkan performa dengan sink ini, Anda memerlukan hal berikut:
- Akun layanan harus memiliki izin untuk membuat dan memperbarui tabel dalam set data yang digunakan oleh BigQuery Sink.
- Set data yang digunakan untuk Dorongan Transformasi dan Sink BigQuery harus disimpan di lokasi yang sama.
- Operasi harus berupa salah satu dari berikut:
Insert
(opsiTruncate Table
tidak didukung)Update
Upsert
Agregasi GROUP BY
Pushdown Transformasi tersedia untuk agregasi GROUP BY
di Cloud Data Fusion versi 6.7.0 dan yang lebih baru.
Agregasi GROUP BY
di BigQuery tersedia untuk operasi berikut:
Avg
Collect List
(nilai null dihapus dari array output)Collect Set
(nilai null dihapus dari array output)Concat
Concat Distinct
Count
Count Distinct
Count Nulls
Logical And
Logical Or
Max
Min
Standard Deviation
Sum
Sum of Squares
Corrected Sum of Squares
Variance
Shortest String
Longest String
Agregasi GROUP BY
dijalankan di BigQuery dalam kasus
berikut:
- Ini mengikuti tahap yang telah didorong ke bawah.
- Anda telah mengonfigurasinya untuk dijalankan di SQL Engine (lihat opsi Tahapan untuk memaksa eksekusi).
Menghapus duplikat agregasi
Pushdown Transformasi tersedia untuk agregasi penghapusan duplikat di Cloud Data Fusion versi 6.7.0 dan yang lebih baru untuk operasi berikut:
- Tidak ada operasi filter yang ditentukan
ANY
(nilai non-null untuk kolom yang diinginkan)MIN
(nilai minimum untuk kolom yang ditentukan)MAX
(nilai maksimum untuk kolom yang ditentukan)
Operasi berikut tidak didukung:
FIRST
LAST
Agregasi penghapusan duplikat dijalankan di mesin SQL dalam kasus berikut:
- Ini mengikuti tahap yang telah didorong ke bawah.
- Anda telah mengonfigurasinya untuk dijalankan di SQL Engine (lihat opsi Stages to force execution).
Pushdown Sumber BigQuery
Pushdown Sumber BigQuery tersedia di Cloud Data Fusion versi 6.8.0 dan yang lebih baru.
Ketika Sumber BigQuery mengikuti tahap yang kompatibel untuk bentang bawah BigQuery, pipeline dapat menjalankan semua tahapan yang kompatibel dalam BigQuery.
Cloud Data Fusion akan menyalin data yang diperlukan untuk menjalankan pipeline dalam BigQuery.
Saat Anda menggunakan Pushdown Sumber BigQuery, properti pengelompokan tabel dan pengelompokan akan dipertahankan, sehingga Anda dapat menggunakan properti ini untuk mengoptimalkan operasi lebih lanjut, seperti join.
Persyaratan tambahan
Untuk menggunakan Pushdown Sumber BigQuery, persyaratan berikut harus dipenuhi:
Akun layanan yang dikonfigurasi untuk Pushdown Transformasi BigQuery harus memiliki izin untuk membaca tabel di set data Sumber BigQuery.
Set data yang digunakan di Sumber BigQuery dan set data yang dikonfigurasi untuk Dorongan Transformasi harus disimpan di lokasi yang sama.
Agregasi jendela
Pushdown Transformasi tersedia untuk agregasi Jendela di Cloud Data Fusion versi 6.9 dan yang lebih baru. Agregasi jendela di BigQuery didukung untuk operasi berikut:
Rank
Dense Rank
Percent Rank
N tile
Row Number
Median
Continuous Percentile
Lead
Lag
First
Last
Cumulative distribution
Accumulate
Agregasi jendela dijalankan di BigQuery dalam kasus berikut:
- Ini mengikuti tahap yang telah didorong ke bawah.
- Anda telah mengonfigurasinya untuk dijalankan di SQL Engine (lihat opsi Stages to force pushdown ).
Dorongan Filter Wrangler
Wrangler Filter Pushdown tersedia di Cloud Data Fusion versi 6.9 dan yang lebih baru.
Saat menggunakan plugin Wrangler, Anda dapat mengirim filter, yang dikenal sebagai operasi Precondition
, untuk dijalankan di BigQuery, bukan Spark.
Bentang bawah filter hanya didukung dengan mode SQL untuk Preconditions, yang juga dirilis dalam versi 6.9. Dalam mode ini, plugin menerima ekspresi prakondisi dalam SQL standar ANSI.
Jika mode SQL digunakan untuk prakondisi, Directives dan User Defined Directives akan dinonaktifkan untuk plugin Wrangler, karena tidak didukung dengan prakondisi dalam mode SQL.
Mode SQL untuk prakondisi tidak didukung untuk plugin Wrangler dengan beberapa input saat Pushdown Transformasi diaktifkan. Jika digunakan dengan beberapa input, tahap Wrangler dengan kondisi filter SQL ini akan dijalankan di Spark.
Filter dijalankan di BigQuery dalam kasus berikut:
- Ini mengikuti tahap yang telah didorong ke bawah.
- Anda telah mengonfigurasinya untuk dijalankan di SQL Engine (lihat opsi Stages to force pushdown ).
Metrik
Untuk mengetahui informasi selengkapnya tentang metrik yang disediakan Cloud Data Fusion untuk bagian pipeline yang dijalankan di BigQuery, lihat Metrik pipeline bentang bawah BigQuery.
Kapan menggunakan Pushdown Transformasi
Menjalankan transformasi di BigQuery melibatkan hal berikut:
- Menulis data ke BigQuery untuk tahap yang didukung di pipeline Anda.
- Mengeksekusi tahapan yang didukung di BigQuery.
- Membaca data dari BigQuery setelah transformasi yang didukung dijalankan, kecuali jika diikuti oleh Sink BigQuery.
Bergantung pada ukuran set data, mungkin ada overhead jaringan yang cukup besar, yang dapat berdampak negatif terhadap keseluruhan waktu eksekusi pipeline saat Pushdown Transformasi diaktifkan.
Karena overhead jaringan, kami merekomendasikan Pushdown Transformasi dalam kasus berikut:
- Beberapa operasi yang didukung dijalankan secara berurutan (tanpa langkah di antara tahapan).
- Peningkatan performa dari BigQuery yang menjalankan transformasi, relatif terhadap Spark, melebihi latensi pemindahan data ke dalam dan mungkin keluar dari BigQuery.
Cara kerja Duet AI
Saat Anda menjalankan pipeline yang menggunakan Pushdown Transformasi, Cloud Data Fusion mengeksekusi tahap transformasi yang didukung di BigQuery. Semua tahap lain dalam pipeline dijalankan di Spark.
Saat menjalankan transformasi:
Cloud Data Fusion memuat set data input ke BigQuery dengan menulis data ke Cloud Storage, lalu menjalankan tugas pemuatan BigQuery.
Operasi
JOIN
dan transformasi yang didukung kemudian dijalankan sebagai tugas BigQuery menggunakan pernyataan SQL.Jika diperlukan pemrosesan lebih lanjut setelah tugas dijalankan, data dapat diekspor dari BigQuery ke Spark. Namun, jika opsi Try direct copy to BigQuery sinks diaktifkan dan Sink BigQuery mengikuti tahap yang dijalankan di BigQuery, record akan ditulis langsung ke tabel Sink BigQuery tujuan.
Diagram berikut menunjukkan bagaimana Pushdown Transformasi mengeksekusi transformasi yang didukung di BigQuery, bukan Spark.
Praktik terbaik
Menyesuaikan ukuran cluster dan eksekutor
Untuk mengoptimalkan pengelolaan resource di pipeline, lakukan hal berikut:
Gunakan jumlah pekerja cluster (node) yang tepat untuk beban kerja. Dengan kata lain, dapatkan hasil maksimal dari cluster Dataproc yang disediakan dengan sepenuhnya menggunakan CPU dan memori yang tersedia untuk instance Anda, sekaligus memanfaatkan kecepatan eksekusi BigQuery untuk tugas-tugas yang besar.
Tingkatkan paralelisme dalam pipeline Anda menggunakan cluster penskalaan otomatis.
Sesuaikan konfigurasi resource Anda di tahap pipeline tempat data dikirim atau diambil dari BigQuery selama eksekusi pipeline.
Direkomendasikan: Lakukan eksperimen dengan meningkatkan jumlah core CPU untuk resource eksekutor (hingga jumlah core CPU yang digunakan node pekerja). Eksekutor mengoptimalkan penggunaan CPU selama langkah serialisasi dan deserialisasi saat data masuk dan keluar dari BigQuery. Untuk mengetahui informasi selengkapnya, lihat Pengukuran cluster.
Manfaat menjalankan transformasi di BigQuery adalah pipeline Anda dapat berjalan pada cluster Dataproc yang lebih kecil. Jika join merupakan operasi yang paling banyak menggunakan resource di pipeline, Anda dapat bereksperimen dengan ukuran cluster yang lebih kecil, karena operasi JOIN
yang berat kini dilakukan di BigQuery), sehingga Anda berpotensi mengurangi biaya komputasi secara keseluruhan.
Mengambil data lebih cepat dengan BigQuery Storage Read API
Setelah BigQuery menjalankan transformasi, pipeline Anda mungkin memiliki tahapan tambahan untuk dijalankan di Spark. Di Cloud Data Fusion versi 6.7.0 dan yang lebih baru, Transformation Pushdown mendukung BigQuery Storage Read API, yang meningkatkan latensi dan menghasilkan operasi baca yang lebih cepat ke Spark. Hal ini dapat mengurangi waktu eksekusi pipeline secara keseluruhan.
API membaca data secara paralel, jadi sebaiknya sesuaikan ukuran eksekutor sesuai dengan itu. Jika operasi yang menggunakan banyak resource dijalankan di BigQuery, kurangi alokasi memori untuk eksekutor guna meningkatkan paralelisme saat pipeline berjalan (lihat Menyesuaikan ukuran cluster dan eksekutor).
BigQuery Storage Read API dinonaktifkan secara default. Anda dapat mengaktifkannya di lingkungan eksekusi tempat Scala 2.12 terinstal (termasuk Dataproc 2.0 dan Dataproc 1.5).
Mempertimbangkan ukuran set data
Pertimbangkan ukuran set data di operasi JOIN
. Untuk operasi JOIN
yang menghasilkan sejumlah besar data output, seperti
sesuatu yang menyerupai operasi JOIN
silang, ukuran set data yang dihasilkan
mungkin berukuran lebih besar daripada set data input. Selain itu, pertimbangkan overhead untuk menarik kembali data ini ke Spark saat pemrosesan Spark tambahan untuk data ini terjadi, seperti transformasi atau sink, dalam konteks performa pipeline secara keseluruhan.
Memitigasi data yang condong
Operasi JOIN
untuk data yang sangat miring dapat menyebabkan
tugas BigQuery melebihi
batas penggunaan resource,
yang menyebabkan operasi JOIN
gagal. Untuk mencegah hal ini, buka setelan plugin Joiner
dan identifikasi input yang miring di kolom
Skewed Input Stage. Hal ini memungkinkan Cloud Data Fusion mengatur input dengan cara yang mengurangi risiko pernyataan BigQuery agar tidak melebihi batas.
Langkah selanjutnya
- Pelajari cara mengaktifkan Dorongan Transformasi di Cloud Data Fusion.