通用连接脚本

时间:2012-06-07 11:00:36

标签: hadoop apache-pig

我有一个项目,我在其中计算帐户的各种数据,并将每个数据保存在不同的文件中(每个计算都有不同的脚本)。 然后,我需要创建最终文件,该文件组合了帐户的所有数据。 一种方法是将每个输出保存在不同的目录中,而不是在最终脚本中使用模式加载每个目录,按帐户和打印加入(或共同组)。这里的问题是,我需要告诉猪要加载哪些目录。 我想制作一个更通用的脚本,这样可以很容易地添加更多的计算,所以我创建了一个父目录并保存了该目录下的所有输出(在子目录中)。然后我写了这个脚本

attributes_data=        load '$attributes_data' using CSVLoader;
union_data=         group attributes_data by TRIM ($0);
final_output=       foreach union_data generate
            FLATTEN(Merge_Bags(attributes_data));
store order_data into '$final_attr' using AttributesStorer;

这样,我不需要告诉他应该加载哪些文件,它只是加载我的输出目录下的所有子目录。这里的问题是,分组后的包中的元组顺序不一致,所以我的最终结果没有一致的顺序,这是一个问题。

我真的很赞赏你的想法,使脚本尽可能通用,同时在最终结果中保存一些数据顺序。

由于

1 个答案:

答案 0 :(得分:0)

在分组之前,您可以尝试使用ORDER BY子句,如果这有用的话。