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