我在scala中创建了一个spark应用程序。我从shell脚本中调用了spark submit命令
我的spark应用程序正在从HDFS输入目录中读取文件。
我以用户身份运行spark作业。我的火花工作是尝试从/ data / published / source / oogway / tracking_id_log / TRACKING_ID_LOG_FULL读取和处理所有文件
/ data / published / source / omega / omega_tracking_log / OMEGA_LOG_FULL是用户地铁创建的目录
metro和build位于名为hadoop的同一组中
我可以清楚地看到构建用户对该HDFS目录具有读取权限,那么为什么我会得到以下错误?
Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: user=build, access=READ_EXECUTE,\
inode="/data/published/source/omega/omega_tracking_log/OMEGA_LOG_FULL":metro:hadoop:drwxr-----
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.checkFsPermission(DefaultAuthorizationProvider.java:257)
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.check(DefaultAuthorizationProvider.java:238)
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.checkPermission(DefaultAuthorizationProvider.java:151)
at org.apache.sentry.hdfs.SentryAuthorizationProvider.checkPermission(SentryAuthorizationProvider.java:174)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:138)
以下是该HDFS目录的访问权限
bash-4.1$ hdfs dfs -ls /data/published/source/omega/omega_tracking_log
Found 3 items
drwxr----- - metro hadoop 0 2017-06-12 13:12 /data/published/source/omega/omega_tracking_log/OMEGA_LOG_FULL
如果spark想要从HDFS目录中读取所有文件并进行处理,那么我们是否还需要在HDFS目录上为spark用户进行EXECUTE访问?
答案 0 :(得分:1)
这个问题是因为HDFS的许可。你能试试吗
从root用户登录 更改HDFS的权限
hadoop fs -chmod -R 777 /