Spark-将字符串标签分配给空值时获取类型不匹配

时间:2018-09-10 10:02:54

标签: scala apache-spark

我有一个数据集,其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"兼容的列类型

1 个答案:

答案 0 :(得分:1)

这很奇怪,我只是尝试了以下代码段:

val df = Seq("yoyo","yaya",null).toDF("code")
df.withColumn("code", when($"code".isNull,lit("NON")).otherwise($"code")).show

这工作正常,可以分享您的Spark版本。您是否导入了spark隐式函数?您确定您的列是StringTyped吗?