2017-10-16 26 views
1

我试图运行自定义Python脚本,该脚本导入AWS Glue上的外部纯Python库(psycopg2),但失败。我检查了CloudWatch日志,发现失败的原因是:在AWS中使用纯python外部库时HDFS中的权限错误胶水

Spark在HDFS中的几个文件夹上的权限检查失败,其中一个包含我上传到S3的外部python库(s3:// path /到/ psycopg2),这需要-x权限:

org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=READ_EXECUTE, inode="/user/root/.sparkStaging/application_1507598924170_0002/psycopg2":root:hadoop:drw-r--r-- 
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:320) 
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:219) 
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:190) 
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1728) 
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1712) 
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPathAccess(FSDirectory.java:1686) 
at org.apache.hadoop.hdfs.server.namenode.FSDirStatAndListingOp.getListingInt(FSDirStatAndListingOp.java:76) 
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getListing(FSNamesystem.java:4486) 
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getListing(NameNodeRpcServer.java:999) 
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getListing(ClientNamenodeProtocolServerSideTranslatorPB.java:634) 
at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java) 
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616) 
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:982) 
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2049) 
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2045) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:422) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698) 
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2045) 

我确保该库仅包含.py文件作为AWS文件中的说明。

有谁知道出了什么问题?

非常感谢!

+0

你有没有想过这个?我有同样的问题。我的python库目录上的AccessControlException – mattalxndr

回答

0

您有一个目录没有执行权限。在基于Unix的O/S目录中必须设置执行位(至少对于用户)是可用的。

运行像

sudo chmod +x /user/root/.sparkStaging/application_1507598924170_0002/psycopg2

,并再次尝试。

+0

AWS Glue正在管理场景后面的Spark群集和HDFS。我所能做的就是提供一个到我上传的python库的S3路径。我如何配置S3,以便在库加载到集群时它将具有+ x权限 –

0

只粘贴支持Python的库,即没有任何特定的本地库绑定。