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

Attachment: 0xAD8D7F23318B63C0.asc
Description: application/pgp-keys

Reply via email to