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
Freigeben: 2025-01-01 10:33:12
Original
509 Leute haben es durchsucht

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")
Nach dem Login kopieren

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

+-------+-------+
|numbers|letters|
+-------+-------+
|    123|    abc|
|    456|    def|
|       |    hhh|
+-------+-------+
Nach dem Login kopieren

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"))
Nach dem Login kopieren

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|
+-------+-------+
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage