【发布时间】:2018-09-17 03:39:53
【问题描述】:
我有一个带有架构的 Hive 表:
id bigint
name string
updated_dt bigint
有许多记录具有相同的id,但不同的名称和updated_dt。对于每个id,我想返回updated_dt最大的记录(整行)。
我目前的做法是:
从 Hive 读取数据后,我可以使用 case 类将数据转换为 RDD,然后使用 groupBy() 将所有具有相同 id 的记录分组在一起,然后选择具有最大 updated_dt 的记录。比如:
dataRdd.groupBy(_.id).map(x => x._2.toSeq.maxBy(_.updated_dt))
但是,由于我使用的是 Spark 2.1,它首先使用案例类将数据转换为数据集,然后上述方法将数据转换为 RDD 以便使用 groupBy()。将数据集转换为 RDD 可能会有一些开销。所以我想知道是否可以在不转换为 RDD 的情况下在数据集级别实现这一点?
非常感谢
【问题讨论】:
标签: apache-spark group-by dataset apache-spark-sql rdd