I was able to get generic types to work when I used GenericTypeInfo and
made sure to wrap the generic in some concrete type. In my case I used
scala.Some as the wrapper. It looks something like this (in Scala):

import org.apache.flink.api.java.typeutils.GenericTypeInfo
val descriptor = new ListStateDescriptor[Some[T]]("blah", new
GenericTypeInfo(classOf[Some[T]]))

Since the descriptor is Some[T] instead of T, I had to wrap and unwrap it
every time I used it.

On Sat, Mar 28, 2020 at 6:02 AM Laurent Exsteens <
laurent.exste...@euranova.eu> wrote:

> Hello,
>
> Using Flink 1.8.1, I'm getting the following error:
>      *The TypeHint is using a generic variable.This is not supported,
> generic types must be fully specified for the TypeHint.*
> when trying to create a ListStateDescriptor with a generic type (full
> sample code in attachment):
>
> public class AND<LEFT, RIGHT> extends RichCoFlatMapFunction<LEFT, RIGHT, 
> Tuple2<LEFT, RIGHT>> {
>
>     private transient ListState<LEFT> leftState;
>     private transient ListState<RIGHT> rightState;
>
>     @Override
>     public void open(Configuration config) {
>         ListStateDescriptor<LEFT> left_descriptor =
>             new ListStateDescriptor<>(
>                 "and_left",
>                 TypeInformation.of(new TypeHint<LEFT>() {
>                 }));
>         leftState = getRuntimeContext().getListState(left_descriptor);
>
> This gives me the following stack trace:
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *Exception in thread "main"
> org.apache.flink.runtime.client.JobExecutionException: Job execution
> failed. at
> org.apache.flink.runtime.jobmaster.JobResult.toJobExecutionResult(JobResult.java:146)
> at
> org.apache.flink.runtime.minicluster.MiniCluster.executeJobBlocking(MiniCluster.java:638)
> at
> org.apache.flink.streaming.api.environment.LocalStreamEnvironment.execute(LocalStreamEnvironment.java:123)
> at
> org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.java:1509)
> at eu.euranova.leadcep.Main.main(Main.java:61)Caused by:
> org.apache.flink.util.FlinkRuntimeException: The TypeHint is using a
> generic variable.This is not supported, generic types must be fully
> specified for the TypeHint. at
> org.apache.flink.api.common.typeinfo.TypeHint.<init>(TypeHint.java:54) at
> eu.euranova.leadcep.AND$1.<init>(AND.java:22) at
> eu.euranova.leadcep.AND.open(AND.java:19) at
> org.apache.flink.api.common.functions.util.FunctionUtils.openFunction(FunctionUtils.java:36)
> at
> org.apache.flink.streaming.api.operators.AbstractUdfStreamOperator.open(AbstractUdfStreamOperator.java:102)
> at
> org.apache.flink.streaming.api.operators.co.CoStreamFlatMap.open(CoStreamFlatMap.java:46)
> at
> org.apache.flink.streaming.runtime.tasks.StreamTask.openAllOperators(StreamTask.java:424)
> at
> org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:290)
> at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) at
> java.lang.Thread.run(Thread.java:745)*
>
>
> Googling the error didn't give a working solution.
>
> Is there a way to work with state using Generic types? if yes, how?
>
> Thanks in advance for your help!
>
> Best Regards,
>
> Laurent.
>
> --
> *Laurent Exsteens*
> Data Engineer
> (M) +32 (0) 486 20 48 36
>
> *EURA NOVA*
>
> Rue Emile Francqui, 4
>
> 1435 Mont-Saint-Guibert
>
> (T) +32 10 75 02 00
>
> *euranova.eu <http://euranova.eu/>*
>
> *research.euranova.eu* <http://research.euranova.eu/>
>
> ♻ Be green, keep it on the screen

Reply via email to