2017-05-03 47 views

回答

0

我從進口看你」。重新使用Apache梁。您應該使用Sum.ofIntegers()而不是new Sum.SumIntegerFn()

還要注意的是,在Github的頭,聚合器已被刪除。取而代之的是,一個計數器指標將提供類似的行爲。見Metrics瞭解更多詳情。

+0

但我發現這個從梁[文件](https://beam.apache.org/documentation/programming-guide/#transforms-usercodereqs)Sum.SumIntegerFn()結合在輸入PCollection的元素。 'PCollection pc = ...; PCollection sum = pc.apply( Combine.globally(new Sum.SumIntegerFn()));' – bignano

+0

文檔已過期,'Sum.SumIntegerFn()'不再暴露。 Sum.ofIntegers()'取代了它。對於那個用例,你也可以執行'Sum.integersGlobally()'。最初的問題是關於聚合器,而不是Combine。 –

+0

現在我得到了這個「Sum.ofIntegers無法解析爲類型」 – bignano

0

Sum.SumIntegerFn()不再公開曝光,它被替換爲Sum.ofIntegers()。如果您需要一種解決方法來使用您自己的Iterable函數而不是內置函數,請嘗試下面的代碼塊。

something = createAggregator("something", new SumIntegers()); 

public static class SumIntegers implements SerializableFunction<Iterable<Integer>, Integer> { 
     @Override 
     public Integer apply(Iterable<Integer> input) { 
      Integer sum = 0; 
      for (Integer item : input) { 
       sum += item; 
      } 
      return sum; 
     } 
    } 
相關問題