Error 2200 Copy Activity报错:分区Parquet文件time_period列未找到求助
Azure Data Factory Copy Activity 错误2200(Parquet列缺失)排查解决方法
核心排查方向
场景1:time_period为分区虚拟列
如果time_period是存放在路径中的Hive分区字段,而非Parquet文件内部自带的字段,按以下步骤检查:- 确认分区路径符合标准Hive格式:路径层级必须为
{分区根目录}/time_period={具体值}/,字段与值的分隔符必须为=,不能使用下划线、横杠等其他符号 - 确认源数据集路径配置到分区根目录,不要深入到
time_period=xxx的子层级,否则分区发现无法识别上层分区字段 - 手动调整映射规则:关闭自动导入schema,手动新增源列,列名填写
time_period,来源选择「分区列」,直接映射到Azure SQL表的对应字段即可
- 确认分区路径符合标准Hive格式:路径层级必须为
场景2:time_period为Parquet文件内部字段
如果time_period是存放在Parquet文件内部的普通字段,按以下步骤检查:- 用本地工具(parquet-tools、pandas、Apache Drill等)读取单个Parquet文件,确认字段真实存在,且拼写、大小写完全匹配,ADF默认对Parquet列名区分大小写,大小写不一致会直接触发列不存在报错
- 如果确实存在大小写不一致问题,在Copy Activity源配置的
typeProperties节点新增"preserveCase": false配置,关闭列名大小写校验 - 检查Parquet文件的字段物理类型:如果time_period的物理类型不是字符串,删除之前新增的
physicalType: "UTF8"配置,保持和文件本身的类型一致
通用验证方法
先创建临时测试Copy Activity,仅读取单个无分区路径的Parquet文件,关闭分区发现,确认可以正常读取到time_period字段后,再逐步叠加分区配置、全量同步规则,快速定位故障点。
内容的提问来源于stack exchange,提问作者Mariah Akinbi
相关产品推荐
相关产品推荐

