Then how I am suppose to implement that function? On 09/14/2018 05:29 PM, 杨力 wrote: > A java.util.Iterable is expected to provide iterators again and again. > > On Fri, Sep 14, 2018 at 10:53 PM Alejandro Alcalde <algu...@gmail.com> > wrote: > >> Hello all, >> >> I am trying to replicate the code in the Docs ( >> https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/batch/dataset_transformations.html#combinable-groupreducefunctions >> ) >> >> But I keep getting the following exception: >> >> The Iterable can be iterated over only once. Only the first call to >> 'iterator()' will succeed. >> >> This is what I have: >> >> class MyCombinableGroupReducer >> extends GroupReduceFunction[(Double, Double), Double] >> with GroupCombineFunction[(Double, Double), (Double, Double)] { >> import collection.JavaConverters._ >> override def reduce( >> in: java.lang.Iterable[(Double, Double)], >> out: Collector[Double]): Unit = >> { >> val r = in.asScala.reduce ( (a, b) => ///ERROR HAPPENS HERE >> (a._1, a._2 + b._2) >> ) >> out.collect(r._1 + r._2) >> } >> >> override def combine( >> in: lang.Iterable[(Double, Double)], >> out: Collector[(Double, Double)]): Unit = { >> ??? >> } >> } >> >> Where am I transversing `in` a second time? may be is the call to >> `asScala`? >> >> Bests >> >> *-- Alejandro Alcalde - elbauldelprogramador.com >> <http://elbauldelprogramador.com>* >> >
-- elbauldelprogramador.com
0xAD8D7F23318B63C0.asc
Description: application/pgp-keys