Heim >Datenbank >MySQL-Tutorial >Wie gehe ich mit Nullwerten bei Apache Spark-Joins um?

Wie gehe ich mit Nullwerten bei Apache Spark-Joins um?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-01 10:33:12511Durchsuche

How to Handle Null Values During Apache Spark Joins?

So schließen Sie Nullwerte in einen Apache Spark-Join ein

Apache Spark schließt bei Joins standardmäßig keine Zeilen mit Nullwerten ein. Dies kann zu Problemen führen, wenn Sie alle Daten, einschließlich Nullen, beibehalten möchten. In diesem Artikel wird die Lösung für dieses Problem untersucht.

Standardverhalten von Spark

Wenn Sie eine Verknüpfung für zwei DataFrames durchführen, schließt Spark Zeilen mit Nullwerten aus. Betrachten Sie zum Beispiel die folgenden DataFrames:

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

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

Wenn wir einen Join für diese DataFrames durchführen, erhalten wir die folgende Ausgabe:

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

Wie Sie sehen können, ist die Zeile mit Null in der Zahlenspalte wurde aus dem Ergebnis ausgeschlossen.

Lösung

Spark bietet einen speziellen nullsicheren Gleichheitsoperator zur Verarbeitung von Joins mit Nullwerten:

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

Dieser Operator gibt „true“ zurück, wenn beide Operanden null oder gleich sind. Mit diesem Operator können wir die gewünschte Ausgabe erhalten:

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

Zusätzliche Optionen

Spark 2.3.0 :

  • PySpark:Verwenden Column.eqNullSafe
  • SparkR: Verwenden Sie %<=>%
  • SQL: Verwendung IST NICHT UNTERSCHIEDLICH VON

Früher Spark Versionen:

Vor Spark 1.6 erforderten nullsichere Verknüpfungen ein kartesisches Produkt.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Nullwerten bei Apache Spark-Joins um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn