相关疑难解决方法(0)

将Spark UDF与结构序列一起使用

给定一个数据帧,其中一列是由以下序列生成的结构序列

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)

scala apache-spark apache-spark-sql

8
推荐指数
1
解决办法
4255
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1

scala ×1