私はApache BeamバージョンのDataflowを使用していますが、ジェネリッククラスを出力するPTransformを作成しようとすると、現在問題が発生しています。このような変換の最小の例があります。これは単に型を繰り返し出力します。Dataflowでジェネリッククラスを渡す
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ハンドルは、このような汎用クラスを渡すことができますか?可能であれば、私は現在何を間違っていますか?
メッセージだけでなく、完全な例外スタックトレースを含めてください。 – jkff