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

Apache NiFi问题:读取文件后仅保留empnumber列并通过PutFile保存

可行解决方案:提取CSV中的empnumber列并保存

针对你的CSV格式数据,推荐两种高效的NiFi处理方案,替代之前尝试的处理器组合:

方法一:用ConvertRecord处理结构化数据(推荐)

这是NiFi处理CSV这类结构化数据的标准方式,能精准提取指定列:

  1. 创建并配置CSVReader控制器服务
    • 类型选择CSVReader,设置Header Line Count为1,让Reader自动识别表头;Skip Header Line设为false(如需保留表头可设为true,按需选择)。
    • 无需手动填写Field Names,Reader会从第一行表头自动读取字段名。
  2. 创建并配置CSVRecordSetWriter控制器服务
    • 类型选择CSVRecordSetWriter,Include Header Line设为false(不需要输出表头的话)。
    • 在Fields to Write中仅填写empnumber,这样输出只保留该列数据。
  3. 配置ConvertRecord处理器
    • 选择刚才创建的CSVReader作为Record Reader,CSVRecordSetWriter作为Record Writer。
    • 处理器会自动将输入的CSV转换为仅含empnumber列的内容,之后直接连接PutFile处理器即可保存。

方法二:用ReplaceText做文本替换(适合简单场景)

如果不想用Record类处理器,可通过正则替换直接提取目标列:

  1. 先过滤表头行(可选)
    • 添加RouteOnText处理器,设置Matching Strategy为Contains,Search Value填Empname,将表头行路由到自处理器(或丢弃),只让数据行进入后续处理。
  2. 配置ReplaceText处理器
    • Search Value填正则表达式:^[^,]+,([^,]+),.*$,该表达式会匹配每行,捕获第二个逗号分隔的字段(即empnumber)。
    • Replacement Value填$1,用捕获到的目标字段替换整行内容。
    • Replacement Strategy选Replace Entire Text,Evaluation Mode选Line-by-Line,确保每行都被正确处理。
  3. 处理后的流文件内容就是纯empnumber数据,连接PutFile保存即可。

补充:之前用ExtractText未成功的可能原因

ExtractText默认是将提取内容存入属性,而非替换流文件内容。如果要用它,提取后还需配合UpdateContent处理器,把属性值写入流文件的内容字段,才能被PutFile正确保存。

内容的提问来源于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.03 15:06:18