【发布时间】:2015-10-23 12:58:31
【问题描述】:
所以我有一个带有不规则时间序列数据的 RDD:
1,
4、
6、
..等等
我需要将其填充到常规时间序列中:
1,
2、
3、
4、
5、
6、
..等等
到目前为止,我已经创建了一个具有 1、2、3、4、5、6、.. 的 RDD,然后将其左外连接到原始 RDD,这给了我:
1,
2、
3、
4、
5、
6、
..等等
所以我面临的问题是用前一个非 Null 行中的值填充那些 2,3,5。
我宁愿在 RDD 级别上执行此操作而不使用 sparkSQL,这当然是最后的选择。转到 scala 数组级别并不是很吸引人,因为对于性能问题,我更愿意将其保持在 RDD 级别。
谢谢
【问题讨论】:
-
去 sparkSQL (...) 当然是最后的选择 - 你能解释一下为什么吗?
-
当时我仅有的两个解决方案是:a)通过 sparkSQL 的窗口函数; b)火花外的纯scala
-
基于我之前的Oracle经验的window函数一般是最慢的,所以我猜不这样做的原因纯粹是心理:)
-
其实这种情况下直觉还不错。只有当您可以提供
PARTITION BY子句时,Spark 窗口函数才能相对较好地执行。在这里,这并非不可能,但远非直截了当,而且不是一项工作就能完成的。
标签: scala apache-spark rdd