我有一个数据集,其stringType列包含空值。我想用带有字符串的空值来更改每一行。我正在尝试以下方法:
val renameDF = DF
.withColumn("code", when($"code".isNull,lit("NON")).otherwise($"code"))
但是我收到以下异常:
org.apache.spark.sql.AnalysisException:无法解析'CASE WHEN (del。
code
为空),则由于以下原因导致'NON'ELSE del。code
END' 数据类型不匹配:THEN和ELSE表达式都应为同一类型 或强制使用普通类型;
如何使字符串成为与$"code"
兼容的列类型
答案 0 :(得分:1)
这很奇怪,我只是尝试了以下代码段:
val df = Seq("yoyo","yaya",null).toDF("code")
df.withColumn("code", when($"code".isNull,lit("NON")).otherwise($"code")).show
这工作正常,可以分享您的Spark版本。您是否导入了spark隐式函数?您确定您的列是StringTyped吗?