You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache NiFi技术问询:如何将每个流文件与模板文件合并打包?

纯Apache NiFi处理器实现方案

核心流程步骤

  • 步骤1:解压初始压缩包
    使用UnpackArchive处理器,配置Archive Format为ZIP,将source.zip解压为独立的流文件(file1、file2、file3、fileA)。

  • 步骤2:分离目标文件与共享文件
    使用RouteOnAttribute处理器,设置两个路由规则:

    • 路由至shared_file分支:${filename:equals('fileA')}
    • 路由至target_files分支:${filename:matches('file[1-3]')}
  • 步骤3:复制共享文件
    将shared_file分支的fileA流文件传入CloneFlowFile处理器,设置Number of Clones为3。NiFi流文件内容采用引用式存储,克隆大文件仅复制属性,不会占用额外内存。

  • 步骤4:配对目标文件与共享文件副本

    1. 用UpdateAttribute处理器给target_files分支的所有流文件添加属性group.key=pack;给克隆后的fileA副本流文件也添加相同属性group.key=pack。
    2. 将两个分支的流文件传入MergeContent处理器,配置:
      • Merge Strategy:Bin-Packing Algorithm
      • Max Bin Entries:2
      • Min Bin Entries:2
      • Correlation Attribute Name:group.key
        确保每个分组严格包含1个目标文件+1个fileA副本。
  • 步骤5:打包分组文件为目标压缩包
    将MergeContent输出的分组流文件传入PackArchive处理器,配置:

    • Archive Format:ZIP
    • Archive Name:${filename:get(0):substringBefore('.')}.zip(取分组内第一个目标文件的前缀命名压缩包)
    • Include Parent Directory:false(避免生成多余目录结构)

关键优势说明

全程基于NiFi原生处理器操作,所有文件内容均存储在NiFi内容仓库(磁盘),处理器仅操作流文件引用,无需将大文件加载至内存,彻底解决原方案的内存溢出问题。

内容的提问来源于stack exchange,提问作者DarrenE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 12:10:08