Ringkasan Pushdown Transformasi

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 (opsi Truncate 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:

  1. Menulis data ke BigQuery untuk tahap yang didukung dalam pipeline Anda.
  2. Menjalankan tahap yang didukung di BigQuery.
  3. 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:

  1. Cloud Data Fusion memuat set data input ke BigQuery dengan menulis data ke Cloud Storage, lalu menjalankan tugas pemuatan BigQuery.

  2. Operasi JOIN dan transformasi yang didukung kemudian dieksekusi sebagai tugas BigQuery menggunakan pernyataan SQL.

  3. 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.

Pushdown Transformasi ke BigQuery di pipeline Cloud Data Fusion.

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.

Di setelan plugin Joiner, identifikasi data yang miring di kolom Skewed Input Stage.

Langkah selanjutnya