- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在 Azure 上使用 HortonWorks 沙箱,并且正在研究 Hadoop 入门教程“实验 3 - pig 风险因素分析”。
按照所有步骤执行此 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/
我正在 Azure 上使用 HortonWorks 沙箱,并且正在研究 Hadoop 入门教程“实验 3 - pig 风险因素分析”。 http://hortonworks.com/hadoop-tu
我是一名优秀的程序员,十分优秀!