[英]How to cast a WrappedArray[WrappedArray[Float]] to Array[Array[Float]] in spark (scala)
[英]Spark 2 converting scala array to WrappedArray
當我將數組傳遞給函數時,Spark 2 會自動將 Scala 數組轉換為 WrappedArray。 但是,在 Spark 1.6 中,數組被轉換為像 '[a,b,c]' 這樣的字符串。 這是我的代碼
val df_date_agg = df
.groupBy($"a",$"b",$"c")
.agg(sum($"d").alias("data1"),sum($"e").alias("data2"))
.groupBy($"a")
.agg(collect_list(array($"b",$"c",$"data1")).alias("final_data1"),
collect_list(array($"b",$"c",$"data2")).alias("final_data2"))
當我運行上面的代碼來觸發 1.6 時。 我低於架構
|-- final_data1: array (nullable = true)
| |-- element: string (containsNull = true)
|-- final_data2: array (nullable = true)
| |-- element: string (containsNull = true)
但在火花2
|-- final_data1: array (nullable = true)
| |-- element: array (containsNull = true)
| | |-- element: string (containsNull = true)
|-- final_data1: array (nullable = true)
| |-- element: array (containsNull = true)
| | |-- element: string (containsNull = true)
如何根據 spark 1 更改 spark 2 的數據類型?
既然你想要一個數組的字符串表示,那么如何將數組轉換成這樣的字符串?
val df_date_agg = df
.groupBy($"a",$"b",$"c")
.agg(sum($"d").alias("data1"),sum($"e").alias("data2"))
.groupBy($"a")
.agg(collect_list(array($"b",$"c",$"data1") cast "string").alias("final_data1"),
collect_list(array($"b",$"c",$"data2") cast "string").alias("final_data2"))
這可能只是您舊版本的 spark 正在做的事情。 我無法驗證。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.