簡體   English   中英

Hadoop反序列化不適用於列表

[英]Hadoop Deserialisation not working for List

我的Map Reduce程序中創建了以下自定義對象:

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:growthValues.add(dValue); 這意味着dValue為null。

錯了 這意味着growthValues為空。

您缺少創建反序列化實際列表的步驟。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM