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

Apache NiFi读取制表符分隔CSV及属性值前两列的配置方法

问题1:如何在Apache NiFi中读取制表符分隔的CSV流文件的第一列和第二列?

以下是两种实用的实现方法:

方法一:使用ExtractText处理器

  1. 将ExtractText处理器添加到画布,连接上游生成/获取CSV流文件的组件。
  2. 进入处理器配置的Properties标签页:
    • 设置Regular Expression为^([^\t]+)\t([^\t]+).*,用于匹配每行开头的两个制表符分隔字段
    • 设置Capture Group 1为column1(自定义属性名,存储第一列内容)
    • 设置Capture Group 2为column2(存储第二列内容)
    • 若需要逐行处理,将Line By Line属性设为true

方法二:使用ConvertRecord处理器(适合结构化批量处理)

  1. 添加ConvertRecord处理器,同时创建两个控制器服务:CSVReader和RecordSetWriter(例如JsonRecordSetWriter)。
  2. 配置CSVReader控制器服务:
    • 设置Field Delimiter为\t(表示制表符)
    • 若CSV无表头,将Header Line Count设为0,并自定义字段名(如field1,field2)
  3. 配置ConvertRecord处理器:
    • 在Properties中,将Record Reader指定为已配置的CSVReader
    • 将Record Writer指定为JsonRecordSetWriter(或其他适用格式)
  4. 处理完成后,流文件内容会转为结构化格式,后续可通过EvaluateJsonPath等处理器提取field1和field2的值

问题2:在UpdateAttribute处理器中将制表符分隔的属性值拆分到多个新属性

已知流文件属性attribute1的值为制表符分隔格式(示例:Hi Hello there),配置步骤如下:

  1. 添加UpdateAttribute处理器,连接上游组件。
  2. 进入处理器配置的Properties标签页,新增三个属性:
    • updateAttribute1:值填写${attribute1:getDelimitedField(1, '\t')},获取第1个分隔部分
    • updateAttribute2:值填写${attribute1:getDelimitedField(2, '\t')},获取第2个分隔部分
    • updateAttribute3:值填写${attribute1:getDelimitedField(3, '\t')},获取第3个分隔部分
  3. 保存配置并启动处理器,流文件会自动新增这三个属性,对应拆分后的各部分内容

注意:getDelimitedField函数的索引从1开始,制表符分隔符需用'\t'表示以确保转义正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 12:21:05