我有一个项目,在这个项目中我计算各种账户数据并将每个数据保存在不同的文件中(每个计算都有不同的脚本)。 然后,我需要创建最终文件,其中包含一个帐户的所有数据。 一种方法是将每个输出保存在不同的目录中,而不是在最终脚本中用模式加载每个目录,按帐户加入(或共同分组)并打印。这里的问题是,我需要告诉 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;
这样,我不需要告诉 pig 他应该加载哪些文件,它只加载我的输出目录下的所有子目录。这里的问题是group by之后包里元组的顺序不一致,所以我最后的结果顺序不一致,这是个问题。
我真的很感激你的想法,让脚本尽可能通用,同时在最终结果中保存一些数据顺序。
最佳答案
在分组之前,您可以尝试使用 ORDER BY 子句,如果可以的话。
关于hadoop - 通用连接脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10930472/