簡體   English   中英

Spark 2 將 Scala 數組轉換為 WrappedArray

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM