【发布时间】:2016-01-07 16:55:40
【问题描述】:
我有一个 Spark 数据框,其中一列是一个整数数组。该列可以为空,因为它来自左外连接。我想将所有空值转换为一个空数组,这样我以后就不必处理空值了。
我以为我可以这样做:
val myCol = df("myCol")
df.withColumn( "myCol", when(myCol.isNull, Array[Int]()).otherwise(myCol) )
但是,这会导致以下异常:
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)
when 函数显然不支持数组类型。还有其他简单的方法来转换空值吗?
如果相关,这里是此列的架构:
|-- myCol: array (nullable = true)
| |-- element: integer (containsNull = false)
【问题讨论】:
-
看看coalesce sql函数docs.oracle.com/database/121/SQLRF/functions033.htm#SQLRF00617
标签: apache-spark dataframe apache-spark-sql apache-spark-1.5