【发布时间】:2015-06-28 01:33:39
【问题描述】:
如何广播通过窗口计算的 dstream?例如,在最后 10 分钟内,我找到满足条件的行子集(称为 send_events dstream)。我需要在过去 10 分钟内使用 send_events dstream 找到一组满足另一个条件的行(称为 ack_events_for_send_events dstream)。由于大洗牌,我不想 groupbykey 。当我做groupbykey时,每个组的大小非常小,最多10个。换句话说,我有很多组(我不确定这是否有助于优化我的操作。只是想分享一下。)
例子:
id1, type1, time1
id1, type2, time3
id2, type1, time5
id1, type1, time2
id2, type2, time4
id1, type2, time6
我想找到每个 id 的 type1 和 type2 之间的最小时间差。每个 id 最多有 10 行,但我在给定窗口中有 10,000 个 id
【问题讨论】:
-
看看关于广播变量的文档here,这很容易。无论如何,根据您的描述,我不确定您的问题的正确解决方案是什么。如果您想要更有效和具体的答案,请发布您已有的代码。
-
我实际上已经阅读了好几遍文档。在火花中,很容易理解。我可以收集 RDD 然后广播它,我的主要问题是广播 DStream,它是一系列 RDD。它应该很简单,但 DStreams 没有收集功能。有一个 foreachRDD 函数可能会有所帮助,但我不知道如何使用它来收集 DStream 中的所有数据。顺便说一句,感谢您的评论。
标签: apache-spark streaming broadcast