1

我正在嘗試Dataflow中的新功能display data,以便在Google雲端數據流用戶界面中顯示更多詳細信息。但是,自定義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")); 
    } 
}); 

當我運行數據流作業時,UI似乎並沒有顯示foo=bar顯示數據。

回答

1

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在梁和數據流的顯示數據的功能延伸到複合變換軟件開發工具包。