我正在尝试使用mapreduce处理一堆zip文件。 我的代码工作正常,我能够将所有小型zip文件处理成HBase。 但是当zip文件的大小增加超过30 mb然后我得到了
java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3236)
异常。 这是解压缩文件并加载到内存中然后处理它的代码。
// Read the file contents
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] temp = new byte[8192];
while ( true )
{
int bytesRead = 0;
try
{
bytesRead = zip.read( temp, 0, 8192 );
}
catch ( EOFException e )
{
if ( ZipFileInputFormat.getLenient() == false )
throw e;
return false;
}
if ( bytesRead > 0 )
bos.write( temp, 0, bytesRead );
else
break;
}
我也增加了mapred内存.Below是我的配置文件。
hbaseConf.set("mapreduce.child.java.opts", "-Xmx6553m");
hbaseConf.set("mapreduce.map.memory.mb", "8192");
请提出任何建议。