如何合并火花行

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;

【讨论】:

以上是关于如何合并火花行的主要内容,如果未能解决你的问题,请参考以下文章

火花重新分区和合并

如何在火花中合并或连接具有不相等列号的数据框

如何在火花中合并两个不同的数据帧? [复制]

合并,合并火花数据框中的 2 列

火花连接数据帧和合并模式

组合并计算火花数据框中的 json 列