我们有一些旧文件格式,我需要将其迁移到 Avro 存储。棘手的部分是记录基本上有
- 一些常见的字段,
- 一个鉴别域和
- 一些独特的字段,特定于鉴别器字段选择的类型
所有这些都存储在同一个文件中,没有任何顺序,完全相互混合。(这是遗产……)
在 Java/面向对象编程中,可以将我们的记录概念表示如下:
abstract class RecordWithCommonFields {
private Long commonField1;
private String commonField2;
...
}
class RecordTypeA extends RecordWithCommonFields {
private Integer specificToA1;
private String specificToA1;
...
}
class RecordTypeB extends RecordWithCommonFields {
private Boolean specificToB1;
private String specificToB1;
...
}
想象一下数据是这样的:
commonField1Value;commonField2Value,TYPE_IS_A,specificToA1Value,specificToA1Value
commonField1Value;commonField2Value,TYPE_IS_B,specificToB1Value,specificToB1Value
所以我想处理一个传入的文件并将其内容写入 Avro 格式,以某种方式表示不同类型的记录。
有人可以给我一些关于如何实现这一目标的想法吗?