如何在pig中加载带有制表符和逗号的数据集

Posted

技术标签:

【中文标题】如何在pig中加载带有制表符和逗号的数据集【英文标题】:how to load a dataset with both tabs and comma in pig 【发布时间】:2018-10-31 02:05:32 【问题描述】:

我正在尝试将其加载到 pig 中,但我很难将其加载为五个不同的字段。

我的数据集

QTM 2009,0.53,0.47,1365900
QTM 2009,0.56,0.54,1246100
QTM 2009,0.6,0.54,1023600

如果我尝试使用 TextLoader 加载它,它会将行读取为一个字段。

我还尝试将其加载为两个字段,然后使用 STRSPLIT 命令,然后将两者结合起来。问题在于它默认将其声明为字节数组。我希望能够执行聚合。 我使用以下命令来做到这一点:

A = Load 'NYSEB.txt' AS(Symbol:chararray, Detail:chararray);
B = Foreach A GENERATE (STRSPLIT(Symbol, ',',1)), (STRSPLIT(Detail, ',', 
4));
B = Foreach A GENERATE
flatten(STRSPLIT (Symbol, ',',1)),
flatten(STRSPLIT(Detail, ',', 4));

有人可以帮助我吗:我希望我的领域是 (symbol:string, year:string, op:double, cp:double, vol:int)

【问题讨论】:

【参考方案1】:

将文件加载到 4 个字段中,以逗号作为分隔符,然后在第一个字段上使用 strsplit 以获得所需的 5 个字段。

 A = LOAD 'NYSEB.txt' USING PigStorage(',') AS (symbol_year:chararray, op:double, cp:double, vol:int);
 B = FOREACH A GENERATE FLATTEN(STRSPLIT(symbol_year,'\\t',2)) as (symbol:chararray,year:chararray),op,cp,vol; 
 C = FOREACH B GENERATE symbol, year, op, cp, vol;
 DUMP C;

【讨论】:

以上是关于如何在pig中加载带有制表符和逗号的数据集的主要内容,如果未能解决你的问题,请参考以下文章

在 pig 中加载由双冒号 :: 分隔的文件

python pandas 中文件的读写——read_csv()读取文件

Pig - 删除换行、回车和制表符

在 pig 中加载多个文件

在 PIG 中加载文件时如何忽略“(双引号)?

如何在 Pig 中从 json 中加载 json 和 value?