我正在尝试使用Dataflow中的新display data功能,以便在Google Cloud Dataflow用户界面中显示其他详细信息。但是,自定义PTransform
的显示数据不会显示。在我的Dataflow管道中,我有一个变换:
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"));
}
});
当我运行数据流作业时,UI似乎没有显示foo=bar
显示数据。
答案 0 :(得分:2)
composite transforms不支持显示数据。相反,您可以将显示数据附加到转换执行的任何用户定义的函数。例如,如果上述复合中的一个内部变换使用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"));
}
}));
}
});
有a JIRA issue将显示数据功能扩展到Beam和Dataflow SDK中的复合变换。