2016-05-15 10 views
0

のために働いていない私は私の地図の一部として作成された次のカスタムオブジェクトを持っているプログラムの削減:Hadoopのデシリアライゼーションが一覧

public class Sales implements Writable{ 

    private List<Double> growthValues; 

    public List<Double> getGrowthValues() { 
     return growthValues; 
    } 

    public void setGrowthValues(List<Double> growthValues) { 
     this.growthValues = growthValues; 
    } 

    @Override 
    public void readFields(DataInput in) throws IOException { 
     int size=in.readInt(); 
     Double dValue; 
     for(int i=0;i<size;i++){ 
      dValue=in.readDouble(); 
      growthValues.add(dValue); 
     } 
    } 

    @Override 
    public void write(DataOutput out) throws IOException { 
     out.writeInt(growthValues.size()); 
     for(Double d:growthValues){ 
      out.writeDouble(d);    
     } 

    } 

} 

私は次の行にNullPointerExceptionが取得しています: growthValues.add(dValue)。 これは、dValueがnullであることを意味します。

私はListを持っていて、それはWritableインターフェイスを実装する型でなければなりませんか?

すべてのヘルプは、私は次の行にNullPointerExceptionが取得しています感謝し、事前のおかげで

+0

PLSが働いThomas.It http://stackoverflow.com/questions/14249128/implementation-of-custom-writable-in-hadoop –

答えて

1

次のようになります。 growthValues.add(dValue)。これは、dValueがnullであることを意味します。

これは間違っています。つまり、growthValuesはnullです。

0

デシリアライズ時の実際のリストを作成するステップがありません。

int size = in.readInt(); 
    growthValues = new ArrayList<>(size); 
    for(int i = 0; i < size; i++){ 
     growthValues.add(in.readDouble()); 
    } 
+0

感謝を見てみましょう! – abhi1489