我是猪的新手。我有一个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组合?
答案 0 :(得分:1)
我不确定在Pig中如何实现字符串比较,但尝试类似以下内容可能是值得的:
-- A is your input
B = FOREACH A GENERATE FLATTEN(($0 < $1 ? ($0, $1) : ($1, $0))) ;
C = DISTINCT B ;
通过对名称进行排序,以便“缩小”&#39;始终首先显示John Paul
和Paul John
现在应该按相同的顺序排列,使DISTINCT
消除一个。
但是,这种方法都取决于字符串比较的实现方式。例如,如果它比较长度,那么John Paul
案例将无法正确过滤。