如何读取CSV并生成带有第一列值的猪的json / avro文件?

时间:2014-07-25 20:27:56

标签: json apache-pig avro

我是猪的新手并且有以下" test.csv":

A,Mark,45
A,Joe,42
A,Kyle,43
B,Mike,40

我知道我可以遍历这个并使用FOREACH生成每行记录,但是 我不知道的是我如何使用pig迭代并生成如下所示的两条记录:

{"class":"A",people:[["Mark",45],["Joe",42],["Kyle",43]]}
{"class":"B",people:[["Mike",40]]}

请注意,每条记录基本上都是"分组"通过第一列的唯一值。 如果可能的话,这是另一种可行的替代方案:

{"class":"A",people:[{"name":"Mark","age":45},{"name":"Joe","age":42},{"name":"Kyle","age":43}]}
{"class":"B",people:[{"name":"Mike","age":40}]}

1 个答案:

答案 0 :(得分:0)

A = load' test.csv'使用PigStorage(',')作为(col1,col2,col3);

B = col1的A组;

C = foreach B生成组,A.col2,A.col3;

将C存储到'位置'使用PigStorage(',');

这将为您提供所需的o / p。如果你想要json格式o / p然后使用org.apache.pig.builtin.JsonStorage()进行存储;