我是hadoop和pig的新手。我在ubuntu的本地用户中安装了pig并以hduser的身份安装hadoop.Pig在小型数据集的本地模式下运行良好。在mapreduce模式下启动Pig并尝试实现字数统计但获得许可被拒绝错误如下。 由以下原因引起:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException):权限被拒绝:user = basi,access = WRITE,inode =“ /”:hduser:supergroup:drwxr-xr-x
以psudo模式启动hadoop 本地用户中的猪猪:pig -x mapreduce
grunt> A = LOAD '/Wordcount.txt' AS (line:Chararray);
grunt> B = FOREACH A GENERATE FLATTEN(TOKENIZE(line)) AS word;
grunt> grouped = group B by word;
grunt> wc = FOREACH grouped GENERATE group, COUNT(B);
grunt> DUMP wc
/Wordcount.txt是hdfs中的文件
答案 0 :(得分:1)
目前尚不清楚如何将/Wordcount.txt
加载到根文件夹中,但是错误是您正在尝试写入根目录,该目录只能作为hduser
帐户,而不能作为{ {1}},您的本地用户。
一个选项-切换到另一个用户。
否则,请勿将HDFS的根目录用作所有文件的转储场;使用您专用的basi
目录
答案 1 :(得分:0)
进行如下
chmod 777 /Wordcount.txt
chmod将文本文件的权限分别更改为所有者组和其他所有者的权限rwxrwxrwx
然后在类似于下面的加载命令中提供文本文件的完整位置
grunt> A = LOAD '/directory/abc/Wordcount.txt' AS (line:Chararray);
然后再次运行代码...
希望这会对您有所帮助。
答案 2 :(得分:0)
在Pig中,DUMP命令首先将其输出写入/ tmp / temp ....,然后客户端从中读取。我的猜测是,您的群集没有/ tmp。如果是这种情况,请尝试创建/ tmp目录(通常具有1777权限)。
(编辑:阅读其他人的答案,我认为关于/ user的答案是有意义的。没有它,您甚至无法提交任何作业。)
答案 3 :(得分:0)
这与Pig无关,但与Hadoop有关。 Spark发生在我身上。可能是您手动安装了Hadoop。您需要创建超组并将hduser添加到超组中。
sudo groupadd supergroup
sudo usermod -aG supergroup hduser
然后重试。