Apache NIFI SplitAvro

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

结果为

#公众号

关注公众号 得到第一手文章/文档更新推送。

### 关于 Apache NiFi 的官方文档和教程 #### 官方文档概述 Apache NiFi 是一款强大的数据集成工具,其官方文档提供了详尽的信息来帮助用户安装、配置以及使用这款软件。对于版本2的Apache NiFi, 文档不仅涵盖了基础功能说明还包含了各类处理器的具体应用实例[^1]。 #### 主要配置文件解析 `conf/NiFi.properties` 文件作为NiFi的核心配置文件之一,决定了整个系统的运作方式。此文件内含众多可调整项,涉及性能调优、安全设置等多个方面,因此理解这些选项的意义及其影响至关重要[^2]。 #### Docker 部署指南 为了简化部署流程并提高环境一致性,官方提供了一个专门针对Docker容器化的项目——nifi-container。该项目位于指定Git仓库中,通过它能够快速搭建起基于容器技术的NiFi运行环境[^3]。 #### HTTP 请求处理机制 HandleHttpRequest 处理器允许开发者轻松构建RESTful API接口。当接收到客户端发送过来的数据包后,会自动生成对应的FlowFile对象并通过关系链传递给下游组件继续加工;通常建议搭配 HandleHttpResponse 使用以形成完整的响应循环[^4]。 ```python # Python 示例代码展示如何模拟发起HTTP请求至NiFi REST API端点 import requests url = 'http://localhost:8080/nifi-api/process-groups/root' response = requests.get(url) if response.status_code == 200: print('成功获取根进程组信息') else: print(f'请求失败,状态码:{response.status_code}') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值