我是 Pig 的新手,并试图正确实现一个有点通用的算法,在该算法中,我需要配对一组记录中的每个匹配记录。为了将问题提炼成最简单的形式并避免讨论一些特定于业务的敏感性,这里有一个模拟问题:
假设我有一个代表大学课程和参加这些课程的学生的数据集:
Philosophy,John
English,Mary
English,Sue
History,Jack
Philosophy,David
English,Mark
English,Larry
我想配对上同一门课的学生之间的每一个关联;所以输出将包括这个,显示四个“英语”行爆炸成六个关联:
Philosphy John,David
English Mary,Sue
English Mary,Mark
English Mary,Larry
English Sue,Mark
English Sue,Larry
English Mark,Larry
本页: http: //ofps.oreilly.com/titles/9781449302641/advanced_pig_latin.html是指使用 flatten() 来实现叉积。我已经尝试了几种方法并对此进行了广泛的研究,并会发布我的尝试,但老实说,我正在摇摆不定,我认为这只会让读者感到困惑并且不会提供任何价值。但这是样板:
s = load 'classes' using PigStorage(',') as (class:chararray, student:chararray);
grp = group s by class;
...
(我相信我面临的问题与需要多个袋子而不是多个字段的展平有关,而且我不知道如何让我的分组生成多个袋子......)
感谢您的任何帮助!