PIG中单条记录的多条记录

时间:2017-11-29 06:58:59

标签: apache-pig

我输入的文件如下。

1,Cust_name1,addr_type,Addr1
1,Cust_name1,addr_type,Addr2
2,Cust_name3,addr_type,Addr1
2,Cust_name3,addr_type,Addr3

想要将其转换为Avro格式。

输出应该像

1,Cust_name1,{(addr_type,Addr1),(addr_type,Addr2)
1,Cust_name3,{(addr_type,Addr1),(addr_type,Addr3)

对于我想要的每个客户,在avro中生成一条消息,在数组中生成重复的元素。

1 个答案:

答案 0 :(得分:0)

按ID和客户名称分组。为了以Avro格式存储,请使用piggybank.jar中提供的AvroStorage并将其注册到您的脚本中。它可以从here下载

REGISTER /path/piggybank.jar;
A = LOAD 'data.txt' USING PigStorage(',') AS (int:id;name:chararray;addrtype:chararray;addr:chararray);
B = GROUP A BY (id,name);
STORE B INTO '/path/' USING org.apache.pig.piggybank.storage.avro.AvroStorage();;