hadoop - 通用连接脚本

标签 hadoop apache-pig

我有一个项目,在这个项目中我计算各种账户数据并将每个数据保存在不同的文件中(每个计算都有不同的脚本)。 然后,我需要创建最终文件,其中包含一个帐户的所有数据。 一种方法是将每个输出保存在不同的目录中,而不是在最终脚本中用模式加载每个目录,按帐户加入(或共同分组)并打印。这里的问题是,我需要告诉 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/

相关文章:

scala - 使用 Spark Scala 将 HDFS 文件内容存储在 ArrayBuffer 中

python - 具有许多json文件作为输入的Amazon EMR作业

hadoop - 如何在 Apache PIG 中对日期进行排序?

apache-pig - 是否可以使用 Pig 在 GENERATE 条件中将 long 转换为字符串?

hadoop - 合并串联的 PIG 输入文件中的相似组

apache-pig - 我可以在 Apache Pig Latin 中将命令拆分为多行吗?

hadoop - 如何在hadoop中更改mapreduce的输出格式?

hadoop - 如何使用 hadoop mapreduce 查找登录持续时间

hadoop - 如何提高Hive的速度

hadoop - 位置变量上的 pig 过滤器