apache pig,将结果存储在 txt 文件中

apache pig, store result in a txt file

您好,我是 PIG 的新用户, 我正在尝试将一些数据存储在 txt 文件中,但是当我使用 STORE 命令时,它会创建一个包含以下文件的文件夹:_SUCCESS 和 part-r-00000。

如何在 txt 文件中获取此结果? 谢谢。

使用 cat 命令读取文件并使用 put 命令将输出通过管道传输到 .txt 文件

hadoop fs -cat /in_dir/part-* | hadoop fs -put - /out_dir/output.txt

使用getmerge命令将文件夹中的文件合并到输出的.txt文件中

hadoop fs -getmerge /in_dir/ /out_dir/output.txt

这就是 STORE 输出通常的样子。 您可以从 pig 内部 运行 Hadoop fs 命令,这样您就可以在 pig 内部编写如下内容(请参阅文档 here

fs -getmerge /my/hdfs/output/dir/* /my/local/dir/result.txt
fs -copyFromLocal /my/local/dir/result.txt /my/hdfs/other/output/dir/

就是这样,map reduce 作业写入输出。

由于 Pig 在内部运行 map-reduce 作业,因此作业以部分文件的形式写入输出:
part-m-00000(地图输出)或part-r-00000(减少输出)。

假设您在脚本中提供了以下输出 dir("/user/output1.txt"),因此它将具有:

/user/output1.txt/part-r-00000  
/user/output1.txt/_SUCCESS

output1.txt 中可能创建了多个零件文件,因此在这种情况下,您可以将它们合并为一个。

hadoop fs -getmerge /user/output1.txt/* /localdir/output/result.txt
hadoop fs -copyFromLocal /localdir/output/result.txt /user/output/result.txt