1

我正在尝试 Dataflow 中的新显示数据功能,以便在 Google Cloud Dataflow UI 中显示更多详细信息。但是, custom 的显示数据PTransform不显示。在我的数据流管道中,我进行了如下转换:

Pipeline p = // ..
p.apply(new PTransform<PCollection<Integer>, PCollection<Integer>>() {
  @Override
  public PCollection<Integer> apply(PCollection<Integer> input) {
    return input
      .apply(/* .. */)
      .apply(/* .. */)
      .apply(/* .. */);
  }

  @Override
  public void populateDisplayData(DisplayData.Builder builder) {
    builder.add(DisplayData.item("foo", "bar"));
  }
});

当我运行 Dataflow 作业时,UI 似乎没有显示foo=bar显示数据。

4

1 回答 1

2

复合转换不支持显示数据。相反,您可以将显示数据附加到转换执行的任何用户定义函数。例如,如果上述组合中的内部转换之一使用 a ParDo,您可以将显示数据方法重写为:

Pipeline p = // ..
p.apply(new PTransform<PCollection<Integer>, PCollection<Integer>>() {
  @Override
  public PCollection<Integer> apply(PCollection<Integer> input) {
    return input
      .apply(/* .. */)
      .apply(/* .. */)
      .apply(ParDo.of(new DoFn<Integer, Integer>() {
        @Override
        public void processElement(ProcessContext c) { /* .. */ } 

        @Override
        public void populateDisplayData(DisplayData.Builder builder) {
          builder.add(DisplayData.item("foo", "bar"));
        }            
      }));
  }
});

将显示数据功能扩展到 Beam 和 Dataflow SDK 中的复合转换存在JIRA 问题。

于 2016-07-26T18:26:43.083 回答