执行AWS Glue作业写入磁盘遇权限拒绝,如何配置写入权限?
解决AWS Glue作业写入磁盘时的权限拒绝问题
从你给出的错误信息来看,问题很明确:你的Glue作业默认以root用户身份尝试写入HDFS根目录/,但该目录的权限是drwxr-xr-x,只有hdfs:hadoop用户组拥有写入权限,root用户没有权限,所以触发了拒绝错误。
下面是几个可行的解决办法,按推荐程度排序:
1. 优先写入HDFS的/tmp目录(最简单快捷)
HDFS的/tmp目录默认对所有用户开放读写权限,你只需要把代码中的filepath修改为/tmp下的子目录即可,比如:
filepath = "/tmp/glue-job-temp-output" sdf.coalesce(1).write.csv(filepath)
这样既不需要修改任何权限配置,又能快速解决问题,而且/tmp目录的临时文件会定期清理,不会占用持久存储。
2. 创建自定义HDFS目录并赋予权限
如果你必须写入特定的自定义目录,可以先通过HDFS命令创建目录并调整权限:
# 创建自定义目录 hdfs dfs -mkdir /custom-glue-output # 赋予所有用户读写执行权限(或者更严格的权限,比如只给root用户) hdfs dfs -chmod 777 /custom-glue-output
之后在代码中把filepath设置为这个自定义目录即可。
3. 改用S3作为输出目标(最佳实践)
其实AWS Glue的设计初衷就是和S3深度集成,本地磁盘(HDFS)的存储是临时的,作业结束后会被清理。更可靠的方式是直接写入S3,这样还能避免HDFS的权限问题:
# 替换成你的S3桶路径 sdf.coalesce(1).write.csv("s3://your-target-bucket/glue-job-output")
只需要确保你的Glue作业关联的IAM角色拥有该S3桶的写入权限即可,这也是Glue作业输出数据的标准做法。
内容的提问来源于stack exchange,提问作者tushaR
相关产品推荐
相关产品推荐

