如何在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中加载带有制表符和逗号的数据集的主要内容,如果未能解决你的问题,请参考以下文章