Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 通用联接脚本_Hadoop_Apache Pig - Fatal编程技术网

Hadoop 通用联接脚本

Hadoop 通用联接脚本,hadoop,apache-pig,Hadoop,Apache Pig,我有一个项目,其中我计算了帐户上的各种数据,并将每个数据保存在不同的文件中(每个计算都有不同的脚本)。 然后,我需要创建最后一个文件,该文件合并了一个帐户的所有数据。 一种方法是将每个输出保存在不同的目录中,而不是在最终脚本中,使用模式加载每个目录,按帐户加入(或联合组)并打印。这里的问题是,我需要告诉pig要加载哪些目录。 我想制作一个更通用的脚本,以便添加更多的计算,因此我创建了一个父目录,并将所有输出保存在该目录下(在子目录中)。然后我写了这个脚本 attributes_data=

我有一个项目,其中我计算了帐户上的各种数据,并将每个数据保存在不同的文件中(每个计算都有不同的脚本)。 然后,我需要创建最后一个文件,该文件合并了一个帐户的所有数据。 一种方法是将每个输出保存在不同的目录中,而不是在最终脚本中,使用模式加载每个目录,按帐户加入(或联合组)并打印。这里的问题是,我需要告诉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子句,如果这样做有用的话

在分组之前,您可以尝试使用ORDERBY子句,如果这样做有用的话

我认为之后的分组不一定能保持顺序-似乎没有希望。我认为之后的分组不一定能保持顺序-似乎没有希望。