使用mapReduce在重复项中获取唯一记录 File.txt

使用mapReduce在重复项中获取唯一记录 File.txt,mapreduce,apache-pig,Mapreduce,Apache Pig,1)第1列、第2列、第3列是主键 2)第4列和第5列是比较键 我有一个重复的记录,如上面的重复记录在这个重复记录我只需要得到一个记录中的重复排序顺序的基础上 预期输出: 123,abc,4, ,War 234,xyz,5, ,update 179,ijo,6,all,allSingle 请帮帮我。提前谢谢。问题不太清楚,但我知道这是您需要的: A = LOAD 'file.txt' using PigStorage(',') as (column1,column2,colum3,column4

1)第1列、第2列、第3列是主键

2)第4列和第5列是比较键

我有一个重复的记录,如上面的重复记录在这个重复记录我只需要得到一个记录中的重复排序顺序的基础上

预期输出:

123,abc,4, ,War
234,xyz,5, ,update
179,ijo,6,all,allSingle

请帮帮我。提前谢谢。

问题不太清楚,但我知道这是您需要的:

A = LOAD 'file.txt' using PigStorage(',') as (column1,column2,colum3,column4,column5);
B = GROUP A BY (column1,column2,colum3);
C = FOREACH B GENERATE FLATTERN(group) as (column1,column2,colum3);
DUMP C;


问题不太清楚,但我知道这是你需要的:

A = LOAD 'file.txt' using PigStorage(',') as (column1,column2,colum3,column4,column5);
B = GROUP A BY (column1,column2,colum3);
C = FOREACH B GENERATE FLATTERN(group) as (column1,column2,colum3);
DUMP C;


您可以尝试以下代码:

data = LOAD 'path/to/file' using PigStorage(',') AS (col1:chararray,col2:chararray,col3:chararray,col4:chararray,col5:chararray);
B = group data by (col1,col2,col3);
C = foreach B {
        sorted = order data by col4 desc;
        first    = limit sorted 1;
        generate group, flatten(first);
};

在上面的代码中,您可以更改<代码>排序的变量,以选择要考虑排序的列和排序类型。此外,如果需要多条记录,可以将

限制更改为大于1


希望这有帮助。

您可以尝试以下代码:

data = LOAD 'path/to/file' using PigStorage(',') AS (col1:chararray,col2:chararray,col3:chararray,col4:chararray,col5:chararray);
B = group data by (col1,col2,col3);
C = foreach B {
        sorted = order data by col4 desc;
        first    = limit sorted 1;
        generate group, flatten(first);
};

在上面的代码中,您可以更改<代码>排序的变量,以选择要考虑排序的列和排序类型。此外,如果需要多条记录,可以将

限制更改为大于1

希望这有帮助