Fwd: TypeVariable problems

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Fwd: TypeVariable problems

Martin Neumann
Hej,

I have a construct of different generic classes stacked on each other to create a library (so the type variables get handed on). And I have some trouble getting it to work.
The current offender is a Class with 3 type variables <K, V, RV> internally it calls: 
.fold(new Tuple3<>(keyInit ,new Tuple2<Double,Double>(0d,0d), valueFold.getInit()), new CountSumFold<V,K,RV>(keySelector,valueSelector,valueFold))
I initiated the class with <String, Tuple2<String,Double>,NullValue> but when I try to run it it I get the exception:
org.apache.flink.api.common.functions.InvalidTypesException: Type of TypeVariable 'K' in 'class se.sics.anomaly.bs.models.CountSumFold' could not be determined.

Anyone has an idea on how to fix this problem?

cheers Martin

Reply | Threaded
Open this post in threaded view
|

Re: TypeVariable problems

Aljoscha Krettek
Hi,
for user functions that have generics, such as you have, you have to manually specify the types somehow. This can either be done using InputTypeConfigurable/OutputTypeConfigurable or maybe using stream.returns(<type>).

Cheers,
Aljoscha

On Fri, 29 Apr 2016 at 12:25 Martin Neumann <[hidden email]> wrote:
Hej,

I have a construct of different generic classes stacked on each other to create a library (so the type variables get handed on). And I have some trouble getting it to work.
The current offender is a Class with 3 type variables <K, V, RV> internally it calls: 
.fold(new Tuple3<>(keyInit ,new Tuple2<Double,Double>(0d,0d), valueFold.getInit()), new CountSumFold<V,K,RV>(keySelector,valueSelector,valueFold))
I initiated the class with <String, Tuple2<String,Double>,NullValue> but when I try to run it it I get the exception:
org.apache.flink.api.common.functions.InvalidTypesException: Type of TypeVariable 'K' in 'class se.sics.anomaly.bs.models.CountSumFold' could not be determined.

Anyone has an idea on how to fix this problem?

cheers Martin

Reply | Threaded
Open this post in threaded view
|

Re: TypeVariable problems

Martin Neumann
Hi Aljosha

Thanks for your answer!
I tried using returns but it does not work since the only place where I could call it is within the function that has all the generic types so there is no useful type hint to give. I could make the user hand over the class definition for the type as well but that would complicate the interface and I like to avoid that. Is there documentation or example somewhere so I can see how to use InputTypeConfigurable/OutputTypeConfigurable.

if you have time you can also reach me on hangout (might be faster than email). :-)

cheers Martin


On Mon, May 2, 2016 at 11:23 AM, Aljoscha Krettek <[hidden email]> wrote:
Hi,
for user functions that have generics, such as you have, you have to manually specify the types somehow. This can either be done using InputTypeConfigurable/OutputTypeConfigurable or maybe using stream.returns(<type>).

Cheers,
Aljoscha

On Fri, 29 Apr 2016 at 12:25 Martin Neumann <[hidden email]> wrote:
Hej,

I have a construct of different generic classes stacked on each other to create a library (so the type variables get handed on). And I have some trouble getting it to work.
The current offender is a Class with 3 type variables <K, V, RV> internally it calls: 
.fold(new Tuple3<>(keyInit ,new Tuple2<Double,Double>(0d,0d), valueFold.getInit()), new CountSumFold<V,K,RV>(keySelector,valueSelector,valueFold))
I initiated the class with <String, Tuple2<String,Double>,NullValue> but when I try to run it it I get the exception:
org.apache.flink.api.common.functions.InvalidTypesException: Type of TypeVariable 'K' in 'class se.sics.anomaly.bs.models.CountSumFold' could not be determined.

Anyone has an idea on how to fix this problem?

cheers Martin