【发布时间】:2016-02-23 12:44:06
【问题描述】:
我有两个包含时间信息的 RDD。 RDD 被分成不同的分区。 一种是形式
16:00:00
16:00:18
16:00:25
16:01:01
16:01:34
16:02:12
16:02:42
...
和另一个包含 tuple2 形式的时间跨度
<16:00:00, 16:00:59>
<16:01:00, 16:01:59>
<16:02:00, 16:02:59>
...
我需要聚合第一个和第二个 RDD,通过根据第二个中的值聚合第一个 RDD 的值,以获得类似的东西
<<16:00:00, 16:00:59>, [16:00:00,16:00:18,16:00:25]>
<<16:01:00, 16:01:59>, [16:01:01,16:01:34]>
<<16:02:00, 16:02:59>, [16:02:12,16:02:42]>
...
或者,或者,类似的东西
<<16:00:00, 16:00:59>, 16:00:00>
<<16:00:00, 16:00:59>, 16:00:18>
<<16:00:00, 16:00:59>, 16:00:25>
<<16:01:00, 16:01:59>, 16:01:01>
<<16:01:00, 16:01:59>, 16:01:34>
<<16:02:00, 16:02:59>, 16:02:12>
<<16:02:00, 16:02:59>, 16:02:42>
...
我正在尝试使用整个范围的 spark 转换函数,但我很难找到一个适用于这种不同性质的 RDD 的函数。我知道我可能会选择cartesian 产品,然后进行过滤,但我想要一个“更好”的解决方案。我试过zipPartition,这可能有效,但我的分区可能不一致,例如16:00:00 可能最终出现在不存在相应聚合值(元组<16:00:00, 16:00:59>)的分区中。
解决这个问题的最佳方法是什么?
PS:我使用的是 Java,但也欢迎使用 Scala 解决方案。 谢谢
【问题讨论】:
-
间隔是否总是规律的?
标签: java apache-spark transformation aggregation rdd