【发布时间】:2016-02-14 22:43:07
【问题描述】:
我在 Azure 上使用 HortonWorks 沙盒,并且正在编写 Hadoop 入门教程“实验室 3 - 猪风险因素分析”。
按照所有步骤运行此猪脚本后:
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.hadoop.hdfs.server.namenode.INodeFile.valueOf(INodeFile.java:61) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsInt(FSNamesystem.java:1821) 在 org.apache .hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1792) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1705) 在 org.apache.hadoop.hdfs .server.namenode.NameNodeRpcServer.getBlockLocations(NameNodeRpcServer.java:588) at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getBlockLocations(ClientNamenodeProtocolServerSideTranslatorPB.java:365) at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos $ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java) at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufR pcInvoker.call(ProtobufRpcEngine.java:616) at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:969) at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java :2137) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2133) 在 java.security.AccessController.doPrivileged(Native Method) 在 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)
HDFS 中根本没有 /tmp/.pigjobs/ 的文件。所以就好像 Pig 脚本需要在那里创建一个文件才能执行然后找不到它。我正在使用“-useHCatalog”参数和“在 tez 上执行”。
不确定这是权限错误还是 Azure 错误,但刚开始使用教程并且没有设置“沙盒”来完成前几节课而无需制作,这非常令人沮丧对配置设置进行了无数次调整。非常感谢任何帮助!
【问题讨论】:
标签: azure hadoop apache-pig hdfs hortonworks-data-platform