python - pig 脚本 : STORE command not working

标签 python shell hadoop apache-pig

这是我第一次在 StackOverflow 上发帖,我希望有人能提供帮助。我对 Pig 脚本还很陌生,遇到了一个我无法解决的问题。

下面是一个 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 命令之后,我收到的错误是:Output Location Validation Failed

我尝试了很多解决方法,例如删除 theResult 文件夹和删除 theResult 的早期内容,但我使用的命令均无效。这些都是沿着:

hdfs dfs -rm myoutput/theResult

hadoop fs -rm myoutput/theResult

...同时使用 shell (hs) 和文件系统 (fs) 命令。我试图调用另一个函数(shell 脚本、python 函数等)来清除存储在 myoutput/theResult 文件夹中的早期结果。我已经阅读了我能找到的每个网站,但没有任何效果。有什么想法吗??

最佳答案

mapreduce 的输出位置是一个目录。所以,你一定尝试过这种方式

hadoop fs -rmr myoutput/theResult

然后运行 pig 脚本。它会起作用。 “rmr” - 删除递归,删除文件夹/文件 "rm"- 只是删除,它只删除文件

每次,您都需要更改输出路径或删除并使用相同的路径,因为 HDFS 是蠕虫(一次写入读取多次)模型存储。

关于python - pig 脚本 : STORE command not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33374186/

相关文章:

docker - 我可以将 *reference* 传递给 docker CMD 中的环境变量吗?

linux - ec2 - 4 ubuntu 12.04 t2.micro 相同实例上的 Hadoop 2.2.0 多节点集群设置

python - 如何在Google Colab中显示点击图片的点的坐标?

shell - 如何使用 getopts 在命令行中传递 shell 脚本强制和可选标志?

python - 从 python 中的其他 csv 列追加到新的 csv

java - 在 OSX 中运行 CMD 等效项?

hadoop - 将HDFS SequenceFile从SnappyCodec转换为DefaultCodec

Hadoop distcp 从 S3 复制 : Signature does not match error

python - GeoModel with Google App Engine - 查询

python - 从 URL 响应中获取授权码 - Python