我有一个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" }]
2条答案
按热度按时间xdyibdwo1#
您可以将常见元素转换为key-value pair(例如KV〈String,Demographics〉)并应用GroupByKey。
在GroupByKey操作之后,你将得到一个键的键值对和一个人口统计的Iterable,你应该能够写一个ParDo/DoFn将其转换成JSON。
请注意,根据数据或组的大小,存在并行问题。整个组将由单个工作进程处理。
如果使用流式传输,则需要使用窗口和触发器的概念来定义管道的行为。有关详细信息,请查看Beam Programming Guide。
bhmjp9jg2#
您可以使用JsonToRow转换将Json转换为Beam行,然后利用所有Beam模式转换,如Group、Join等