猪如何过滤不同的夫妇(对)

时间:2014-04-02 13:21:08

标签: hadoop apache-pig

我是猪的新手。我有一个Pig脚本,它在两个元素之间生成制表符分隔对。每行一对,例如:

John   Paul
Tom    Nik
Mark   Bill
Tom    Nik
Paul   John

我需要过滤掉重复的组合。如果我使用DISTINCT,我会过滤掉#34; Tom Nik"条目。结果是:

John   Paul
Tom    Nik
Mark   Bill
Paul   John

这种方法存在的问题是,我和#34; John Paul"和保罗约翰",为了我的目的应该被视为相同(相同的组合)。 有没有办法删除permutate组合?

1 个答案:

答案 0 :(得分:1)

我不确定在Pig中如何实现字符串比较,但尝试类似以下内容可能是值得的:

-- A is your input
B = FOREACH A GENERATE FLATTEN(($0 < $1 ? ($0, $1) : ($1, $0))) ; 
C = DISTINCT B ;

通过对名称进行排序,以便“缩小”&#39;始终首先显示John PaulPaul John现在应该按相同的顺序排列,使DISTINCT消除一个。

但是,这种方法都取决于字符串比较的实现方式。例如,如果它比较长度,那么John Paul案例将无法正确过滤。