gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 16:07:10 25 4
gpt4 key购买 nike

我正在 Azure 上使用 HortonWorks 沙箱,并且正在研究 Hadoop 入门教程“实验 3 - pig 风险因素分析”。

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();

单击“执行”将启 Action 业,但它几乎立即失败并出现以下错误:

文件不存在:/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)在org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getBlockLocations(ClientNamenodeProtocolServerSideTranslatorPB.java:365)在org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos $ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java) 在 org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616) 在 org.apache.hadoop.ipc.RPC$Server.call(RPC. java:969) 在 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 方法)在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 错误,但刚开始使用教程却没有设置“沙箱”来完成前几节类(class)而无需进行任何操作,这非常令人沮丧对配置设置进行无数调整。非常感谢任何帮助!

最佳答案

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

关于azure - Pig 无法在 HDFS 中创建(或查找)pigjobs 文件 (riskfactor.pig),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35398912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com