无法使用 PigStorage 处理数据
Not able to process data with PigStorage
我想要一个用 pig 脚本处理的文件
我的输入文件是这样的(&
是列分隔符,$
是行分隔符):
abc&bc&121&aa$aaj&jkj&print&star$aa&tss&jjlk&121
我试过这个:
a = LOAD 'try.txt' USING PigStorage ('$') as (col1:chararray); b = FOREACH a Generate REPLACE(col1, '&', ',');
我试图在第一个定界符之后分离一个元组,但我使用它只能得到第一个元组。
我要找的输出文件:
(abc,bc,121,aa)
(aaj,jkj,print,star)
(aa,tss,jjlk,121)
有什么帮助吗?
你能试试这个吗?
选项 1:
输入
abc&bc&121&aa$aaj&jkj&print&star$aa&tss&jjlk&121
PigScript:
A = LOAD 'input' AS (line:chararray);
B = FOREACH A GENERATE FLATTEN(TOKENIZE(line,'$')) AS splittedLine;
C = FOREACH B GENERATE FLATTEN(STRSPLIT(splittedLine,'&')) AS(col1,col2,col3,col4);
DUMP C;
输出:
(abc,bc,121,aa)
(aaj,jkj,print,star)
(aa,tss,jjlk,121)
选项2:
PigScript:
A = LOAD 'input' USING PigStorage('$') AS (row1:chararray,row2:chararray,row3:chararray);
B = FOREACH A GENERATE FLATTEN(TOBAG(STRSPLIT(row1,'&'),STRSPLIT(row2,'&'),STRSPLIT(row3,'&')));
DUMP B;
输出:
(abc,bc,121,aa)
(aaj,jkj,print,star)
(aa,tss,jjlk,121)
我想要一个用 pig 脚本处理的文件
我的输入文件是这样的(&
是列分隔符,$
是行分隔符):
abc&bc&121&aa$aaj&jkj&print&star$aa&tss&jjlk&121
我试过这个:
a = LOAD 'try.txt' USING PigStorage ('$') as (col1:chararray); b = FOREACH a Generate REPLACE(col1, '&', ',');
我试图在第一个定界符之后分离一个元组,但我使用它只能得到第一个元组。
我要找的输出文件:
(abc,bc,121,aa)
(aaj,jkj,print,star)
(aa,tss,jjlk,121)
有什么帮助吗?
你能试试这个吗?
选项 1:
输入
abc&bc&121&aa$aaj&jkj&print&star$aa&tss&jjlk&121
PigScript:
A = LOAD 'input' AS (line:chararray);
B = FOREACH A GENERATE FLATTEN(TOKENIZE(line,'$')) AS splittedLine;
C = FOREACH B GENERATE FLATTEN(STRSPLIT(splittedLine,'&')) AS(col1,col2,col3,col4);
DUMP C;
输出:
(abc,bc,121,aa)
(aaj,jkj,print,star)
(aa,tss,jjlk,121)
选项2:
PigScript:
A = LOAD 'input' USING PigStorage('$') AS (row1:chararray,row2:chararray,row3:chararray);
B = FOREACH A GENERATE FLATTEN(TOBAG(STRSPLIT(row1,'&'),STRSPLIT(row2,'&'),STRSPLIT(row3,'&')));
DUMP B;
输出:
(abc,bc,121,aa)
(aaj,jkj,print,star)
(aa,tss,jjlk,121)