使用Embulk读取Azure Blob CSV时报LinkedHashMap反序列化错误求助
错误根因
你遇到的Can not deserialize instance of java.util.LinkedHashMap out of START_ARRAY token错误属于Embulk的配置反序列化异常:程序预期读取键值对(字典)结构的配置,实际解析到了数组开头的标记,90%以上的这类问题都是YAML配置文件(你用到的sample.yml)的结构写错导致,和CSV文件本身的关联度很低。
排查&解决方案
- 优先检查sample.yml的配置结构,重点关注以下位置的写法:
- 输入插件
embulk-input-azure_blob_storage的所有参数,本应为键值对结构的配置项不要在开头加-,加-会被识别为数组元素 - CSV解析器(parser)的配置,正确的CSV解析器结构示例如下,注意
parser下的type/delimiter/header_line这类一级参数前不要加-,只有columns下的字段列表需要加-:
parser: type: csv delimiter: ',' quote: '"' escape: '"' charset: UTF-8 header_line: true columns: - {name: Mesh100ID, type: long} - {name: CityOaza, type: string} - {name: Pref, type: string} # 剩余字段按你的CSV表头依次补充类型即可 - {name: wkt, type: string} - 输入插件
- 其次检查输出插件
embulk-output-postgresql的配置,不要把表名、字段映射这类键值对配置错写为数组结构 - 若确认配置结构完全正确,可本地解压你用到的csv.gz文件,验证压缩包没有损坏、CSV内容格式和你提供的示例一致,不存在引号不闭合、分隔符异常的问题
内容的提问来源于stack exchange,提问作者yositigu2
相关产品推荐
相关产品推荐

