有谁知道如何创建包含某些类对象列表的Avro架构?
我希望生成的类如下所示:
class Child {
String name;
}
class Parent {
list<Child> children;
}
为此,我编写了部分模式文件,但不知道如何告诉Avro创建Children
类型的对象列表?
我的架构文件如下所示:
{
"name": "Parent",
"type":"record",
"fields":[
{
"name":"children",
"type":{
"name":"Child",
"type":"record",
"fields":[
{"name":"name", "type":"string"}
]
}
}
]
}
现在的问题是,我可以将字段children
标记为Child
类型或数组,但不知道如何将其标记为array of objects of type Child
类?
有人可以帮忙吗?
答案 0 :(得分:42)
您需要使用array类型来创建列表。 以下是处理您的用例的更新架构。
{
"name": "Parent",
"type":"record",
"fields":[
{
"name":"children",
"type":{
"type": "array",
"items":{
"name":"Child",
"type":"record",
"fields":[
{"name":"name", "type":"string"}
]
}
}
}
]
}
答案 1 :(得分:1)
我有以下课程,avro maven插件相应地生成了两个课程:
public class Employees{
String accountNumber;
String address;
List<Account> accountList;
}
public class Account {
String accountNumber;
String id;
}
Avro文件格式:
{
"type": "record",
"namespace": "com.mypackage",
"name": "AccountEvent",
"fields": [
{
"name": "accountNumber",
"type": "string"
},
{
"name": "address",
"type": "string"
},
{
"name": "accountList",
"type": {
"type": "array",
"items":{
"name": "Account",
"type": "record",
"fields":[
{ "name": "accountNumber",
"type": "string"
},
{ "name": "id",
"type": "string"
}
]
}
}
}
]
}