嗨,我有一个 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 |
+----------+----------------+----------------------------+
那么我该怎么做呢?
最佳答案
您没有给出确切的架构,但本质上您想使用 Spark 的 window
函数。类似的东西
df.groupBy(window(df.col("time"),"50 seconds").agg(first("id").as("id"))
关于java - 如何对 Spark 数据集进行嵌套迭代并删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49811794/