Dalam Spark SQL, menggunakan fungsi takrif pengguna (UDF) dalam pertanyaan SQL boleh memperkenalkan tingkah laku yang tidak dijangka, terutamanya kemunculan produk Cartesian dan bukannya luar yang dimaksudkan sepenuhnya bergabung.
Apabila menggunakan UDF, Spark menganggapnya sebagai fungsi sewenang-wenangnya, dengan mengambil kira setiap kombinasi hujah yang mungkin untuk penilaian. Ini memerlukan produk Cartesian untuk memastikan pemeriksaan menyeluruh semua pasangan.
Tidak seperti UDF, perbandingan kesamaan asas seperti t1.foo = t2.bar mempunyai tingkah laku yang boleh diramal, membenarkan Spark untuk mengocok baris t1 dan t2 dengan cekap berdasarkan kriteria kesamaan. Pengoptimuman ini tiada dengan UDF kerana sifatnya yang tidak dapat diramalkan.
Dalam algebra hubungan, cantuman luar pada asasnya dinyatakan sebagai cantuman semula jadi, yang hanya pengoptimuman dalam enjin SQL yang popular. Oleh itu, adalah penting untuk menyedari bahawa memaksa sambungan luar ke atas produk Cartesian dengan UDF tidak mudah dilaksanakan tanpa mengubah enjin Spark SQL itu sendiri.
Atas ialah kandungan terperinci UDF dalam Spark SQL: Mengapa Mereka Kadang-kadang Mencipta Produk Cartesian Daripada Gabungan Luar Penuh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!