Scala 在Spark数据帧中将空值替换为空值

Scala 在Spark数据帧中将空值替换为空值,scala,apache-spark,dataframe,apache-spark-sql,Scala,Apache Spark,Dataframe,Apache Spark Sql,我有一个n列的数据帧,我想用空字符串替换所有这些列中的空字符串 我试着用 val ReadDf = rawDF.na.replace("columnA", Map( "" -> null)); 及 他们两个都不工作 任何线索都将不胜感激。谢谢 您的第一个方法由于一个错误而失败,该错误阻止replace用空值替换值,请参阅 您的第二种方法失败了,因为您混淆了执行器端数据帧指令的驱动程序端Scala代码:您的if-else表达式将在驱动程序上计算一次(而不是每个记录);您希望在调用when函

我有一个n列的数据帧,我想用空字符串替换所有这些列中的空字符串

我试着用

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

他们两个都不工作


任何线索都将不胜感激。谢谢

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

您的第二种方法失败了,因为您混淆了执行器端数据帧指令的驱动程序端Scala代码:您的if-else表达式将在驱动程序上计算一次(而不是每个记录);您希望在调用
when
函数时将其替换为调用
;此外,要比较列的值,您需要使用
==
运算符,而不是Scala的
=
,Scala的
=
只是比较驾驶员侧
对象:

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

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

这里有很多错误,不仅与用null替换空字符串有关,还与jdbc错误有关。事实上,第二个错误不能用当前的描述和信息解决,因为它无法复制。请检查您的问题,因为它是关闭的主题!我不明白的一件事是,[这个][1]与我问的问题有什么关系。它讨论了MYSQL中的字符串数组,我的问题是如何在数据帧中将空字符串替换为空字符串。有人能给我点化一下吗?给你。我没有投票赞成将这个问题作为重复问题结束,但正如我在前面的评论中所说,您有两个不同的错误,最新的错误消息与选民提到的问题有关。@eliasah我不是指您。很抱歉,我没有向这些人讲话。让我看看是否可以编辑注释并添加它们。我不确定为什么这是作为SQL问题的副本关闭的,但它已重新打开。
import org.apache.spark.sql.functions._

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