我们如何在 Kafka 生产者代码中访问 Avro Schema 的数组字段?
How can we access the array fields from Avro Schema in the Kafka producer code?
我有以下 Avro 模式:
`{
"name": "ABC",
"type": "record",
"namespace": "com.schema.avro",
"fields": [
{
"name": "str1",
"type": "string"
},
{
"name": "arrData",
"type":["null",
{
"type": "array",
"items": {
"name": "arrData_record",
"type": "record",
"fields": [
{
"name": "var1",
"type": ["null","string"],
"default": null
},
{
"name": "var2",
"type": ["null","int"],
"default": null
}
]
}
}
],
"default": null
}
]
}`
我使用 POM.XML Maven 插件生成 classes。
以下 2 classes 是从插件生成的-
一)美国广播公司
ii) arrData_record
我可以使用 ABC 中的字段 str1,如下所示:
ABC abc = ABC.newBuilder()
.setStr1("random value")
.build()
同样,我也可以选择使用 .setArrData()。
我想使用 .setVar1() 和 .setVar2() 以类似的方式设置数组字段。
如何使用数组 class 中的字段并进行类似设置?任何示例代码都会有很大帮助。
谢谢。
从 Avro 模式生成的 class 可以像这样操作
ABC
.newBuilder()
.setArrData(Collections.singletonList(arrData_record
.newBuilder()
.setVar1("Var1")
.setVar2(2)
.build()))
.build();
尽管我接受了 Nic 的回答并且那个答案是正确的,但我最终还是使用了下面的代码,因为我想在 Var1 和 Var2 中添加多个值-
使用以下代码填充 arrData_record 的对象-
arrData_record a1 = arrData_record.newBuilder()
.setVar1("abc")
.setVar2(1)
.build();
arrData_record a2 = arrData_record.newBuilder()
.setVar1("def")
.setVar2(2)
.build();
将其添加到列表 arrData-
arrData.add(a1);
arrData.add(a2);
终于添加了arrData-
ABC abc = ABC.newBuilder()
.setStr1("随机值")
.setarrData(arrData)
.build()
我有以下 Avro 模式:
`{
"name": "ABC",
"type": "record",
"namespace": "com.schema.avro",
"fields": [
{
"name": "str1",
"type": "string"
},
{
"name": "arrData",
"type":["null",
{
"type": "array",
"items": {
"name": "arrData_record",
"type": "record",
"fields": [
{
"name": "var1",
"type": ["null","string"],
"default": null
},
{
"name": "var2",
"type": ["null","int"],
"default": null
}
]
}
}
],
"default": null
}
]
}`
我使用 POM.XML Maven 插件生成 classes。
以下 2 classes 是从插件生成的-
一)美国广播公司
ii) arrData_record
我可以使用 ABC 中的字段 str1,如下所示:
ABC abc = ABC.newBuilder()
.setStr1("random value")
.build()
同样,我也可以选择使用 .setArrData()。
我想使用 .setVar1() 和 .setVar2() 以类似的方式设置数组字段。
如何使用数组 class 中的字段并进行类似设置?任何示例代码都会有很大帮助。
谢谢。
从 Avro 模式生成的 class 可以像这样操作
ABC
.newBuilder()
.setArrData(Collections.singletonList(arrData_record
.newBuilder()
.setVar1("Var1")
.setVar2(2)
.build()))
.build();
尽管我接受了 Nic 的回答并且那个答案是正确的,但我最终还是使用了下面的代码,因为我想在 Var1 和 Var2 中添加多个值-
使用以下代码填充 arrData_record 的对象-
arrData_record a1 = arrData_record.newBuilder() .setVar1("abc") .setVar2(1) .build();
arrData_record a2 = arrData_record.newBuilder() .setVar1("def") .setVar2(2) .build();
将其添加到列表 arrData-
arrData.add(a1); arrData.add(a2);
终于添加了arrData-
ABC abc = ABC.newBuilder() .setStr1("随机值") .setarrData(arrData) .build()