【发布时间】:2015-12-29 03:47:34
【问题描述】:
google cloud dataflow sdk 有一个类可以为不同的 Avro 类型注册 Coders。
CoderRegistry cr = p.getCoderRegistry();
cr.registerStandardCoders();
cr.registerCoder(Row.class, AvroCoder.of(Row.class));
cr.registerCoder(Destination.class, AvroCoder.of(Destination.class));
cr.registerCoder(Device.class, AvroCoder.of(Device.class));
cr.registerCoder(Location.class, AvroCoder.of(Location.class));
cr.registerCoder(Source.class, AvroCoder.of(Source.class));
cr.registerCoder(DimensionalMetric.class, AvroCoder.of(DimensionalMetric.class));
cr.registerCoder(DimensionSet.class, AvroCoder.of(DimensionSet.class));
cr.registerCoder(MetricSet.class, AvroCoder.of(MetricSet.class));
但正如你可以想象的那样,这会变得非常麻烦,我想使用 java 反射 API 来自动注册包 com.brightcove.rna.model 中的所有类。我想这看起来像这样:
void registerAllModels(Pipeline p) {
CoderRegistry cr = p.getCoderRegistry();
Reflections r = new Reflections("com.brightcove.rna.model");
Set<Class<? extends IndexedRecord>> classes = r.getSubTypesOf(IndexedRecord.class);
for (Class<? extends IndexedRecord> clazz : classes) {
cr.registerCoder(clazz, AvroCoder.of(clazz));
}
}
很遗憾,这不起作用。我在这里做错了什么?
【问题讨论】:
-
您能否提供错误信息或描述错误行为?
标签: java reflection google-cloud-dataflow