我是猪的新手。我有一个 Pig 脚本,它在两个元素之间生成制表符分隔的对。每行一对,例如:
John Paul
Tom Nik
Mark Bill
Tom Nik
Paul John
我需要过滤掉重复的组合。如果我使用 DISTINCT,我会过滤掉两个“Tom Nik”条目。结果是:
John Paul
Tom Nik
Mark Bill
Paul John
这种方法的问题是我留下了“John Paul”和“Paul John”,就我的目的而言,它们应该被视为相同(相同的组合)。
有没有办法删除排列组合?
我不确定 Pig 中如何实现字符串比较,但尝试以下方法可能是值得的:
-- A is your input
B = FOREACH A GENERATE FLATTEN(($0 < $1 ? ($0, $1) : ($1, $0))) ;
C = DISTINCT B ;
通过对名称进行排序,使“较小的”始终出现在前面John Paul
and Paul John
现在应该是相同的顺序,使得DISTINCT
消除一个。
然而,这种方法完全取决于字符串比较的实现方式。例如,如果比较长度,则John Paul
case 将无法正确过滤。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)