在Azure Data Flow中如何将Union输出的JSON对象转换为文档数组
Azure Data Flow 行分隔JSON转JSON数组实现方案
你当前输出的是行分隔JSON(JSON Lines)格式,要得到封装好的JSON数组,可选择以下两种方案:
方案1:直接调整Sink输出配置(最简便)
该方案不需要修改数据流转换逻辑,仅调整输出配置即可得到目标格式:
- 打开数据流对应的Sink配置面板,切换到设置标签页
- 「文件名选项」选择
输出到单个文件,自定义你需要的输出文件名 - 找到JSON设置配置区,将「文件模式」从默认的
行分隔JSON修改为数组格式 - 若需要示例中带缩进的格式化效果,将「格式化」选项设置为
漂亮打印即可
方案2:通过聚合组件先封装数组(适用于需要中间处理数组的场景)
如果需要在数据流内部先把数据封装成数组再做后续转换,可按以下步骤操作:
- 在Union组件后新增一个聚合转换
- 聚合配置中不需要设置「分组依据」,直接在「聚合列」区域新增自定义列,例如命名为
output_array,表达式填写collect(@),其中@代表当前行的完整数据结构,collect函数会将所有行数据汇总为数组 - 后续Sink输出时仅保留
output_array这一列,同时将Sink的JSON设置「文件模式」改为行分隔JSON即可输出目标数组结构
提示:如果你的数据量级较大,单文件输出可能存在性能瓶颈,可评估数据规模后再选择合适的方案。若必须分块输出,也可后续通过Azure Data Factory的复制活动合并多个行分隔JSON文件为单个数组文件。
内容的提问来源于stack exchange,提问作者Java user
相关产品推荐
相关产品推荐

