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

如何读取含二进制分隔符的CSV?NiFi ConvertRecord报错求助

问题描述

源CSV文件内容(行内字段由二进制分隔符\u0001分隔):

123456TextValue1
654321TextValue2

使用NiFi的ConvertRecord处理器将分隔符从\u0001替换为;,配置如下:

RecordReader(CSVReader)属性

  • Schema Access Strategy: Use 'Schema Text' Property
  • Schema Text: #{text_schema}
  • Value Separator: \u0001
  • Treat First Line as Header: false
  • Ignore CSV Header Column Names: true

RecordWriter(CSVRecordSetWriter)属性

  • Schema Access Strategy: Use 'Schema Text' Property
  • Schema Text: #{text_schema}
  • Value Separator: ;
  • Include Header Line: true

text_schema定义

{
  "type": "record",
  "name": "test_schema",
  "fields": [
    {
      "name": "FIELD_1",
      "type": ["int","null"],
      "description": "FIELD_1"
    },
    {
      "name": "FIELD_2",
      "type": ["string","null"],
      "description": "FIELD_2"
    }
  ]
}

预期输出:

FIELD_1;FIELD_2
123456;TextValue1
654321;TextValue2

实际错误信息:

ERROR
ConvertRecord[id=01931001-0d7e-1e43-146d-1a380e6d43b7] Failed to process FlowFile[filename=7365b509-7100-4bc2-a070-4cc8ce8377b9]; will route to failure: org.apache.nifi.processor.exception.ProcessException: Could not parse incoming data
   Caused by: org.apache.nifi.serialization.MalformedRecordException: Error while getting next record
  Caused by: java.lang.NumberFormatException: For input string: "123456TextValue1"
错误原因

CSVReader未能正确识别配置的\u0001分隔符,导致将整行内容当作FIELD_1的输入值。由于FIELD_1的类型定义为int,字符串"123456TextValue1"无法转换为整数,触发NumberFormatException。

核心问题是在NiFi属性配置中,直接输入\u0001不会被自动解析为对应的二进制控制字符,处理器将其视为普通字符串分隔符,而源数据中的实际分隔符是二进制的SOH(Start of Header,对应Unicode U+0001),两者不匹配。

解决方法

1. 正确配置分隔符

在NiFi UI的CSVReader的Value Separator属性中,直接输入实际的\u0001字符,而非字符串形式的\u0001:

  • Windows系统:按住Alt键,依次按数字小键盘的0、0、0、1,输入SOH字符
  • macOS/Linux系统:通过终端生成该字符后复制粘贴,或使用输入法的特殊字符插入功能直接插入SOH字符

2. 修正Schema语法问题

原Schema中FIELD_1的定义行末尾多了一个冗余逗号,虽不是当前错误的直接诱因,但可能导致后续解析问题,建议修正为标准JSON格式(如上述问题描述中调整后的Schema)。

3. 验证配置有效性

配置完成后,可使用NiFi的预览功能(部分版本支持)或发送测试FlowFile,确认CSVReader能正确拆分FIELD_1和FIELD_2字段后,再运行ConvertRecord处理器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 03:50:06