java - 如何对 Spark 数据集进行嵌套迭代并删除元素

标签 java apache-spark apache-spark-sql

嗨,我有一个 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/

相关文章:

java - 特定的java正则表达式

apache-spark - Spark :2. 0.2 java.util.ConcurrentModificationException:KafkaConsumer 对于多线程访问不安全

scala - 在 Spark 中将数据帧写入 Teradata

java - 获取 HashMap 中元素子集的有效方法是什么?

java - 如何在jtable中动态设置行的颜色?

scala - 如何从 HDFS 检索 Avro 数据?

apache-spark - 在HD Insights上7天后,Spark Streaming作业完全失败,没有错误日志

python - 在 PySpark 中提取特定行

scala - 如何将自定义日期时间格式转换为时间戳?

java - 如何在渲染 box2Dlights 时调整视口(viewport)?