小编Dan*_*ann的帖子

在Spark DataFrame中将空值转换为空数组

我有一个Spark数据框,其中一列是整数数组.该列可以为空,因为它来自左外连接.我想将所有空值转换为空数组,因此我不必在以后处理空值.

我以为我可以这样做:

val myCol = df("myCol")
df.withColumn( "myCol", when(myCol.isNull, Array[Int]()).otherwise(myCol) )
Run Code Online (Sandbox Code Playgroud)

但是,这会导致以下异常:

java.lang.RuntimeException: Unsupported literal type class [I [I@5ed25612
at org.apache.spark.sql.catalyst.expressions.Literal$.apply(literals.scala:49)
at org.apache.spark.sql.functions$.lit(functions.scala:89)
at org.apache.spark.sql.functions$.when(functions.scala:778)
Run Code Online (Sandbox Code Playgroud)

显然,该when函数不支持数组类型.还有其他一些简单的方法来转换空值吗?

如果它是相关的,这是此列的架构:

|-- myCol: array (nullable = true)
|    |-- element: integer (containsNull = false)
Run Code Online (Sandbox Code Playgroud)

dataframe apache-spark apache-spark-sql apache-spark-1.5

14
推荐指数
2
解决办法
1万
查看次数