Rumah >pangkalan data >tutorial mysql >Bagaimana Mengendalikan Nilai Null Semasa Apache Spark Joins?

Bagaimana Mengendalikan Nilai Null Semasa Apache Spark Joins?

Patricia Arquette
Patricia Arquetteasal
2025-01-01 10:33:12593semak imbas

How to Handle Null Values During Apache Spark Joins?

Cara Memasukkan Nilai Null dalam Apache Spark Join

Apache Spark tidak menyertakan baris dengan nilai null secara lalai semasa gabungan. Ini boleh menyebabkan masalah apabila anda ingin mengekalkan semua data, termasuk nulls. Artikel ini meneroka penyelesaian kepada masalah ini.

Gelagat Spark Lalai

Apabila anda melakukan gabungan pada dua DataFrames, Spark akan mengecualikan baris dengan nilai nol. Sebagai contoh, pertimbangkan DataFrames berikut:

val numbersDf = Seq(
  ("123"),
  ("456"),
  (null),
  ("")
).toDF("numbers")

val lettersDf = Seq(
  ("123", "abc"),
  ("456", "def"),
  (null, "zzz"),
  ("", "hhh")
).toDF("numbers", "letters")

Jika kami melakukan gabungan pada DataFrames ini, kami akan mendapat output berikut:

+-------+-------+
|numbers|letters|
+-------+-------+
|    123|    abc|
|    456|    def|
|       |    hhh|
+-------+-------+

Seperti yang anda lihat, baris dengan null dalam lajur nombor telah dikecualikan daripada keputusan.

Penyelesaian

Spark menyediakan istimewa pengendali kesaksamaan null-safe untuk pengendalian cantuman dengan nilai nol:

numbersDf
  .join(lettersDf, numbersDf("numbers") <=> lettersDf("numbers"))
  .drop(lettersDf("numbers"))

Pengendali ini akan kembali benar jika kedua-dua operan adalah batal atau jika ia sama. Menggunakan operator ini, kita boleh mendapatkan output yang diingini:

+-------+-------+
|numbers|letters|
+-------+-------+
|    123|    abc|
|    456|    def|
|   null|    zzz|
|       |    hhh|
+-------+-------+

Pilihan Tambahan

Spark 2.3.0 :

  • PySpark: Gunakan Column.eqNullSafe
  • SparkR: Gunakan %<=>%
  • SQL: Penggunaan TIDAK BERBEZA DARI

Spark Terdahulu Versi:

Sebelum Spark 1.6, sambungan selamat-null memerlukan produk Cartesian.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Nilai Null Semasa Apache Spark Joins?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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