我有一个PCollection,我希望将其作为侧输入传递并在ParDo中访问其元素。
所以我创建了一个PCollectionView:
final PCollectionView<List<Foo>> view =
myPCollection.apply(View.asList());
但是当传递侧输入时如何在ParDo中访问它的元素?
一个例子真的有帮助。
谢谢
答案 0 :(得分:3)
此代码段主要来自Beam programming guide。
final PCollectionView<List<Foo>> view =
myPCollection.apply(View.asList());
PCollection<String> resultingPCollection =
someOtherPCollection.apply(ParDo
.of(new DoFn<String, String>() {
@ProcessElement
public void processElement(ProcessContext c) {
List<Foo> mySideInput = c.sideInput(view);
// Do something with side input
}
}).withSideInputs(view)
);
如果您不想使用匿名DoFn,您还可以将PCollectionView作为其构造函数的一部分传递,并在processElement函数中访问它。