在Spark Dataframe中将空值替换为空值

时间:2017-05-21 21:49:04

标签: scala apache-spark dataframe apache-spark-sql

我有一个包含n列的数据框,我想用空值替换所有这些列中的空字符串。

我尝试使用

api/messages/{long}

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

他们两个都没有用。

任何线索都将受到高度赞赏。谢谢。

1 个答案:

答案 0 :(得分:3)

由于阻止replace无法使用空值替换值的错误,您的第一个方法会失败,请参阅here

你的第二种方法失败了,因为你对驱动程序端的Scala代码混淆了执行程序端的Dataframe指令:你的if-else表达式将在驱动程序上一次进行评估(而非每条记录);您希望通过调用when函数替换它;此外,要比较列的值,您需要使用===运算符,而不是仅仅比较驱动程序端==对象的Scala Column:< / p>

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

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