Scala 在Spark数据帧中将空值替换为空值
我有一个n列的数据帧,我想用空字符串替换所有这些列中的空字符串 我试着用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函
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"))