2017-05-03 2 views

Antwort

0

ich aus dem Import sehen, dass Sie‘. re mit Apache Balken. Sie sollten Sum.ofIntegers() statt new Sum.SumIntegerFn() verwenden.

beachten Sie auch, dass in Github Kopf, Aggregatoren entfernt wurden. stattdessen wird ein Zähler metric ähnliches Verhalten liefern. Siehe Metrics für weitere Details.

+0

aber Ich fand diese von dem Strahl [Dokument] (https://beam.apache.org/documentation/programming-guide/#transforms-usercodereqs) Sum.SumIntegerFn() verbindet, die Elemente in dem Eingang PCollection. 'PCollection pc = ...; PCollection sum = pc.apply ( Combine.global (new Sum.SumIntegerFn())); ' – bignano

+0

Die Dokumentation ist veraltet und die' Sum.SumIntegerFn() 'ist nicht mehr verfügbar. 'Sum.ofIntegers()' hat es ersetzt. Für diesen Anwendungsfall können Sie auch 'Sum.integersGlobally()' ausführen. Die ursprüngliche Frage betraf Aggregatoren, nicht Kombinat. –

+0

jetzt habe ich diese "Sum.ofIntegers kann nicht zu einem Typ aufgelöst werden" – bignano

0

Die Sum.SumIntegerFn() wird nicht mehr öffentlich zugänglich gemacht, es wird durch Sum.ofIntegers() ersetzt. Wenn Sie eine Problemumgehung benötigen, um Ihre eigene Iterable-Funktion anstelle der eingebauten Iterable-Funktion zu verwenden, versuchen Sie den folgenden Codeblock.

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; 
     } 
    } 
Verwandte Themen