我尝试使用Apache Beam Pardo访问Avro Generic Record中的嵌套字段。
我可以进入第一层,但我不知道如何访问更远的字段。
如果你像这样考虑Generic Record
值:
{
"eventTargetType": "GROUP",
"id": "1234",
"group":
{
"details":
{
"triggers":
[],
"attributes":
[]
},
"groupRole":
{
"algorithmResults":
[]
},
"activeTests":
[]
}
}
字符串
我可以通过这样做来达到小组水平:
@ProcessElement
fun processElement(input: ProcessContext, output: OutputReceiver<GenericRecord>) {
input.element().getAsGenericRecord("event").get("group")
}
型
这将返回数据类型为(org.apache.avro.generic.GenericData$Record)的值:
{
"event": "RENDER",
"details":
{
"ow": null,
"ty": null,
"na": null,
"attributes":[],
},
"loc": null,
"pos": null
}
型
现在我想得到details
内部的字段attributes
。我不能做另一个get()
,因为它不允许。我该怎么做呢?
2条答案
按热度按时间mec1mxoz1#
不太熟悉Pardo,但我很确定你必须手动将返回类型转换为Map或GenericRecord
字符串
uurity8g2#
我可以通过三种方法来实现这一点。
第一种方法是将Avro
Generic Record
转换为JsonObject
,然后访问嵌套字段字符串
第二种方法是将值转换为
Generic Record
:型
第三种方法是在嵌套级别中导航:
型