spark2正在将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)
但在spark 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的数据类型?
1条答案
按热度按时间xriantvc1#
既然您需要数组的字符串表示,那么将数组转换成这样的字符串如何?
它可能只是你的旧版本的Spark在做什么。我无法证实。