Heim > Datenbank > MySQL-Tutorial > Wie füge ich Nullwerte in Apache Spark-Joins ein?

Wie füge ich Nullwerte in Apache Spark-Joins ein?

DDD
Freigeben: 2024-12-27 06:53:22
Original
129 Leute haben es durchsucht

How to Include Null Values in Apache Spark Joins?

Einschließen von Nullwerten in Apache Spark Join

Das standardmäßige Join-Verhalten von Apache Spark schließt Zeilen mit Nullwerten aus, was eine Herausforderung für Benutzer darstellt, die dies benötigen Bewahrung solcher Werte. In diesem Artikel wird dieses Problem behoben, indem erläutert wird, wie Nullwerte in einen Apache Spark-Join-Vorgang einbezogen werden.

Standardverhalten von Spark

Standardmäßig führt Spark einen Inner Join durch Eliminiert Zeilen mit Nullwerten in jeder Spalte, die an der Join-Bedingung beteiligt ist. Um dies zu veranschaulichen, betrachten Sie das folgende Beispiel:

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

Die Ausgabe von joinDf.show() wäre wie folgt:

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

Erwartungsgemäß die Zeile mit einem Nullwert in Die Spalte „Zahlen“ von zahlenDf ist von den Join-Ergebnissen ausgeschlossen.

Einschließlich Null Werte

Spark bietet eine Lösung für dieses Problem durch einen nullsicheren Gleichheitsoperator. Mithilfe des folgenden Codes können die Nullwerte in die Join-Operation einbezogen werden:

numbersDf
  .join(lettersDf, numbersDf("numbers") <=> lettersDf("numbers"))
  .drop(lettersDf("numbers"))
Nach dem Login kopieren

Diese modifizierte Join-Operation führt zu der folgenden Ausgabe, die nun die zuvor ausgeschlossene Zeile mit Nullwert enthält:

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

Es ist wichtig zu beachten, dass dieser nullsichere Gleichheitsoperator in Spark-Versionen vor 1.6 vorsichtig verwendet werden sollte, da er einen kostspieligen kartesischen Operator erforderte Produkt.

Spark 2.3.0 und höher

In Spark 2.3.0 und höher kann die Column.eqNullSafe-Methode in PySpark verwendet werden, während %=< Der Operator ;=>% kann in SparkR verwendet werden, um das gleiche Ergebnis zu erzielen. Darüber hinaus kann die SQL-Syntax IS NOT DISTINCT FROM in Spark 2.2.0 zusammen mit der DataFrame-API verwendet werden, um Nullwerte in Join-Vorgänge einzubeziehen.

Das obige ist der detaillierte Inhalt vonWie füge ich Nullwerte in Apache Spark-Joins ein?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage