问题
您正在使用Azure砖,引发写作ADLS Gen1存储工作。
当你试图手动读取、写入或删除文件夹中的数据得到一个错误消息。
被禁止的。ACL验证失败。资源不存在或用户没有被授权执行请求的操作
导致
写数据ADLS Gen1存储时,Apache火花使用服务主体为它创建的文件的所有者。服务主体的定义dfs.adls.oauth2.client.id。
当文件被创建时,他们继承的默认权限Hadoop文件系统。Hadoop文件系统有一个默认权限666 (-rw-rw-rw)和一个默认022年umask,结果在644年的权限设置为默认的文件。
当创建文件夹,他们继承父文件夹的权限,默认是770。
因为老板是服务主体而不是用户,你没有权限访问该文件夹由于0在文件夹的权限。
解决方案
选项1
使同一组的用户服务主体部分为默认用户。这将允许通过门户访问当访问存储。
请联系微软支持援助。
选项2
创建一个基础文件夹ADLS Gen1和将权限设置为777。写火花输出在这个文件夹中。因为文件夹由火花继承父文件夹的权限,所有文件夹由火花将有777权限。这允许任何用户访问文件夹。
选项3
更改默认umask从022年到000年在Azure砖集群。
集spark.hadoop.fs.permissions。umask-mode 000在火花配置为您的集群。
umask 000,默认Hadoop文件系统权限666成为默认的权限时使用Azure砖创建对象。