簡體   English   中英

在Spark Dataframe中將空值替換為空

[英]Replace Empty values with nulls in Spark Dataframe

我有一個n列數的數據框,我想用null替換所有這些列中的空字符串。

我嘗試使用

val ReadDf = rawDF.na.replace("columnA", Map( "" -> null));

val ReadDf = rawDF.withColumn("columnA", if($"columnA"=="") lit(null) else $"columnA" );

他們兩個都沒有工作。

任何線索將不勝感激。 謝謝。

您的第一種方法可能由於無法replace的錯誤而失敗,請參見此處

第二種方法失敗了,因為您將驅動程序端的Scala代碼與執行程序端的Dataframe指令混淆了:if-else表達式將在驅動程序中進行一次評估(而不是對每個記錄); 您希望將其替換為對when函數的調用; 此外,要比較列的值,您需要使用===運算符,而不是Scala的== ,后者只是比較驅動程序端的Column對象:

import org.apache.spark.sql.functions._

rawDF.withColumn("columnA", when($"columnA" === "", lit(null)).otherwise($"columnA"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM