在Beam中设置AvroIO的逻辑类型

时间:2017-11-08 19:13:34

标签: google-cloud-dataflow apache-beam

我正在尝试在ApacheBeam(在Dataflow上)将类序列化为Avro。

我有一个我要写给Avro的课程,它使用Joda DateTime属性作为逻辑类型timestamp-millis

在Beam之外,我会通过注释属性来映射它

class Event {
  @AvroSchema("{\"type\": \"long\", \"logicalType\": \"timestamp-millis\"}")
  DateTime dt;
  // ... 
}

然后调用

// MyTimestampConversion extends TimeConversions.TimestampConversion
// implementing getRecommendedSchema() 
// This is fixed in Avro 1.8.3
ReflectData.get().addLogicalTypeConversion(new MyTimestampConversion());

在写入文件之前。

但是,当每个AvroIO.Write分发时,我如何将TimestampConversion类传递给每个进程/节点中的ReflectData并调用addLogicalTypeConversion()。

这就是写似乎被称为

的地方

https://github.com/apache/beam/blob/master/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroIO.java#L357

据我所知,AvroIO中的所有功能都是静态的还是私有的,不容易扩展? (这可能反映了我的java)

0 个答案:

没有答案