我试图在pig中创建一个元组,但文件的格式不太友好:
File Format:
Name: Zach
LastName: Red
Address: 34 Store Av
Age: 34
Name: Brian
LastName: Curts
Address: 123 Street Av
Age: 23
我需要创建一个元组:
Name: Zach LastName: Red Address: 34 Store Av Age: 34
Name: Brian LastName: Curts Address: 123 Street Av Age: 23
2条答案
按热度按时间3lxsmp7m1#
疯狂的想法,但可能奏效;我假设所有元素都有4行。否则-就不行了。
使用pigstorage加载文件
使用秩运算符为每行生成秩字段。第一排得到1,第二排得到2,以此类推。
对于每一行,根据其类型生成一个介于1-4之间的数字:1表示姓名,2表示姓氏,3表示地址,4表示年龄。我们称之为“记录类型”
添加另一个字段floor((rank-1)/4)。将其命名为“personid”。第一个人是0,第二个人是1,以此类推。
现在您可以按personid分组,以获取同一个人的所有记录。
现在,对于每个人,你会得到一个人名,和一个包含所有记录的袋子。我们得把他们分类。为此你可以用
output=foreach person{sorted=order personrows by recordtype;生成personid,排序;}
使用bagtotuple函数将包扁平化为一个元组
你就完了。
piwo6bdm2#
您可以用java/python/编写自己的自定义项。。。加载此数据。检查文件:http://pig.apache.org/docs/r0.15.0/udf.html#load-存储功能