1

我目前正在使用scala中的數據框,並且無法弄清楚如果該行中的值爲null,那麼如何填充具有Seq.empty[Row]值的列。我知道有df.na.fill函數,但它似乎只處理字符串,雙打或我的理解整數。在斯卡拉填充一個空值Spark數據框

本質上,我希望能夠填充空行與Seq.empty[Row],嵌套字段。我相信這是可能的,但是看起來我在網上找不到像它這樣的東西。

表的例子 -

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

從本質上講,我想要那個空變成空數組像這樣:[]。任何幫助將不勝感激,謝謝。

回答

2

您可以使用udf和​​3210(如下所示)。

val 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() 
+0

完美地將'Row'的'null'轉換爲空'Sequence'的方法很困難,因爲'coalesce'取決於列的類型是否正確。我無法有效推斷列的類型,我認爲這是一個不同的問題。不過你的觀點仍然存在,所以謝謝你的回答。 –

+0

使用'udf'注入非文字值的聰明黑客! – metasim