访问PCollectionView的元素<list <foo>&gt; :Google Cloud Dataflow / Apache Beam

时间:2017-07-12 15:16:32

标签: google-cloud-dataflow apache-beam

我有一个PCollection,我希望将其作为侧输入传递并在ParDo中访问其元素。

所以我创建了一个PCollectionView:

final PCollectionView<List<Foo>> view =
    myPCollection.apply(View.asList());

但是当传递侧输入时如何在ParDo中访问它的元素?

一个例子真的有帮助。

谢谢

1 个答案:

答案 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函数中访问它。