在Apache Spark Join 中包含空值
Apache Spark 的預設聯結行為會排除具有空值的行,這對需要保存這些價值觀。本文透過解釋如何在 Apache Spark 連線操作中包含空值來解決此問題。
預設 Spark 行為
預設情況下,Spark 執行內部聯接,這會導致消除連接條件中涉及的任一列中具有空值的行。為了說明這一點,請考慮以下範例:
joinedDf.show() 的輸出如下所示:
正如預期的那樣,在numberDf 的“numbers”列從連接結果中排除。
包括 Null Values
Spark 透過空安全等式運算子提供了解決此問題的方法。透過使用以下程式碼,可以將空值包含在聯接操作中:
此修改後的聯結操作會產生以下輸出,其中現在包括先前排除的具有空值的行:
要注意的是,在1.6 之前的Spark版本中應謹慎使用此空安全相等運算符,因為它需要昂貴的笛卡爾
Spark 2.3.0 及更高版本
在Spark 2.3.0及更高版本中,PySpark 中可以使用Column.eqNullSafe 方法,而%=< SparkR 中可以使用;=>% 運算子來達到相同的結果。此外,Spark 2.2.0 中可以使用 SQL 語法 IS NOT DISTINCT FROM 以及 DataFrame API 在連線操作中包含空值。
以上是如何在 Apache Spark 連線中包含空值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!