内部にシリアル化された HashMap を含む 1.5 GB のファイルがあります。
これを HashMap 変数に読み込む Mapper クラスに setup() メソッドがあります。
読み取りメソッドに移動できるように見えますが、すぐにタスクの Java ヒープ スペース エラーがスローされます。
mapred.child.opts パラメーターを設定する必要があるかもしれないという多くの議論を読んで、メイン プログラム コード内でそれを実行しています。
私は使用しています: conf.set("mapred.child.java.opts.", "-Xmx1024M");
さらに数を増やしてみました。シリアル化されたファイルを HashMap 変数に読み込もうとしているときに、同じエラーがスローされ続けるのはなぜですか?
私の setup() メソッドのコードは次のとおりです。
try {
test="hello";
Path pt=new Path("hdfs://localhost:9000/user/watsonuser/topic_dump.tsv");
FileSystem fs = FileSystem.get(new Configuration());
}catch(Exception e) {System.out.println("Exception while reading the nameMap
file."); e.printStackTrace();}
InputStream is = fs.open(pt);
ObjectInputStream s = new ObjectInputStream(is);
nameMap = (HashMap<String, String>) s.readObject();
s.close();
}catch(Exception e) {
System.out.println("Exception while reading the nameMap file.");
e.printStackTrace();
}