Java BufferedWriter导致内存超出异常
我正在使用BufferedWriter将我的内容写入文件。[实际上文件是HDFS。我正在通过reducer编写。]Java BufferedWriter导致内存超出异常,java,Java,我正在使用BufferedWriter将我的内容写入文件。[实际上文件是HDFS。我正在通过reducer编写。] FileSystem fs = FileSystem.get(new Configuration()); Path path = new Path("temp.txt"); OutputStream os = fs.create(path); bufferedWriter = new BufferedWriter(new OutputStrea
FileSystem fs = FileSystem.get(new Configuration());
Path path = new Path("temp.txt");
OutputStream os = fs.create(path);
bufferedWriter = new BufferedWriter(new OutputStreamWriter(os));
这就是我创建BufferedWriter的方式。[减速器的设置方法]
在减少方法中写入部分:
try {
bufferedWriter.write(dt+ExporterConstants.MAP_OUTPUT_KEY_SEPERATOR+hdfsPath+ExporterConstants.MAP_OUTPUT_KEY_SEPERATOR+inputSplit+"\n");
} catch (IOException e1) {
e1.printStackTrace();
}
我将在减速器的清理方法中关闭此方法
我的问题:
我遇到了一个错误,比如容器的运行超出了物理内存限制。当前使用情况:使用了5.5 GB物理内存中的5.5 GB;使用了8.7 GB的11.5 GB虚拟内存
。所以我假设我正在缓冲所有数据,并在关闭方法时只刷新一次
这是问题的根源吗?
我如何有效地冲水
我也愿意使用其他作家。有什么建议吗?堆大小对于您提供的内存来说似乎太大了。JVM可以使用最大堆大小来尝试使程序运行更快,而不仅仅是因为保留了数据
尝试减少JVM的内存消耗。如果您将其设置得太低,无法保存数据,则会出现OutOfMemoryError。@GopsAB您有什么疑问?对不起,我想不出更简单的说法了。