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