使用ZipFileInputFormat在mapreduce中处理大型zip文件失败

时间:2016-11-11 11:44:32

标签: java hadoop mapreduce

我正在尝试使用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");

请提出任何建议。

0 个答案:

没有答案