apache-pig - 使用PigLatin删除重复项

标签 apache-pig

我正在使用PigLatin过滤一些记录。

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

该脚本应为用户删除重复项,并保留这些记录之一。类似于linux中的独特命令。

输出应为:
User1 8 NYC 
User2 4 NYC

有什么建议么?

最佳答案

对于您的特定示例,distinct效果不好,因为您的输出包含所有输入列($0, $1, $2),因此您只能在具有($0, $2)($0)列且丢失$1的投影上进行distinct。

为了为每个用户选择一条记录(任何记录),您可以使用GROUP BY和带有FOREACH的嵌套LIMIT。前任:

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

这种方法将帮助您获取在字段子集中唯一的记录,并限制每个用户可以控制的输出记录数。

关于apache-pig - 使用PigLatin删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11534041/

相关文章:

hadoop - 转储命令在 pig 中显示空括号

hadoop - 在 Pig 中过滤记录

mongodb - Pig MongoLoader 异常加载带有 UUID 的数据

hadoop - PIG 如何将行数从 1 个别名返回到另一个别名

mongodb - 使用 Pig 将 HDFS 数据存储到 MongoDB

python - 在 Amazon EMR 上安装 PIG 0.14

hadoop - Apache PIG-错误org.apache.pig.impl.PigContext-在第1行第1列遇到 “<OTHER> ”,= “”

hadoop - pig - 复制连接

apache-pig - 如何在 pig 中存储和使用变量

hadoop - 如何在 Apache pig 中使用 SimpleRandomSample