Spark:地图组和展平数组

问题描述 投票:0回答:1

我具有以下结构的数据集

| year| id | data            |min_week|max_week||
|2017 | 1  |  [32,21,34]     |       1|       3||
|2017 | 2  | [132, 121, 134] |       1|       3||
|2018 | 1  |  [5, 3, 3,0,1]  |       1|       5||
|2018 | 2  | [15, 13, 13]    |       1|       3||

我希望在对数据进行按年排序后进行展平,像这样

| min_year|max_year| id |                    data|min_week|max_week||
|---------+--------+----+------------------------+--------+--------||
|     2017|    2018| 1  |  [32,21,34,5,3,3, 0, 1]|       1|       5||
|     2017|    2018| 2  |  [132,121,134,15,13,13]|       1|       3||

我尝试了以下操作,但没有给出我想要的内容

case class WeeklyData
  (id: Long,
   min_week: Int,
   max_week: Int,
   data: List[Int],
   year: Int
  )

val data = spark.read.parquet("s3://path")
                    .as[WeeklyData]
                    .groupByKey(k => (k.product_id, k.year))
                    .mapGroups(
                      (k, iter)  => {
                        val s = iter
                          .toList
                          .sortBy(_.year)
                          .flatMap(_.data)
                        s
                      }
                    )
apache-spark apache-spark-sql apache-spark-dataset
1个回答
0
投票

实际上,我知道了,我所做的工作是按ID和Year分组的,并将函数传递给分组的数据。我需要的只是按ID分组并将函数传递给它

© www.soinside.com 2019 - 2024. All rights reserved.