Uno*_*Uno 7 hadoop apache-pig hdfs
我有一个PIG脚本,它产生四个结果我想将它们存储在一个文件中.我尝试使用UNION,但是当我使用时,UNION我得到四个文件part-m-00000,part-m-00001,part-m-00002,part-m-00003.我不能得到一个文件?
这是PIG脚本
A = UNION Message_1,Message_2,Message_3,Message_4 into 'AA';
Run Code Online (Sandbox Code Playgroud)
在AA文件夹里面我得到了4个文件,如上所述.我不能得到包含所有条目的单个文件吗?
Don*_*ner 14
Pig在这里正在做正确的事情并且正在联合数据集.一个文件都不是Hadoop中的一个数据集... Hadoop中的一个数据集通常是一个文件夹.因为它不需要在这里运行reduce,所以它不会.
你需要欺骗Pig来运行Map AND Reduce.我通常这样做的方式是:
set default_parallel 1
...
A = UNION Message_1,Message_2,Message_3,Message_4;
B = GROUP A BY 1; -- group ALL of the records together
C = FOREACH B GENERATE FLATTEN(A);
...
Run Code Online (Sandbox Code Playgroud)
将GROUP BY所有记录组合在一起,然后FLATTEN列出退出的爆炸.
这里要注意的一点是,这与做的没什么不同:
$ hadoop fs -cat msg1.txt msg2.txt msg3.txt msg4.txt | hadoop fs -put - union.txt
Run Code Online (Sandbox Code Playgroud)
(这是连接所有文本,然后将其作为新文件写回HDFS)
这根本不是平行的,但也没有通过一个减速器汇集所有数据.
| 归档时间: |
|
| 查看次数: |
8363 次 |
| 最近记录: |