Ich verwende BufferedWriter, um meinen Inhalt in eine Datei zu schreiben. [Eigentlich Datei ist HDFS. Ich schreibe über Minderer]BufferedWriter verursacht Speicherüberschreitung Ausnahme
FileSystem fs = FileSystem.get(new Configuration());
Path path = new Path("temp.txt");
OutputStream os = fs.create(path);
bufferedWriter = new BufferedWriter(new OutputStreamWriter(os));
Dies ist, wie ich BufferedWriter bin die Schaffung [SetUp Methode des Reduktions]
Writing Teil in der reduzieren Methode:...
try {
bufferedWriter.write(dt+ExporterConstants.MAP_OUTPUT_KEY_SEPERATOR+hdfsPath+ExporterConstants.MAP_OUTPUT_KEY_SEPERATOR+inputSplit+"\n");
} catch (IOException e1) {
e1.printStackTrace();
}
Und ich schließe diese Methode in der Reinigung Methode des Reduzierers
Meine Frage:
Ich erhalte Fehler wie container is running beyond physical memory limits. Current usage: 5.5 GB of 5.5 GB physical memory used; 8.7 GB of 11.5 GB virtual memory used
. Also nehme ich an, dass ich alle Daten puffern und es nur einmal zum Zeitpunkt der nahen Methode spülen werde.
Ist das Problem verursacht? Und wie spüle ich effizient?
Und ich bin offen für andere Autoren auch zu verwenden. Irgendwelche Vorschläge?
@GopsAB was sind deine Zweifel? Ich kann mir keinen einfacheren Weg vorstellen, es tut mir leid. –