public void configure(JobConf job) { super.configure(job); if (resultIndexes.length > 1) throw new RuntimeException("MMCJMR only outputs one result"); outputDummyRecords = MapReduceTool.getUniqueKeyPerTask(job, false).equals("0"); try { // valueBuffer=valueClass.newInstance(); valueBuffer = buffer; remainingbuffer = new RemainIndexValue(valueClass); } catch (Exception e) { throw new RuntimeException(e); } int blockRlen = dim1.getRowsPerBlock(); int blockClen = dim2.getColsPerBlock(); int elementSize = (int) Math.ceil((double) (77 + 8 * blockRlen * blockClen + 20 + 12) / 0.75); OUT_CACHE_SIZE = ((long) OptimizerUtils.getLocalMemBudget() // current jvm max mem - MRJobConfiguration.getMMCJCacheSize(job)) / elementSize; outCache = new HashMap<MatrixIndexes, MatrixValue>(1024); }