如何合并火花行
Posted
技术标签:
【中文标题】如何合并火花行【英文标题】:how to merge spark row 【发布时间】:2018-04-24 10:40:03 【问题描述】:嗨,我有一个 Track.class 的数据集,我想合并所有在相同时间间隔内的轨道,例如 5 分钟。即任何轨道在 5 分钟前结束的轨道之后开始的轨道都是相同的轨道。它看起来像融合任务。
我的意见:
+----------+---------------------------------------------+
| trackId | start_time | end_time |
+-----+--------------------------------------------------+
| 1 | 12:00:00 | 12:04:00 |
+----------+---------------------------------------------+
| 2 | 12:05:00 | 12:08:00 |
+----------+---------------------------------------------+
| 3 | 12:20:00 | 12:22:00 |
+----------+---------------------------------------------+
输出 :(trackId : 1,2 被合并,因为每个开始和结束的差异在 5 分钟内)
+----------+----------------+----------------------------+
| trackId | start_time | end_time |
+-----+--------------------------------------------------+
| 1 | 12:00:00 | 12:08:00 |
+----------+---------------------------------------------+
| 3 | 12:20:00 | 12:22:00 |
+----------+----------------+----------------------------+
那我该怎么做呢?
【问题讨论】:
欢迎来到***。您能否提供更多详细信息,说明到目前为止您尝试了哪些方法以及哪些方法无效? 【参考方案1】:尝试将rank()
与groupBy()
一起使用。这是您可能想要考虑使用 spark 运行的查询。下面的查询是为了给你一个想法,它没有经过尝试和测试。
select trackId,start_tim,end_time,
start_time-end_time as difference,
rank () over (order by difference asc) as rank
from table_name
where rank=1
group by difference;
【讨论】:
以上是关于如何合并火花行的主要内容,如果未能解决你的问题,请参考以下文章