Skip to main content

MergeRecord

描述:

此组件将多个面向记录的数据流合并到一个数据流中,输出数据流将包含所有输入数据流的所有记录。 此组件的工作原理是创建“bins”,然后将FlowFiles添加到这些bins中,直到它们满了。 一旦bin已满,所有数据流将合并为一个数据流并输出到'merged'连线。 bin将包含许多'like FlowFiles'。 为了使两个FlowFiles被视为“like FlowFiles”,它们必须具有相同的Schema(由Record Reader标识),如果设置了<Correlation Attribute Name>属性,则相同值视为“like FlowFiles”。 有关更多信息,请参阅组件使用

标签:

merge, record, content, correlation, stream, event, 合并, 记录

参数:

如下列表中,必填参数则标识为加粗. 其他未加粗参数,则表示为可选参数。表中同时提到参数默认值设置.

名字默认值允许值列表描述
读取服务控制器服务API:
RecordReaderFactory
实现:
ParquetReader
GrokReader
SyslogReader
Syslog5424Reader
CSVReader
AvroReader
JsonPathReader
JsonTreeReader
ScriptedReader
XMLReader
指定用于读取传入数据的服务
写入服务控制器服务API:
RecordSetWriterFactory
实现:
CSVRecordSetWriter
FreeFormTextRecordSetWriter
AvroRecordSetWriter
JsonRecordSetWriter
XMLRecordSetWriter
ParquetRecordSetWriter
ScriptedRecordSetWriter
指定用于写出记录的服务
合并策略Bin-Packing算法
- Bin-Packing算法尽可能的合并每个输入数据流。 数据流根据其大小和可选的属性来合并(如果设置了&lt;关联属性&gt;属性)
- Defragment算法将属性关联的片段合并成一个数据流输出。 如果使用此策略,则所有数据流必须具有&lt;fragment.identifier&gt;和&lt;fragment.count&gt;属性。 具有相同&lt;fragment.identifier&gt;值的所有数据流将被组合在一个组内。 在组内的所有数据流都具有相同的&lt;fragment.count&gt;属性值。 但无法保证输出的记录顺序。
指定用于合并记录的算法。 “Defragment”算法将属性关联的片段组合回一个内聚的FlowFile。 'Bin-Packing Algorithm'生成由任意选择的FlowFiles填充的FlowFile
关联属性名如果指定,则只有两个数据流具有属性相同值时才会将它们合并在一起。 如果未指定,数据流将按从队列中提取的顺序进行合并。
属性策略仅保留通用属性
- 仅保留通用属性将删除记录中所有数据流上不同的任何属性,但保留所有相同值的属性在数据流上。
- 保留所有属性将保留记录中的所有数据流具有相同值或者没有值的任何属性。 例如,如果包含3个数据流,其中2个为&#39;greeting&#39;属性值为&#39;hello&#39;,而第3个数据流没有&#39;greeting&#39;属性,则输出的数据将具有&#39;greeting&#39;属性且值为&#39;hello&#39;。
确定应将哪些数据流的属性添加到数据流中。 如果选择“保留所有属性”,则将保留任何数据流上的任何属性,除非其值与另一个数据流的值冲突。 如果选择“仅保留通用属性”,则仅保留包中具有相同值的所有数据流中存在的属性。
最小记录数1最小记录数
最大记录数1000最大记录数。 如果不设置,则没有限制,这是一个“软限制”,如果数据流被合并,数据流中的记录将全部合并,这个限制可能会超过最后一个输入数据流的记录数。
最小的记录大小0 B记录的最小值
最大的记录大小记录的最大值。 如果未指定,则没有最大值。 这是一个“软限制”,如果数据流被合并,数据流中的记录将全部合并,这个限制可能会超过最后一个输入数据流的字节数。
记录最大生命周期记录最大生命周期。 预期格式为<时间数> <时间单位>,其中<时间数>为正整数,时间单位为秒(s),分(m),小时(h)之一
记录的最大数量10指定任何时候可以在内存中保留的最大记录数。 此数字不应小于此处组件的最大并发线程数,否则将频繁为每个数据流创建输出。

连线:

名字描述
failure如果无法合并记录,那么用于创建记录的所有数据流都将输出到此连线
original用于创建记录的原始输入数据流
merged成功合并输入数据流后的输出连线

读取属性:

名字描述
fragment.identifier仅在<合并>属性设置为Defragment时适用。 具有此属性相同值的所有数据流将捆绑在一起。
fragment.count仅在<合并策略>属性设置为Defragment时适用。 此属性必须存在于所有数据流上,并且具有与fragment.identifier属性相同的值。 同一捆绑包中的所有数据流必须具有此属性的相同值。 此属性的值指示给定包中应该预期的数据流数。

写入属性:

名字描述
record.count合并的数据流将具有'record.count'属性,指示写入数据流的记录数。
mime.type写服务指定的MIME类型
merge.count合并到此记录中的数据流数
merge.bin.age合并和输出时记录的生命周期(以毫秒为单位)。 实际上,这是此记录中的任何数据流在输出之前在此处理器中等待的最长时间
merge.uuid合并数据流的UUID属性将被添加到原始数据流
<Attributes from Record Writer>Any Attribute that the configured Record Writer returns will be added to the FlowFile.

状态管理:

该组件不保存状态。

限制:

该组件没有限制

输入流要求:

组件必须提供输入流。

系统资源考量:

未提供。

参考:

MergeContent, PartitionRecord, SplitRecord