如何在Pig中同时加载带有标签和逗号的数据集

时间:2018-10-31 02:05:32

标签: apache-pig

我正在尝试将其加载到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));

有人可以帮我吗:我希望我的领域成为  (符号:string,年份:string,op:double,cp:double,vol:int)

1 个答案:

答案 0 :(得分:0)

使用逗号作为分隔符将文件加载到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;