MergeContent
描述:
根据用户定义的策略将一组数据流合并在一起,并将它们打包到一个数据流中。建议只为单个传入连接配置处理器,因为不会从不同连接中的数据流创建数据流组。此组件根据需要更新mime.type属性。
标签:
merge, content, correlation, tar, zip, stream, concatenation, archive, flowfile-stream, flowfile-stream-v3
参数:
如下列表中,必填参数则标识为加粗. 其他未加粗参数,则表示为可选参数。表中同时提到参数默认值设置, 并且 参数还支持 表达式语言.
名字 | 默认值 | 允许值列表 | 描述 |
---|---|---|---|
合并策略 | Bin-Packing | - Bin-Packing - Defragment | 指定用于合并内容的算法。“Defragment”算法将属性关联的数据流组合成一个单一的数据流。'Bin-Packing'算法生成由随机选择的数据流填充的数据流 |
合并格式 | 二进制连接 | - TAR - ZIP - 数据流,v3 - 数据流,v2 - 数据流包,v1 - 二进制连接 - Avro | 确定将用于合并内容的格式。 |
属性策略 | 仅保留公共属性 | - 仅保留公共属性 - 保留所有唯一属性 | 确定应将哪些数据流属性添加到包中。如果选择“保留所有唯一属性”,则将保留每个数据流上的每个属性,除非其值与另一个数据流的值冲突。如果选择“仅保留公共属性”,则合并文件中每个数据流中存在相同值的属性才会被保留。 |
关联属性名称 | 如果指定,则相似的数据流将被合并在一起,其中'相似的数据流'表示指定的属性具有的相同值的数据流。如果未指定,数据流将按从队列中提取的顺序进行合并。 支持表达式语言 (支持流属性和变量) | ||
元数据策略 | 不合并非常见的元数据 | - 使用第一元数据 - 仅保留公共元数据 - 不合并非常见的元数据 - 忽略元数据 | 对于输入格式支持元数据(例如Avro)的数据流,此属性确定应将哪些元数据添加到合并结果中。如果选择“使用第一元数据”,则将使用要合并的第一个数据流中的元数据键/值。如果选择“仅保留公共元数据”,则仅保留合并结果中具有相同值的所有数据流上存在的元数据。如果选择“忽略元数据”,则不会将任何元数据传输到传出的合并数据流。如果选择“不合并非常见元数据”,则不会合并任何其元数据值与第一个要合并的数据流不匹配的数据流。 |
最小条目数 | 1 | 合并结果中包含的最小文件数 | |
最大条目数 | 1000 | 合并结果中包含的最大文件数 | |
最小合并结果大小 | 0 B | 合并结果的最小大小 | |
最大合并结果大小 | 合并结果的最大大小。如果未指定,则没有最大值。 | ||
最大Bin年龄 | 将触发Bin完成的最大时间。预期格式为<duration> <time unit> ,其中<duration> 为正整数,<time unit> 为秒,分,小时之一 | ||
最大bin数 | 5 | 指定可以在内存中保留的最大bin数 | |
分隔符策略 | 文件名 | - 文件名 - 文本 | 确定页眉,页脚和分界符是否应来自于指定文件的内容,或者是使用属性中的值。 |
页眉 | 指定要作为页眉的文件名。如果未指定,则不提供页眉。仅当使用二元并置合并策略时,此属性才有效;否则,它会被忽略。 支持表达式语言 (支持流属性和变量) | ||
页脚 | 指定要作为页脚的文件名。如果未指定,则不提供页脚。仅当使用二元并置合并策略时,此属性才有效;否则,它会被忽略。 支持表达式语言 (支持流属性和变量) | ||
分界符 | 指定要作为分界符的文件名。如果未指定,则不提供分界符。仅当使用二元并置合并策略时,此属性才有效;否则,它会被忽略。 支持表达式语言 (支持流属性和变量) | ||
压缩级别 | 1 | - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 | 指定使用Zip合并格式时要使用的压缩级别;如果不使用Zip合并格式,则忽略此值 |
保留路径 | 不保留 | - 保留 - 不保留 | 如果使用Zip或Tar格式,则指定数据流的路径是否应包含在其条目名称中;如果使用其他合并策略,则忽略此值 |
Tar修改时间 | ${file.lastModifiedTime} | 如果使用Tar格式,指定Tar包中的条目是否应该通过表达式存储修改后的时间戳(例如${file.lastModifiedTime}或静态值,两者都必须匹配ISO8601格式'yyyy-MM-dd'T'HH:mm:ssZ';如果使用其他合并策略或留空,则忽略此值 支持表达式语言 (支持流属性和变量) |
连线:
名字 | 描述 |
---|---|
failure | 如果无法创建合并结果,那么用于创建合并结果的所有数据流都将转移到failure状态 |
original | 用于创建合并结果的原数据流 |
merged | 包含合并内容的数据流 |
读取属性:
名字 | 描述 |
---|---|
fragment.identifier | 仅在<合并策略>属性设置为Defragment时适用。此属性具有相同值的所有数据流将合并在一起。 |
fragment.index | 仅在<合并策略>属性设置为Defragment时适用。此属性表明应该组装片段的顺序。使用Defragment合并策略时,此属性必须存在于所有数据流上,并且必须是唯一的介于0和fragment.count属性值之间的整数。如果两个或多个数据流“fragment.identifier”属性具有相同值并且“fragment.index”属性具有相同值,则只处理的第一个数据流,并且不会将后续数据流合并到Bin中。 |
fragment.count | 仅在<合并策略>属性设置为Defragment时适用。此属性必须存在于所有具有fragment.identifier属性相同值的数据流上。单个合并结果中的所有数据流此属性应具备相同的值。此属性的值表明给定合并结果中应该预期的数据流数。 |
segment.original.filename | 仅在<合并策略>属性设置为Defragment时适用。此属性必须存在于所有具有fragment.identifier属性相同值的数据流上。单个合并结果中的所有数据流此属性应具备相同的值。此属性的值将用于已完成的合并数据流的文件名。 |
tar.permissions | 仅在<合并结果>属性设置为Tar时适用。该属性的值必须为3个字符;每个字符必须在0到7(包括)范围内,用来设置应用于数据流的Tar条目的文件权限。如果此属性缺失或具有无效值,则将使用默认值644 |
写入属性:
名字 | 描述 |
---|---|
filename | 合并多个文件时,文件名来自segment.original.filename属性。如果原数据流中不存在该属性,则将文件名设置为与系统时间匹配的纳秒数。然后应用文件扩展名:如果合并格式为TAR,则文件名将附加.tar,如果合并格式为ZIP,则文件名将附加.zip,如果合并格式为数据流,则文件名将附加.pkg |
merge.count | 合并到此合并结果中的数据流数 |
merge.bin.age | 合并和输出时bin的年龄(以毫秒为单位)。实际上是此合并结果中的任意数据流在输出之前在此组件中等待的最长时间 |
merge.uuid | 合并数据流的UUID属性将被添加到原始数据流 |
状态管理:
该组件不保存状态。
限制:
该组件没有限制
输入流要求:
组件必须提供输入流。
系统资源考量:
资源 | 描述 |
---|---|
MEMORY | 虽然合并内容未存储在内存中,但MergeContent组件的的配置(最大bin大小,最大合并结果大小,最大bin年龄,最大条目数)将影响使用的内存量。 如果将许多小数据流合并在一起,可能需要分两阶段合并以避免过度使用内存。 |