Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memasukkan Nilai Null dalam Apache Spark Joins?

Bagaimana untuk Memasukkan Nilai Null dalam Apache Spark Joins?

DDD
Lepaskan: 2024-12-27 06:53:22
asal
181 orang telah melayarinya

How to Include Null Values in 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"))
Salin selepas log masuk

Output joinedDf.show() adalah seperti berikut:

+-------+-------+
|numbers|letters|
+-------+-------+
|    123|    abc|
|    456|    def|
|       |    hhh|
+-------+-------+
Salin selepas log masuk

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"))
Salin selepas log masuk

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|
+-------+-------+
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan