【发布时间】:2020-10-05 05:49:18
【问题描述】:
我有一个命名元组的序列如下:
Seq[GeoDetails] 其中 GeoDetails 的类型为 GeoDetails(geo_name: String, first_geo_time: Long)
在序列中,单个 Geo 可以有多个记录,我想编写一个函数到 geo_name 上的 Group by,并为 first_geo_time 取 MIN 值。例如
输入:
Seq(GeoDetails("cn", 1111111111111L), GeoDetails("mx", 2222222222222L), GeoDetails("mx", 3333333333333L), GeoDetails("cn", 4444444444444L))
期望的输出:
Seq(GeoDetails("cn", 1111111111111L), GeoDetails("mx", 2222222222222L))
我认为使用 groupBy 和 foldLeft 可以完成这项工作,但我是 Scala 新手,希望能得到一些帮助。我想在维护案例类的情况下获得输出
【问题讨论】:
-
只使用 Scala 或者你的问题是如何在 Spark 中做到这一点?
-
.groupBy(_.geo_name).values.map(_.minBy(_.first_geo_time)) -
我正在尝试在用 Scala 编写的 Spark 流中进行操作。这是 group by 语句中生成的列之一。
标签: scala apache-spark