permissions - Apache Pig 权限问题

标签 permissions hadoop apache-pig hdfs

我试图在我的 Hadoop 集群上启动并运行 Apache Pig,但遇到了权限问题。 Pig 本身可以正常启动并连接到集群 - 从 Pig shell 中,我可以 ls 遍历我的 HDFS 目录。但是,当我尝试实际加载数据并运行 Pig 命令时,我遇到了与权限相关的错误:

grunt> A = load 'all_annotated.txt' USING PigStorage() AS (id:long, text:chararray, lang:chararray);
grunt> DUMP A;
2011-08-24 18:11:40,961 [main] ERROR org.apache.pig.tools.grunt.Grunt - You don't have permission to perform the operation. Error from the server: org.apache.hadoop.security.AccessControlException: Permission denied: user=steven, access=WRITE, inode="":hadoop:supergroup:r-xr-xr-x
2011-08-24 18:11:40,977 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1066: Unable to open iterator for alias A
Details at logfile: /Users/steven/Desktop/Hacking/hadoop/pig/pig-0.9.0/pig_1314230681326.log
grunt> 

在这种情况下,all_annotated.txt 是我创建的 HDFS 主目录中的一个文件,并且绝对有权限;无论我尝试 load 什么文件,都会出现同样的问题。但是,我认为这不是问题所在,因为错误本身表明 Pig 正试图在某处写入。谷歌搜索,我发现一些邮件列表帖子暗示某些 Pig Latin 语句(order 等)需要对 HDFS 文件系统上的临时目录进行写访问,该目录的位置由 hdfsd-site.xml 中的 hadoop.tmp.dir 属性。我不认为 load 属于那个类别,但为了确定,我更改了 hadoop.tmp.dir 以指向一个目录在我的 HDFS 主目录中,问题仍然存在。

那么,有人对可能发生的事情有任何想法吗?

最佳答案

可能是您的 pig.temp.dir 设置。在 hdfs 上它默认为/tmp。 pig 会在那里写临时结果。如果您没有/tmp 的权限,Pig 会提示。尝试通过 -Dpig.temp.dir 覆盖它。

关于permissions - Apache Pig 权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7194069/

相关文章:

security - 有没有办法防止 Azure DevOps 个人访问 token (PAT) 过期?

java - Android:抑制方法调用时的警告

json - 配置单元为 json 对象计算错误的总和

hadoop - Cloudera Hadoop-节点列表/角色

java - Hadoop 截断/不一致的计数器名称

sql - 如何将 Snowflake 中的 PROCEDURE_DEFINITION 访问权限从 ADMIN 角色授予另一个角色?

hadoop - pig : is it possible to write a loop over variables in a list?

hadoop - 从包中提取有序的元组值

hadoop - Pig 0.11.1 - 对时间范围内的组进行计数

database - Microsoft Access 2013 字段权限