【发布时间】:2017-10-03 23:50:24
【问题描述】:
我正在使用 Apache Beam 版本的 Dataflow,当我尝试创建输出泛型类的 PTransform 时遇到了问题。这是此类转换的一个最小示例,它只是重复输出一个类型。
public class BadTransform
extends PTransform<PCollection<Result>, PCollection<Class<? extends Type1>>> {
@Override
public PCollection<Class<? extends Type1>> expand(
PCollection<Result> input) {
return input.apply(
ParDo.of(
new DoFn<Result, Class<? extends Type1>>() {
@ProcessElement
public void processElement(ProcessContext processContext) throws Exception {
processContext.output(Type2.class);
}
}));
}
}
此转换编译没有问题,但运行时会产生错误消息java.lang.ClassCastException: org.apache.beam.sdk.repackaged.com.google.common.reflect.Types$WildcardTypeImpl cannot be cast to java.lang.reflect.TypeVariable
我没有任何专门的编码器。
Beam/Dataflow 可以像这样处理泛型类的传递吗?如果可以,我目前做错了什么?
【问题讨论】:
-
请包括完整的异常堆栈跟踪,而不仅仅是消息。
标签: java generics google-cloud-dataflow apache-beam