0

私は次のデータセットを持っています:

1,11,ab;cd;200

2,22,pq;rs

私はこれを出力したい:

1,11,ab

1,11,cd

1,11,200

2,22,pq

2,22,rs

UDFを使用せずにPigでどのように行うことができますか?

4

2 に答える 2

0

次のようなことができます。

A = load '....' using PigStorage(',') as (x,y,data : chararray);
SPLT = foreach A generate x, y, FLATTEN(STRSPLIT(data,';'));
X_tmp = foreach SPLT generate $0 as x, $1 as y, FLATTEN(TOBAG($2..$20)) as term; -- pivots the row
X = filter X_tmp by term is not null; -- this removes the extra bag rows when title was split in less than 20 terms

データ文字列に含まれる要素が 20 を超えないことを前提としています。それ以上ある場合は、それを増やしてください。

于 2012-10-22T17:38:57.670 に答える