簡體   English   中英

如何在spark數據集和drop元素上進行嵌套迭代

[英]how to make nested iteration over spark dataset and drop element

嗨,我有一個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"))

我可以使用Lead函數在列中追加下一個開始時間的值,然后減去當前結束日期和下一個開始日期,僅此而已。

> dataset.withColumn("lead",lead(dataset.col(start_date),1).over(orderBy(start_date)));

+----------+---------------------------------------------+
|  trackId |  start_time    |  end_time   |      lead    |
+-----+--------------------------------------------------+
|  1       | 12:00:00       |   12:04:00  |     12:05:00 |
+----------+---------------------------------------------+
|  2       | 12:05:00       |   12:08:00  |  12:20:00    |  
+----------+---------------------------------------------+
|  3       | 12:20:00       |   12:22:00  |     null     | 
+----------+---------------------------------------------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM