如何读取 CSV 并生成 json/avro 文件,其中 pig 按第一列的值分组?
Posted
技术标签:
【中文标题】如何读取 CSV 并生成 json/avro 文件,其中 pig 按第一列的值分组?【英文标题】:How to read CSV and generate json/avro file with pig grouped by the values of first column? 【发布时间】:2014-07-25 20:27:55 【问题描述】:我是猪新手,有以下“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】:A = 使用 PigStorage(',') 加载 'test.csv' 作为 (col1, col2, col3);
B = col1 的 A 组;
C = foreach B 生成组,A.col2,A.col3;
使用 PigStorage(','); 将 C 存储到“位置”;
这将为您提供所需的 o/p。如果你想要 json 格式 o/p 然后使用 org.apache.pig.builtin.JsonStorage() 进行存储;
【讨论】:
以上是关于如何读取 CSV 并生成 json/avro 文件,其中 pig 按第一列的值分组?的主要内容,如果未能解决你的问题,请参考以下文章
python 读取多个csv文件中某一列,并生成一个新csv文件