Skip to main content

MergeContent

将一组数据流根据用户定义的策略合并在一起,多用于合并JSON对象为JSON数组,对JSON对象格式不作严格要求

参数说明

合并策略

指定合并数据流内容的算法。

合并格式

指定将用于合并内容的格式。

属性策略

指定保留到新的数据流的属性。

最小条目数

指定需要合并的最小数据流数量,如设置为2,则需要数据流数量达到2才会进行合并;若达不到则组件会一直等待

最大条目数

指定需要合并的最大数据流数量,如设置为10,则需要数据流数量大于或等于10才会进行合并;若达不到则组件会一直等待,若大于10则将10条数据流合并为1个,10-到20的部分合并为下一个,以此类推

最小合并结果大小

指定合并后数据流最小大小

最大合并结果大小

指定合并后数据流的最大大小

分隔符策略

  • 文件名:从指定文件中读取合并的页眉、页脚和分界符
  • 文本:从组件属性配置中读取页眉、页脚和分界符

页眉

指定作为页眉的文本内容或者文件名,例如合并JSON对象为JSON数组时,页眉为" [ "。

页脚

指定作为页脚的文本内容或者文件名,例如合并JSON对象为JSON数组时,页脚为" ] "。

分界符

指定作为分界符的文本内容或者文件名,例如合并JSON对象为JSON数组时,分界符为","。

压缩级别

指定对合并后数据流的压缩级别,若不使用Zip格式合并数据流时,忽略此组件属性

保留路径

使用Zip格式合并时保存文件的路径

Tar修改时间

使用tar格式合并时,指定是否在包中包含时间

输出连线

  • failure连线表示合并失败的数据流输出
  • merged连线表示合并成功的数据流输出
  • original连线表示合并成功后原始的数据流输出

示例

Generate配置

由GenerateFlowfile生成触发流程的流文件,该组件生成的流文件内容为空,然后通过两个ReplaceText组件来替换流文件内容,两个替换的流文件内容为如下JSON对象:

ReplaceText组件1的替换内容:
{
"sname":"jack",
"id":"00001",
"state":"NY"
ReplaceText组件2的替换内容:
{
"sname":"marry",
"id":"00002"
}

流程说明

在此流程中合并的两个JSON对象格式是不一样的,因为MergeContent不严格要求合并数据流的格式,为了凸显这一特性,特意设定为两个格式不一致的JSON对象

MergeContent设置

以合并JSON对象为例,设置了合并策略为Bin-Packing,合并格式为二进制连接,元数据策略为不合并非常见的元数据,最小条目数和最大条目数都为2,分隔符策略为文本,页眉为'[',页脚为']',分界符为',',其余属性保持默认配置。

结果

最后输出结果如下:

  • merged连线输出结果

  • original连线输出结果

流程模板

参见附件(请右键另存保存):模板文件