gpt4 book ai didi

hadoop - 将 PIG 中 UNION 的结果存储在单个文件中

转载 作者:可可西里 更新时间:2023-11-01 14:14:25 24 4
gpt4 key购买 nike

我有一个产生四个结果的 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';

在 AA 文件夹中,我得到 4 个文件,如上所述。我不能获得包含所有条目的单个文件吗?

最佳答案

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);
...

GROUP BY 将所有记录组合在一起,然后 FLATTEN 分解该列表。


这里要注意的一件事是,这与做没有太大区别:

$ hadoop fs -cat msg1.txt msg2.txt msg3.txt msg4.txt | hadoop fs -put - union.txt

(这是连接所有文本,然后将其作为新文件写回 HDFS)

这根本不是并行的,但也不是通过一个 reducer 汇集所有数据。

关于hadoop - 将 PIG 中 UNION 的结果存储在单个文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10954883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com