无法使用 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)