7
在斯卡拉/火花,如何將空字符串,如「」,轉換爲「NULL」?需要先修剪它然後轉換爲「NULL」。謝謝。火花數據幀修剪列和轉換
dataframe.na.replace("cut", Map(" " -> "NULL")).show //wrong
在斯卡拉/火花,如何將空字符串,如「」,轉換爲「NULL」?需要先修剪它然後轉換爲「NULL」。謝謝。火花數據幀修剪列和轉換
dataframe.na.replace("cut", Map(" " -> "NULL")).show //wrong
您可以創建一個簡單的函數來完成它。首先一對夫婦的進口:
import org.apache.spark.sql.functions.{trim, length, when}
import org.apache.spark.sql.Column
和定義:
def emptyToNull(c: Column) = when(length(trim(c)) > 0, c)
最後一個快速測試:
val df = Seq(" ", "foo", "", "bar").toDF
df.withColumn("value", emptyToNull($"value"))
應該產生以下結果:
+-----+
|value|
+-----+
| null|
| foo|
| null|
| bar|
+-----+
如果你想替換空的s與串特林"NULL
您可以添加otherwise
條款:
def emptyToNullString(c: Column) = when(length(trim(c)) > 0, c).otherwise("NULL")