Отображение потока данных Данные отсутствуют в составном преобразовании

Я пробую новую версию отображение данных в Dataflow, чтобы дополнительные сведения отображались в пользовательском интерфейсе Google Cloud Dataflow. Однако отображаемые данные для пользовательских 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, пользовательский интерфейс не показывает foo=bar отображаемые данные.


person Scott Wegner    schedule 26.07.2016    source источник


Ответы (1)


Отображаемые данные не поддерживаются в составных преобразованиях. Вместо этого вы можете прикрепить отображаемые данные к любой пользовательской функции, которую выполняет ваше преобразование. Например, если одно из внутренних преобразований в приведенной выше композиции использует 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"));
        }            
      }));
  }
});

Существует проблема JIRA для расширения функциональности отображения данных на составные преобразования в Beam и Dataflow. SDK.

person Scott Wegner    schedule 26.07.2016