AWS Glue ETL作业启动报错:URISyntaxException问题求助
AWS Glue Notebook 运行时 URISyntaxException 错误的解决办法
问题重现
在Glue Notebook分步运行单个单元格正常,但通过Glue运行选项启动作业时,抛出如下错误:
LAUNCH ERROR | java.net.URISyntaxException: Illegal character in scheme name at index 0:
s3://py-function-bucket/aws_custom_functions.zip
无论是用S3路径还是完整HTTPS URL配置%extra_py_files,都会触发同类错误;删除魔法命令单元格则会导致自定义函数无法导入。
可行解决方案
方案1:用数组格式配置%extra_py_files
将单独的路径改为数组包裹的格式,修正魔法命令:
%extra_py_files ["s3://py-function-bucket/aws_custom_functions.zip"] %number_of_workers 2 %%configure { "region": "region", "iam_role": "arn:aws:iam::glue_role" }
分步运行时Notebook对格式容错性较高,但Glue作业启动时的Java解析器要求更严格,数组格式能让解析器正确识别S3 URI。
方案2:将依赖配置整合到%%configure中
放弃单独的%extra_py_files魔法命令,把依赖配置直接写入%%configure的JSON参数里:
%%configure { "region": "region", "iam_role": "arn:aws:iam::glue_role", "number_of_workers": 2, "extra_py_files": ["s3://py-function-bucket/aws_custom_functions.zip"] }
这种方式将所有作业配置统一管理,避免单独魔法命令的解析冲突,Glue运行时能直接读取并加载S3中的依赖包。
验证步骤
- 按上述任一方案修改配置单元格
- 先运行配置单元格,确认无报错
- 运行导入自定义函数的单元格,验证函数可正常调用
- 通过Glue运行选项启动作业,检查是否还出现URISyntaxException错误
额外提醒:确保Glue使用的IAM角色拥有目标S3桶的s3:GetObject权限(分步运行正常的话,权限通常已配置到位,可按需确认)
内容的提问来源于stack exchange,提问作者ricardov-DB
相关产品推荐
相关产品推荐

