如何在flink中使用泛型类的类?我遇到了错误:
函数的返回类型' main(StreamingJob.java:63)'由于类型擦除,无法自动确定。您可以通过对转换调用的结果使用returns(...)方法来提供类型信息提示,或者让您的函数实现' ResultTypeQueryable'接口
我使用的课程形式为:
class MaybeProcessable<T> {
private final T value;
public MaybeProcessable(T value) {
this.value = value;
}
public T get() {
return value;
}
}
我正在使用一个示例flink工作,如:
public static void main(String[] args) throws Exception {
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.addSource(new PubSubSource(PROJECT_ID, SUBSCRIPTION_NAME))
.map(MaybeProcessable::new)
.map(MaybeProcessable::get)
.writeAsText("/tmp/flink-output", FileSystem.WriteMode.OVERWRITE);
// execute program
env.execute("Flink Streaming Java API Skeleton");
}
现在我可以使用.returns()
函数添加一个TypeInformation实例:
.map(MaybeProcessable::new).returns(new MyCustomTypeInformationClass(String.class))
但这需要我编写自己的序列化程序。有没有更简单的方法来实现这一目标?
答案 0 :(得分:0)
你可以使用
.returns(TypeInformation.of(new TypeHint<MaybeProcessing<#CONCRETE_TYPE_HERE>>{})
每次重复使用通用类型的MapFunction来设置返回类型,而不再创建自己的自定义类。