私は次のデータセットを持っています:
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でどのように行うことができますか?
私は次のデータセットを持っています:
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でどのように行うことができますか?
次のようなことができます。
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 を超えないことを前提としています。それ以上ある場合は、それを増やしてください。