使用PigLatin删除重复项并保留最后一个元素

Ani*_*iya 1 hadoop duplicate-removal apache-pig datastage

我正在使用PigLatin.我想从包中删除重复项,并希望保留特定键的最后一个元素.

Input:
User1  7 LA 
User1  8 NYC 
User1  9 NYC 
User2  3 NYC
User2  4 DC 


Output:
User1  9 NYC 
User2  4 DC 
Run Code Online (Sandbox Code Playgroud)

这里第一个提交是关键.我希望在输出中保留该特定键的最后一条记录.

我知道如何保留第一个元素.如下.但是无法保留最后一个元素.

inpt = load '......' ......;
user_grp = GROUP inpt BY $0;
filtered = FOREACH user_grp {
      top_rec = LIMIT inpt 1;
      GENERATE FLATTEN(top_rec);
};
Run Code Online (Sandbox Code Playgroud)

有人可以帮我这个吗?提前致谢!

小智 5

@Anil:如果您按其中一个字段按降序排序.您将能够获得最后一条记录.在下面的代码中,按第二个输入字段排序(字段名称:脚本中没有)

输入:

User1,7,LA 
User1,8,NYC 
User1,9,NYC 
User2,3,NYC
User2,4,DC
Run Code Online (Sandbox Code Playgroud)

猪片段:

user_details = LOAD 'user_details.csv'  USING  PigStorage(',') AS (user_name:chararray,no:long,city:chararray);

user_details_grp_user = GROUP user_details BY user_name;

required_user_details = FOREACH user_details_grp_user {
    user_details_sorted_by_no = ORDER user_details BY no DESC;
    top_record = LIMIT user_details_sorted_by_no 1;
    GENERATE FLATTEN(top_record);
}
Run Code Online (Sandbox Code Playgroud)

输出:DUMP required_user_details

(User1,9,NYC )
(User2,4,DC)
Run Code Online (Sandbox Code Playgroud)