无法使用PigStorage处理数据

时间:2015-03-04 10:10:13

标签: apache-pig

我想用pig Script处理文件

我的输入文件是这个(&是列分隔符,$是行分隔符):

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 个答案:

答案 0 :(得分:0)

你能试试吗?

选项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)
相关问题