【问题标题】:get Unique record among Duplicates Using mapReduce使用 mapReduce 在重复项中获取唯一记录
【发布时间】:2017-03-11 05:21:28
【问题描述】:

文件.txt

123,abc,4,Mony,Wa
123,abc,4, ,War
234,xyz,5, ,update
234,xyz,5,Rheka,sild
179,ijo,6,all,allSingle
179,ijo,6,ball,ballTwo

1) column1,column2,colum3 是主键

2) column4,column5 是比较键

我有一个包含上述重复记录的文件在这个重复记录中,我只需要根据排序顺序在重复项中获取一条记录。

预期输出:

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

请帮助我。提前致谢。

【问题讨论】:

    标签: mapreduce apache-pig


    【解决方案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);
    };
    

    在上面的代码中,您可以更改sorted 变量以选择您要考虑进行排序的列和排序类型。此外,如果您需要多条记录,您可以将limit 更改为大于 1。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

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

      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 = DISTINCT(FOREACH A GENERATE column1,column2,colum3);
      DUMP B;
      

      【讨论】:

        猜你喜欢
        • 2012-09-28
        • 2011-07-28
        • 2019-03-20
        • 2022-09-23
        • 2011-01-11
        • 2020-03-17
        • 1970-01-01
        • 1970-01-01
        • 2016-11-15
        相关资源
        最近更新 更多