UDF dan Produk Cartesian
Memahami Masalah
Dalam Spark SQL, menggunakan Pengguna tersuai -Fungsi Tertakrif (UDF) dalam pertanyaan SQL kadangkala boleh membawa kepada pengiraan produk Cartesian dan bukannya pengiraan penuh yang dijangkakan. gabungan luar. Isu prestasi ini timbul kerana penggunaan UDF memperkenalkan fungsi sewenang-wenangnya dan tidak menentukan, menjadikannya mencabar bagi pengoptimum untuk menentukan nilainya tanpa menilai semua gabungan input yang mungkin.
Penyelesaian
Tidak seperti UDF, keadaan kesamaan mudah dalam cantuman luar penuh (t1.foo = t2.bar) mempunyai tingkah laku yang boleh diramal. Pengoptimum boleh mengocok baris t1 dan t2 berdasarkan foo dan bar, masing-masing, untuk mengira cantuman dengan cekap.
Mencegah Produk Cartesian
Pendek untuk mengubah suai Spark SQL enjin, tidak ada cara mudah untuk memaksa sambungan luar ke atas produk Cartesian yang diperkenalkan oleh UDF. Had ini berpunca daripada sifat semula jadi UDF, yang memerlukan penilaian semua kemungkinan kombinasi hujah untuk menentukan nilainya.
Atas ialah kandungan terperinci Mengapakah Spark SQL UDFs Kadang-kadang Menyebabkan Produk Cartesian Daripada Sambungan Luar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!