Pig无法在HDFS中创建(或查找)pigjobs文件(riskfactor.pig)

时间:2016-02-14 22:43:08

标签: azure hadoop apache-pig hdfs hortonworks-data-platform

我在Azure上使用HortonWorks沙箱,我正在开始使用Hadoop入门教程“实验3 - 猪风险因素分析”。

http://hortonworks.com/hadoop-tutorial/hello-world-an-introduction-to-hadoop-hcatalog-hive-and-pig/#section_5

完成所有步骤后,运行此pig脚本:

a = LOAD 'geolocation' using org.apache.hive.hcatalog.pig.HCatLoader();
b = filter a by event != 'normal';
c = foreach b generate driverid, event, (int) '1' as occurance;
d = group c by driverid;
e = foreach d generate group as driverid, SUM(c.occurance) as t_occ;
g = LOAD 'drivermileage' using org.apache.hive.hcatalog.pig.HCatLoader();
h = join e by driverid, g by driverid;
final_data = foreach h generate $0 as driverid, $1 as events, $3 as totmiles, (float) $3/$1 as riskfactor;
store final_data into 'riskfactor' using org.apache.hive.hcatalog.pig.HCatStorer();

单击执行会启动作业,但是几乎立即失败并出现以下错误:

文件不存在:/tmp/.pigjobs/riskfactorpig_14-02-2016-22-29-58/stdout at org.apache.hadoop.hdfs.server.namenode.INodeFile.valueOf(INodeFile.java:71)在org.apache的org.apache.hadoop.hdfs.server.namenode.INodeFile.valueOf(INodeFile.java:61)org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsInt(FSNamesystem.java:1821)org.apache位于org.apache.hadoop.hdfs的org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1705)的.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1792)位于org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getBlockLocations(ClientNamenodeProtocolServerSideTranslatorPB.java:365)的.server.namenode.NameNodeRpcServer.getBlockLocations(NameNodeRpcServer.java:588)org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos org.apache.hadoop.ipc.ProtobufRpcEngine $ Server $ ProtoBufR上的$ ClientNamenodeProtocol $ 2.callBlockingMethod(ClientNamenodeProtocolProtos.java) pc.voker.call(ProtobufRpcEngine.java:616)org.apache.hadoop.ipc.RPC $ Server.call(RPC.java:969)at org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java) :2137)atg.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java:2133)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject。 java:415)org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)org.apache.hadoop.ipc.Server $ Handler.run(Server.java:2131)

/tmp/.pigjobs/的HDFS中根本没有文件。所以就好像Pig脚本需要在那里创建一个文件才能执行然后找不到它。我正在使用“-useHCatalog”参数和“在tez上执行”。

不确定这是一个权限错误还是一个Azure错误,但是刚开始使用Tutorials并且没有设置“沙盒”来完成前几课而不必制作它是非常令人沮丧的无数调整配置设置。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

通过一些额外的试验和错误,我了解到通过右键单击/tmp/.pigjobs文件夹,我可以在HDFS中设置该文件夹的权限。默认情况下,三个中有两个"写"选项未选中。打开所有权限选项允许的猪保存并调用执行作业所需的文件。