如何将NiFi拆分的数据保存到本地,及同位置单独存储拆分文件?
NiFi 拆分后数据本地存储及多文件同位置存储方案
1. 将拆分后的数据保存到本地机器
使用PutFile处理器即可完成本地存储配置,步骤如下:
- 添加
PutFile处理器到数据流中,连接拆分数据的上游处理器(如SplitRecord)到PutFile - 配置
PutFile的核心参数:- Directory:填写本地机器的目标路径,例如
/opt/nifi-output或C:\nifi-local-storage,确保NiFi进程对该路径有读写权限 - Filename:可使用NiFi表达式语言自定义文件名,比如
${filename}保留原文件名,或${filename}-${UUID()}生成唯一文件名避免覆盖
- Directory:填写本地机器的目标路径,例如
- 启动处理器后,拆分后的每个FlowFile会被写入指定的本地目录
2. 拆分后文件存储到同一位置(已用SplitRecord完成拆分)
由于SplitRecord会将原文件拆分为多个独立的FlowFile,只需通过PutFile统一配置存储路径即可实现同位置存储,关键是避免文件名冲突:
- 连接
SplitRecord的成功输出到PutFile处理器 - 配置
PutFile的Directory为你需要的同一存储路径 - 配置Filename时,利用
SplitRecord生成的分片属性确保文件名唯一:- 示例1:
${filename}-part-${fragment.index},其中fragment.index是分片的序号(从0开始) - 示例2:
${UUID()}-${filename},用UUID生成完全唯一的文件名 - 示例3:
${filename}-part-${fragment.index}-of-${fragment.count},结合总分片数fragment.count完善命名规则
- 示例1:
内容的提问来源于stack exchange,提问作者Sudaraka Guanthilaka
相关产品推荐
相关产品推荐

