这是我第一次在StackOverflow上发帖,希望有人能帮忙。我对猪的脚本相当陌生,遇到了一个我无法解决的问题。在
下面是一个pig脚本,当我试图将结果写入文件时失败:
register 'myudf.py' using jython as myfuncs;
A = LOAD '$file_nm' USING PigStorage('$delimiter') AS ($fields);
B = FILTER A by ($field_nm) IS NOT NULL;
C = FOREACH B GENERATE ($field_nm) as fld;
D = GROUP C ALL;
E = FOREACH D GENERATE myfuncs.theResult(C.fld);
--DUMP E;
STORE E INTO 'myoutput/theResult';
EXEC;
当我转储到屏幕上时,我看到E的结果。但是,我需要将结果临时存储在一个文件中。在执行Store命令之后,我收到的错误是:输出位置验证失败。在
我尝试过很多解决方法,比如删除theResult文件夹和删除theResult的早期内容,但是我使用的命令都没有一个有效。这些原则是:
^{pr2}$以及
hadoop fs -rm myoutput/theResult
…同时使用shell(hs)和文件系统(fs)命令。我尝试调用另一个函数(shell脚本、python函数等)来清除存储在myoutput/theResult文件夹中的早期结果。我看了所有我能找到的网站,但没有什么是有效的。有什么想法吗??在
谢谢你们的回复。我现在有一个有效的解决方案:
第一行试图创建一个目录,但是“-p”可以防止错误(如果它已经存在)。然后第二行删除它。不管怎样,都会有一个目录要删除,所以没有错误!在
有几件事你可以试试-
mapreduce的输出位置是一个目录。所以,你一定是这样试过的
然后运行猪脚本。它会起作用的。 “rmr”-remove recursive,删除两个文件夹/文件 “rm”-只删除文件
每次,您都需要更改输出路径或删除并使用相同的路径,因为HDFS是worm(一次写入多次读取)模型存储。在
相关问题 更多 >
编程相关推荐