我有两个非常大的PCollection <KV<Long,XYZ>>
和<KV<Long,ABC>>
。我需要创建一个PCollection <KV<XYZ,ABC>>
,我可以使用CoGroupByKey.create()
转换。它适用于较小的数据集,但在热键的情况下会卡住。我是新来的梁,我试图找出如何使用CombineFn
来解决这个问题。现在我的代码看起来像这样
final PCollection <KV<Long,XYZ>> xyzKV;
final PCollection <KV<Long,ABC>> abcKV;
final TupleTag<XYZ> t1 = new TupleTag<>();
final TupleTag<ABC> t1 = new TupleTag<>();
final PCollection <KV<XYZ,ABC>> combinedCollection =
KeyedPCollectionTuple.of(t1, xyzKV).and(t2, abcKV)
.apply(CoGroupByKey.create());
// this works fine but has performance issues in case of hotkeys.
1条答案
按热度按时间cbeh67ev1#
这取决于你使用的是哪种跑步者,以及他们提供了什么选项。一个类似的问题是Join two large volumne of PCollection has performance issue。
如果您使用的是DataflowRunner,您可以启用shuffle服务来加快进程。但是,根据文档,默认情况下,此选项当前在Dataflow上启用。