Heim >Datenbank >MySQL-Tutorial >Wie kann ich Nullwerte bei Apache Spark-Joins beibehalten?

Wie kann ich Nullwerte bei Apache Spark-Joins beibehalten?

DDD
DDDOriginal
2024-12-31 17:36:11204Durchsuche

How Can I Preserve Null Values During Apache Spark Joins?

Beibehalten von Nullwerten in Apache Spark-Joins

Standardmäßig lässt Apache Spark Zeilen mit Nullwerten aus, wenn Joins ausgeführt werden. Um diese Werte in die Join-Ausgabe einzubeziehen, bietet Spark mehrere Optionen.

NULL-Safe-Gleichheitsoperator (<=>)

Spark 1.6 führte einen speziellen NULL-Wert ein -sicherer Gleichheitsoperator, der es Ihnen ermöglicht, Nullwerte in Ihren Join aufzunehmen Kriterien.

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

Column.eqNullSafe (PySpark 2.3.0)

In PySpark 2.3.0 und höher können Sie Column.eqNullSafe verwenden, um NULL- sichere Gleichheit prüft.

numbers_df = sc.parallelize([
    ("123", ), ("456", ), (None, ), ("", )
]).toDF(["numbers"])

letters_df = sc.parallelize([
    ("123", "abc"), ("456", "def"), (None, "zzz"), ("", "hhh")
]).toDF(["numbers", "letters"])

numbers_df.join(letters_df, numbers_df.numbers.eqNullSafe(letters_df.numbers))

%<=>% (SparkR)

SparkR bietet einen %<=>%-Operator für NULL-sichere Gleichheitsprüfungen .

numbers_df <- createDataFrame(data.frame(numbers = c("123", "456", NA, "")))
letters_df <- createDataFrame(data.frame(
  numbers = c("123", "456", NA, ""),
  letters = c("abc", "def", "zzz", "hhh")
))

head(join(numbers_df, letters_df, numbers_df$numbers %<=>% letters_df$numbers))

IST NICHT UNTERSCHIEDLICH VON (SQL)

In SQL (Spark 2.2.0) können Sie IS NOT DISTINCT FROM verwenden, um Nullwerte in Joins beizubehalten.

SELECT * FROM numbers JOIN letters 
ON numbers.numbers IS NOT DISTINCT FROM letters.numbers

Dieser Operator kann auch verwendet werden mit der DataFrame-API:

numbersDf.alias("numbers")
  .join(lettersDf.alias("letters"))
  .where("numbers.numbers IS NOT DISTINCT FROM letters.numbers")

Das obige ist der detaillierte Inhalt vonWie kann ich Nullwerte bei Apache Spark-Joins beibehalten?. 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