子类化avro记录?

ckx4rj1h  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(337)

我有两种类型的avrorecords都扩展了avro.specificrecord。有没有一种方法可以在java中使一个成为另一个的子类?其中一个是personrecord,我想成为它的子类的是employeerecord。我不想用avro数据填充普通java类的原因是我正在使用hadoop,如果可能的话,我希望直接使用avro文件。
澄清一下,我感兴趣的是多态性。我想能够使用一个函数,作为参数的personrecord与employeerecord。
谢谢!

ie3xauqp

ie3xauqp1#

我想我明白你想做什么(在avro模式定义文件中“子类化”avro记录),但我认为这是不可能的。
相反,这样做的一个方法是 EmployeeRecord 有一个 PersonRecord 成员嵌套在其中,然后是特定于员工的相关信息。例如:

{ 
  "type": "record",
  "name": "PersonRecord",
  "namespace": "com.yourapp",
  "fields": [
    {
      "name": "first",
      "type": "string"
    },
    { etc... }
    ]
}

{ 
  "type": "record",
  "name": "EmployeeRecord",
  "namespace": "com.yourapp",
  "fields": [
    {
      "name": "PersonInfo",
      "type": "PersonRecord"
    },
    { 
      "name": "salary",
      "type": "int"
     },
    { etc... }
    ]
}

相关问题