Untuk meningkatkan performa di pipeline data, Anda dapat mendorong beberapa operasi transformasi ke BigQuery, bukan Apache Spark. Pushdown Transformasi mengacu pada setelan yang memungkinkan operasi di pipeline data Cloud Data Fusion didorong ke BigQuery sebagai mesin eksekusi. Akibatnya, operasi dan datanya akan ditransfer ke BigQuery dan operasi akan dilakukan di sana.
Pushdown Transformasi meningkatkan performa pipeline yang memiliki
beberapa operasi JOIN
kompleks atau transformasi lain yang didukung. Menjalankan 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.
Operasi JOIN
Pushdown Transformasi tersedia untuk operasi
JOIN
di Cloud Data Fusion versi 6.5.0 dan yang lebih baru.Operasi
JOIN
dasar (pada tombol) dan lanjutan didukung.Join harus memiliki tepat dua tahap input agar eksekusi dapat dilakukan di BigQuery.
Join 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 dieksekusi di SQL Engine (lihat opsi Tahap untuk memaksa eksekusi).
Sink BigQuery
Pushdown Transformasi tersedia untuk Sink BigQuery di Cloud Data Fusion versi 6.7.0 dan yang lebih baru.
Saat BigQuery Sink mengikuti tahap yang telah dijalankan di BigQuery, operasi yang menulis kumpulan 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 di set data yang digunakan oleh BigQuery Sink.
- Set data yang digunakan untuk Pushdown Transformasi dan Sink BigQuery harus disimpan di lokasi yang sama.
- Operasi harus berupa salah satu dari berikut ini:
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 mengonfigurasinya untuk dieksekusi di SQL Engine (lihat opsi Stages to force execution).
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 mengonfigurasinya untuk dieksekusi di SQL Engine (lihat opsi Stages to force execution).
Pushdown Sumber BigQuery
BigQuery Source Pushdown tersedia di Cloud Data Fusion versi 6.8.0 dan yang lebih baru.
Jika Sumber BigQuery mengikuti tahap yang kompatibel untuk pushdown BigQuery, pipeline dapat menjalankan semua tahap yang kompatibel dalam BigQuery.
Cloud Data Fusion menyalin data yang diperlukan untuk menjalankan pipeline dalam BigQuery.
Saat Anda menggunakan BigQuery Source Pushdown, properti pengelompokan dan partisi tabel akan dipertahankan, sehingga Anda dapat menggunakan properti ini untuk mengoptimalkan operasi lebih lanjut, seperti join.
Persyaratan tambahan
Untuk menggunakan BigQuery Source Pushdown, persyaratan berikut harus ada:
Akun layanan yang dikonfigurasi untuk BigQuery Transformation Pushdown harus memiliki izin untuk membaca tabel di set data Sumber BigQuery.
Set Data yang digunakan di Sumber BigQuery dan set data yang dikonfigurasi untuk Pushdown Transformasi harus disimpan di lokasi yang sama.
Agregasi periode
Pushdown Transformasi tersedia untuk agregasi Window 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 mengonfigurasinya untuk dieksekusi di SQL Engine (lihat opsi Stages to force pushdown).
Pushdown Filter Wrangler
Wrangler Filter Pushdown tersedia di Cloud Data Fusion versi 6.9 dan yang lebih baru.
Saat menggunakan plugin Wrangler, Anda dapat mendorong filter, yang dikenal sebagai operasi Precondition
, untuk dijalankan di BigQuery, bukan Spark.
Pushdown filter hanya didukung dengan mode SQL untuk Prasyarat, yang juga dirilis dalam versi 6.9. Dalam mode ini, plugin menerima ekspresi prasyarat dalam SQL standar ANSI.
Jika mode SQL digunakan untuk prasyarat, Perintah dan Perintah yang ditentukan Pengguna akan dinonaktifkan untuk plugin Wrangler, karena tidak didukung dengan prasyarat dalam mode SQL.
Mode SQL untuk prasyarat tidak didukung untuk plugin Wrangler dengan beberapa input saat Transformation Pushdown diaktifkan. Jika digunakan dengan beberapa input, tahap Wrangler ini dengan kondisi filter SQL akan dijalankan di Spark.
Filter dijalankan di BigQuery dalam kasus berikut:
- Ini mengikuti tahap yang telah didorong ke bawah.
- Anda mengonfigurasinya untuk dieksekusi di SQL Engine (lihat opsi Stages to force pushdown).
Metrik
Untuk informasi selengkapnya tentang metrik yang disediakan Cloud Data Fusion untuk bagian pipeline yang dieksekusi di BigQuery, lihat Metrik pipeline pushdown BigQuery.
Kapan harus menggunakan Pushdown Transformasi
Menjalankan transformasi di BigQuery melibatkan hal berikut:
- Menulis data ke BigQuery untuk tahap yang didukung dalam pipeline Anda.
- Menjalankan tahap yang didukung di BigQuery.
- Membaca kumpulan data dari BigQuery setelah transformasi yang didukung dijalankan, kecuali jika diikuti oleh BigQuery Sink.
Bergantung pada ukuran set data Anda, mungkin ada overhead jaringan yang cukup besar, yang dapat berdampak negatif pada waktu eksekusi pipeline secara keseluruhan saat Transformation Pushdown diaktifkan.
Karena overhead jaringan, sebaiknya gunakan Pushdown Transformasi dalam kasus berikut:
- Beberapa operasi yang didukung dijalankan secara berurutan (tanpa langkah di antara tahap).
- Peningkatan performa dari BigQuery yang menjalankan transformasi, secara relatif terhadap Spark, lebih besar daripada latensi perpindahan data ke dalam dan mungkin ke luar BigQuery.
Cara kerjanya
Saat Anda menjalankan pipeline yang menggunakan Pushdown Transformasi, Cloud Data Fusion akan menjalankan tahap transformasi yang didukung di BigQuery. Semua tahap lainnya dalam pipeline dijalankan di Spark.
Saat mengeksekusi 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 dieksekusi sebagai tugas BigQuery menggunakan pernyataan SQL.Jika pemrosesan lebih lanjut diperlukan setelah tugas dieksekusi, kumpulan data dapat diekspor dari BigQuery ke Spark. Namun, jika opsi Attempt direct copy to BigQuery sinks diaktifkan dan BigQuery Sink mengikuti tahap yang dieksekusi di BigQuery, kumpulan data akan ditulis langsung ke tabel BigQuery Sink tujuan.
Diagram berikut menunjukkan cara Pushdown Transformasi menjalankan 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 menggunakan CPU dan memori yang tersedia sepenuhnya untuk instance Anda, sekaligus mendapatkan manfaat dari kecepatan eksekusi BigQuery untuk tugas besar.
Tingkatkan paralelisme dalam pipeline Anda dengan menggunakan cluster penskalaan otomatis.
Sesuaikan konfigurasi resource di tahap pipeline tempat data didorong atau diambil dari BigQuery selama eksekusi pipeline.
Direkomendasikan: Bereksperimenlah dengan meningkatkan jumlah core CPU untuk resource eksekutor Anda (hingga jumlah core CPU yang digunakan node pekerja Anda). Eksekutor mengoptimalkan penggunaan CPU selama langkah serialisasi dan deserialisasi saat data masuk dan keluar dari BigQuery. Untuk informasi selengkapnya, lihat Penentuan ukuran cluster.
Manfaat menjalankan transformasi di BigQuery adalah bahwa
pipeline Anda dapat berjalan di cluster Dataproc yang lebih kecil. Jika join adalah
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 mengeksekusi transformasi, pipeline Anda mungkin memiliki tahap tambahan untuk dieksekusi di Spark. Di Cloud Data Fusion versi 6.7.0 dan yang lebih baru, Pushdown Transformasi 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 kebutuhan. Jika operasi yang membutuhkan 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 diinstal (termasuk Dataproc 2.0 dan Dataproc 1.5).
Pertimbangkan ukuran set data
Pertimbangkan ukuran set data dalam operasi JOIN
. Untuk operasi JOIN
yang menghasilkan sejumlah besar data output, seperti
sesuatu yang menyerupai operasi JOIN
silang, ukuran set data yang dihasilkan
mungkin jauh lebih besar daripada set data input. Selain itu, pertimbangkan
overhead menarik data ini kembali 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 melampaui
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 melebihi batas.
Langkah selanjutnya
- Pelajari cara mengaktifkan Pushdown Transformasi di Cloud Data Fusion.