如何用NiFi处理器处理PowerTop导出的CSV文件(从第13行开始)
PowerTop生成CSV的NiFi处理方案
问题背景
我有一份PowerTop工具生成的CSV文件,需在上传前修改:
- 仅处理第13行及以后的内容,第13行表头为:
Usage;Events/s;Category;Description;PW Estimate - 要以分号为分隔符拆分表头并匹配对应值,得到结构化结果
- 作为NiFi新手,尝试过UpdateRecord处理器但未成功。
分步处理方案
1. 过滤前12行,保留有效数据
推荐用ReplaceText处理器快速过滤:
- 搜索正则:
^.*\r?\n - 替换值:留空
- 替换次数:12
- 直接剔除前12行,只保留从第13行开始的表头和数据。
如果前12行格式不规则,改用SplitText + RouteOnAttribute组合:
- SplitText:按行拆分文件,每个FlowFile对应一行
- RouteOnAttribute:添加属性
lineNumber,设置路由规则${lineNumber:ge(13)},只放行行号≥13的FlowFile
2. 解析CSV为结构化数据
用ConvertRecord处理器搭配CSVReader和CSVRecordSetWriter:
CSVReader配置
Delimiter:设置为;First Line is Header:勾选Header:手动指定为Usage,Events/s,Category,Description,PW Estimate(确保和目标表头一致)- 若CSV字段带引号,开启
Quote Character并设置为"
CSVRecordSetWriter配置
Delimiter:设置为;Include Header Line:勾选Schema Write Strategy:选Use Schema Name或Use Attribute,确保输出表头正确
3. 按需修改数据(可选)
如果需要调整字段内容,在ConvertRecord后添加UpdateRecord:
- 用RecordPath指定目标字段,比如
/Usage - 设置
Value为转换规则或固定值,比如${record:value('/Usage'):trim()}去除空格
关键排查点
- 检查PowerTop生成的CSV是否有隐藏字符,可先用
ReplaceText去除非打印字符 - 确认CSVReader的编码和源文件一致,避免乱码导致解析失败
内容的提问来源于stack exchange,提问作者Lalit Shukla
相关产品推荐
相关产品推荐

