我在Azure上使用HortonWorks沙箱,我正在开始使用Hadoop入门教程“实验3 - 猪风险因素分析”。
完成所有步骤后,运行此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并且没有设置“沙盒”来完成前几课而不必制作它是非常令人沮丧的无数调整配置设置。非常感谢任何帮助!
答案 0 :(得分:0)
通过一些额外的试验和错误,我了解到通过右键单击/tmp/.pigjobs文件夹,我可以在HDFS中设置该文件夹的权限。默认情况下,三个中有两个"写"选项未选中。打开所有权限选项允许的猪保存并调用执行作业所需的文件。