考虑到Java on Apache beam是并行工作的,如何使用它将所有JSON连接成一个JSON?

jqjz2hbq  于 2023-02-14  发布在  Java
关注(0)|答案(2)|浏览(73)

我有一个JSON结构,格式如下

{"companyId":"xxxx", "asOfDate":"2022-12-11T00:00:00", "data":[{"demographicVariable":"Ethnicity", "value": "23" }]}

{"companyId":"xxxx", "asOfDate":"2022-12-11T00:00:00", "data":[{"demographicVariable":"Age Band", "value": 10}]}

考虑到Java on Apache beam是并行工作的,如何使用它将所有JSON连接成一个JSON?
结果应为:

{"companyId":"xxxx", "asOfDate":"2022-12-11T00:00:00", "data":[{"demographicVariable":"Age Band", "value": 10},{"demographicVariable":"Ethnicity", "value": "23" }]
xdyibdwo

xdyibdwo1#

您可以将常见元素转换为key-value pair(例如KV〈String,Demographics〉)并应用GroupByKey
在GroupByKey操作之后,你将得到一个键的键值对和一个人口统计的Iterable,你应该能够写一个ParDo/DoFn将其转换成JSON。
请注意,根据数据或组的大小,存在并行问题。整个组将由单个工作进程处理。
如果使用流式传输,则需要使用窗口和触发器的概念来定义管道的行为。有关详细信息,请查看Beam Programming Guide

bhmjp9jg

bhmjp9jg2#

您可以使用JsonToRow转换将Json转换为Beam行,然后利用所有Beam模式转换,如Group、Join等

相关问题