我有一种情况需要将管道中的主数据流(1.5TB)连接到2个不同的数据集(4.92GB和17.35GB)。我用来为两者做CoGroupByKey的关键是相同的。有没有办法避免在第一次完成后重新加入连接的左侧?目前我只是将输出保留为KV>。这似乎比在第一次连接后分段发出每个元素要好,但第二个groupByKey似乎比我预期的要花费更长的时间。我打算开始考虑拆开CoGroupByKey,看看我是否可以忽略一方的分组,但我真的感觉更安全而不是在这一点上降到那个级别。
This was prior to keeping Iterables grouped after the first join
答案 0 :(得分:1)
在处理主输入时,您是否考虑过将较小的数据集作为View.asMap()
或View.asMultimap()
侧输入进行访问? Dataflow运行器具有map和multimap side输入的优化实现,可有效执行键查找,而无需将整个数据加载到内存中。