Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memasukkan Nilai Null dalam Apache Spark Joins?
Termasuk Nilai Null dalam Apache Spark Join
Gelagat gabungan lalai Apache Spark mengecualikan baris dengan nilai nol, memberikan cabaran untuk pengguna yang memerlukan pemeliharaan nilai-nilai tersebut. Artikel ini menangani isu ini dengan menerangkan cara memasukkan nilai nol dalam operasi gabungan Apache Spark.
Gelagat Percikan Lalai
Secara lalai, Spark melakukan cantuman dalaman, yang menghapuskan baris dengan nilai nol dalam mana-mana lajur yang terlibat dalam keadaan gabungan. Untuk menggambarkan ini, pertimbangkan contoh berikut:
val numbersDf = Seq( ("123"), ("456"), (null), ("") ).toDF("numbers") val lettersDf = Seq( ("123", "abc"), ("456", "def"), (null, "zzz"), ("", "hhh") ).toDF("numbers", "letters") val joinedDf = numbersDf.join(lettersDf, Seq("numbers"))
Output joinedDf.show() adalah seperti berikut:
+-------+-------+ |numbers|letters| +-------+-------+ | 123| abc| | 456| def| | | hhh| +-------+-------+
Seperti yang dijangkakan, baris dengan nilai nol dalam lajur "nombor" nomborDf dikecualikan daripada hasil gabungan.
Termasuk Null Values
Spark menyediakan penyelesaian kepada isu ini melalui pengendali kesaksamaan null-safe. Dengan menggunakan kod berikut, nilai nol boleh disertakan dalam operasi cantum:
numbersDf .join(lettersDf, numbersDf("numbers") <=> lettersDf("numbers")) .drop(lettersDf("numbers"))
Operasi cantum yang diubah suai ini menghasilkan output berikut, yang kini termasuk baris yang dikecualikan sebelum ini dengan nilai nol:
+-------+-------+ |numbers|letters| +-------+-------+ | 123| abc| | 456| def| | null| zzz| | | hhh| +-------+-------+
Adalah penting untuk ambil perhatian bahawa pengendali kesaksamaan null-safe ini harus digunakan dengan berhati-hati dalam versi Spark sebelum 1.6, kerana ia memerlukan kos yang mahal Produk Cartesian.
Spark 2.3.0 dan Kemudian
Dalam Spark 2.3.0 dan lebih baru, kaedah Column.eqNullSafe boleh digunakan dalam PySpark, manakala %= <=>% operator boleh digunakan dalam SparkR untuk mencapai hasil yang sama. Selain itu, sintaks SQL IS NOT DISTINCT FROM boleh digunakan dalam Spark 2.2.0 bersama-sama dengan API DataFrame untuk memasukkan nilai nol dalam operasi gabungan.
Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Nilai Null dalam Apache Spark Joins?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!