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

slmsl1lt  于 2021-06-21  发布在  Pig
关注(0)|答案(3)|浏览(383)

你好,我是一个新的pig用户,我正在尝试将一些数据存储在一个txt文件中,但是当我使用store命令时,它会创建一个包含以下文件的文件夹:\ u success和part-r-00000。
如何在txt文件中得到这个结果?谢谢。

niknxzdl

niknxzdl1#

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

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


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

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

fivyi3re2#

就是这样,map reduce job写输出。
由于pig在内部运行map reduce job,因此job以零件文件的形式写入输出:
第m-00000部分(Map输出)或第r-00000部分(减少输出)。
假设您在脚本中提供以下输出目录(“/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
kmynzznz

kmynzznz3#

这是怎么回事 STORE 输出通常是这样的。您可以从pig内部运行hadoop fs命令,这样您就可以在pig内部编写如下内容(请参阅此处的文档)

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

相关问题