如何读取 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文件

如何在这种情况下从多个csv文件读取数据并生成报告?

如何读取 2 列 csv 文件并创建字典?

ean13码的生成,python读取csv中数据并处理返回并写入到另一个csv文件中

如何使用熊猫读取共享文件夹中的csv文件?

vb.net 怎么生成csv文件与怎么读取csv文件