【发布时间】:2016-03-13 04:09:13
【问题描述】:
我有一个关于使用 Spark 分桶时间事件以及处理它的最佳方法的问题。
所以我正在摄取一个非常大的数据集,每个事件都有特定的开始/停止时间。
例如,我可能会在三周内加载数据。在主时间窗口内,我将其划分为较小间隔的桶。所以 3 周分为 24 小时时间段,数组看起来像 [(start_epoch, stop_epoch), (start_epoch, stop_epoch), ...]
在每个时间段内,我将我的事件映射/减少到一个较小的集合中。
我想按事件所属的时间段来划分事件。
处理此问题的最佳方法是什么?每个 map/reduce 操作都会产生一个新的 RDD,所以我实际上只剩下一大堆 RDD。
从驱动程序中循环遍历该数组,然后在每个 RDD 上执行其他转换/操作以获得每个时间窗口的结果是否“安全”?
谢谢!
【问题讨论】:
-
看起来只是一个很小的数组。应该没问题。为什么不试试呢?
-
在 3 周内执行 1 小时的 bins 大约是 504 给或取 1,所以这是一个数组中的许多 RDD。我刚刚尝试过,似乎工作正常,只要我
.persist()是较小 RDD 派生的主要 RDD。所以不会每次都重新收集主 RDD。
标签: apache-spark