fnameとlastnameのデータをグループ化する必要があります。 idフィールドで豚のグループ機能でbincode演算子を使う方法
(fnameは、LNAME、ID)
abc,xyz,I
abc,xyz,N
ppp,xxx,I
ppp,XXX,I
私は2つの値を期待しています、私は同じfnameのためにNとIの両方を得れば、私はIDを使用する必要がありますので、LNAMEの組み合わせをNまたはI、すなわちNがグループ内で与えられているようにidフィールドにvalueを使用する必要があるためです。
私は結果の下に期待しています:
abc,xyz,N
ppp,xxx,I
私は
in =load '/testing/name.txt' USING PigStorage(',') as (fname:chararray,lname:chararray,id:chararray);
grp = group in by (fname,lname);
z = foreach grp generate FLATTEN(group) AS (fname,lname),(COUNT(in.id) >1 ? ('N') :BagToTuple(in.id))as id;
をコードの下にしようとしたと
その作業罰金てきたしかし、今私が代わりにカウントのidフィールドの値をチェックする必要があります。z = foreach grp generate FLATTEN(group) AS (fname,lname),((in.id == 'N' or in.id == 'I') ? ('N') :BagToTuple(in.id))as id;
ただし、以下のエラーが表示されます。
(Name: Equal Type: null Uid: null)incompatible types in Equal Operator left hand side:bag :tuple(id:chararray) right hand side:chararray
エラー以下の寄付は、しかし:
はTwo inputs of BinCond must have compatible schemas. left hand side: #31:tuple(#32:chararray) right hand side: org.apache.pig.builtin.bagtotuple_3#35:tuple(id#36:int)
チェックこのhttp://stackoverflow.com/questions/18086768/pig-filter-returns-empty-bag-that-i-cant-count – BruceWayne