SplitAvro


编辑人(全网同名):酷酷的诚 邮箱:zhangchengk@foxmail.com


描述

该处理器根据配置将二进制编码的Avro数据文件分割成更小的文件。输出策略决定split后的文件是Avro数据文件,还是只保留Avro记录(在FlowFile属性中包含元数据信息 )。输出总是二进制编码的。

属性配置

在下面的列表中,必需属性的名称以粗体显示。任何其他属性(不是粗体)都被认为是可选的,并且指出属性默认值(如果有默认值),以及属性是否支持表达式语言。

属性名称默认值可选值描述
Split StrategyRecord▪Record分解传入数据文件的策略。Record策略将通过反序列化每个记录来读取传入的数据文件。
Output Size1每个分割文件包含的Avro记录的数量。在传入文件的记录小于输出大小的情况下,或者当记录的总数不均匀地除以输出大小时,可以得到少于Output Size数的分割文件。
Output StrategyDatafile▪Datafile
▪Bare Record
确定数据输出的格式。要么是Avro数据,要么是Bare Record(不含元数据信息及字段信息)。Bare Record仅用于已知该数据的系统,不具有通用性。
Transfer Metadatatrue▪true
▪false
是否将元数据从父数据流传输到子数流。如果输出策略是Bare Record,则元数据将存储为FlowFile属性,否则将存储在数据文件头中。

连接关系

名称描述
failure如果一个流文件因为某种原因无法处理(例如,流文件不是有效的Avro),它将被路由到这个关系
original被分割的原始流文件。如果流文件处理失败,则不会向该关系发送任何内容
split所有从原始流文件中分离出来的新文件都将被路由到这个关系

读取属性

没有指定。

写属性

名称描述
fragment.identifier从同一个父流文件生成的所有分割流文件都将为该属性添加相同的UUID(随机生成)
fragment.index一个增长的数字,表示从单个父流文件创建的分割流文件的顺序
fragment.count从父流文件生成的分割流文件的数量
segment.original.filename父流文件的文件名

状态管理

此组件不存储状态。

限制

此组件不受限制。

输入要求

此组件需要传入关系。

系统资源方面的考虑

资源描述
内存此组件的实例可能会导致系统资源的大量使用。多个实例或高并发性设置可能导致性能下降。

应用场景

用于切分较大的 avro文件。

示例说明

此组件的split功能与SplitJson大体相似,可以参考它的示例,这里主要通过实例看一下Datafile 和Bare Record 的区别,

1:Output Strategy 设置为DataFile

结果为:

2:Output Strategy 设置为Bare Record

结果为

Last Updated:
Contributors: zhangcheng