在Scala Spark Dataframe中填充空值

时间:2016-12-16 21:45:20

标签: scala apache-spark dataframe apache-spark-sql spark-dataframe

我目前正在使用scala中的数据框,如果该行中的值为Seq.empty[Row],则无法弄清楚如何填充null值的列。我理解有df.na.fill函数,但它似乎只处理我的理解中的字符串,双精度或整数。

基本上,我希望能够用Seq.empty[Row]填充空行,用于嵌套字段。我确信这是可能的,但似乎我无法在网上找到类似的内容。

表示例 -

+-----------+-------------------+-----------+---------+------------------+ | field| field2| | values| +-----------+-------------------+-----------+----------+------------------+ | stuff2| stuff 2| | null | | stuff1| stuff1| | [val 1,val2,..]| +-----------+-------------------+-----------+----------+------------------+

基本上,我希望null变成一个空数组,如下所示:[]。任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:3)

您可以使用coalesceval df = Seq(("stuff2","stuff2",null), ("stuff2","stuff2",Array("value1","value2")),("stuff3","stuff3",Array("value3"))).toDF("field","field2","values") df.show() import org.apache.spark.sql.functions.udf val array_ = udf(() => Array.empty[String]) val df2 = df.withColumn("values", coalesce(df("values"), array_())) df2.show() 执行此操作。

{{1}}