2016-08-30 16 views

答えて

0

あなたはRANKを使用してシーケンス番号を生成することができますが、その値が「0」または「nullが」のみシーケンス番号を割り当てるされたいずれかの場合は、あなたの状態で、あなたがチェックしている少し異なる..です

マイポイントあなたが豚でこの..

package pig.test; 

import java.io.IOException; 

import org.apache.pig.EvalFunc; 
import org.apache.pig.data.Tuple; 

public class SequenceNumber extends EvalFunc<Integer> { 
    static int cnt = 0; 
    public Integer exec(Tuple v) throws IOException{ 
     int a = (Integer)v.get(0); 

     if(a == 0) { 
      cnt++ ; 
      return new Integer(cnt); 
     } 
     else 
      return new Integer(a); 
    } 

} 

のためのUDFを使用する必要があります表示:

--Replace all null with 0 

Step-1 A1 = foreach A generate *, (id is null ? 0 : id) as sq; 
Step-2 T1 = foreach A1 generate sq,<your_fields>,<your_fields>; 
Step-3 Result = foreach T1 generate sqno(*),<your_fields>,<your_fields>; 

これが役立つことを願っています!

関連する問題