誰かが、あるクラスのオブジェクトのリストを含むAvroスキーマを作成する方法を知っていますか?
生成されたクラスを以下のようにしたい:
class Child {
String name;
}
class Parent {
list<Child> children;
}
このために、スキーマファイルの一部を作成しましたが、Children
型のオブジェクトのリストを作成するようにAvroに指示する方法がわかりません。
私のスキーマファイルは次のようになります:
{
"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
クラスとしてマークする方法がわからないということです。
誰でも助けていただけますか?
リストを作成するには array typeを使用する必要があります。以下は、ユースケースを処理する更新されたスキーマです。
{
"name": "Parent",
"type":"record",
"fields":[
{
"name":"children",
"type":{
"type": "array",
"items":{
"name":"Child",
"type":"record",
"fields":[
{"name":"name", "type":"string"}
]
}
}
}
]
}
私は次のクラスを持っていて、avro mavenプラグインはそれに応じて2つのクラスを生成しました:
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"
}
]
}
}
}
]
}