给定一个数据帧,其中一列是由以下序列生成的结构序列
val df = spark
.range(10)
.map((i) => (i % 2, util.Random.nextInt(10), util.Random.nextInt(10)))
.toDF("a","b","c")
.groupBy("a")
.agg(collect_list(struct($"b",$"c")).as("my_list"))
df.printSchema
df.show(false)
Run Code Online (Sandbox Code Playgroud)
输出
root
|-- a: long (nullable = false)
|-- my_list: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- b: integer (nullable = false)
| | |-- c: integer (nullable = false)
+---+-----------------------------------+
|a |my_list |
+---+-----------------------------------+
|0 |[[0,3], [9,5], [3,1], [4,2], [3,3]]|
|1 |[[1,7], [4,6], [5,9], [6,4], [3,9]]|
+---+-----------------------------------+
Run Code Online (Sandbox Code Playgroud)
我需要在每个结构列表上运行一个函数.函数原型类似于下面的函数
case class DataPoint(b: Int, c: Int) …Run Code Online (Sandbox Code Playgroud)