使用ADF复制活动向ADLS Gen2写Parquet文件报InvalidResourceName错误
报错根因
报错返回InvalidResourceName,是你写入ADLS Gen2的目标路径或文件名包含不符合命名规范的非法字符,触发了BadRequest错误。
排查解决步骤
- 首先明确ADLS Gen2的路径、文件名禁止使用的字符包括:
<、>、:、"、/、\、|、?、*,同时不允许包含控制字符,路径段落不能以空格或点结尾,也不允许出现连续的空格、点。 - 检查Sink端的输出路径、文件名配置,如果你使用了动态表达式生成路径/文件名,重点排查是否引入了上述非法字符:
- 比如使用时间类变量拼接名称时,默认时间格式带有的
:属于非法字符,需要调整格式化规则替换为-等合法字符,示例:将@utcnow()调整为@formatDateTime(utcnow(), 'yyyyMMdd-HHmmss') - 如果你直接拼接了源CSV的文件名,要确认源文件名本身没有包含上述非法字符
- 比如使用时间类变量拼接名称时,默认时间格式带有的
- 确认你配置的
raw_area容器下的子路径没有特殊字符,本次报错中容器名本身符合规范,不需要调整。 - 如果你开启了复制活动的自动分片输出功能,检查分片命名规则是否会生成带特殊字符的文件名。
验证方法
你可以先将Sink输出路径临时修改为固定的简单路径,例如test/demo/output.parquet运行测试,如果任务可以正常执行,即可确认问题出在原有的动态路径/文件名规则上,再针对性调整命名规则即可。
内容的提问来源于stack exchange,提问作者usr_lal123
相关产品推荐
相关产品推荐

