diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java index 46f0ecd..d98cea9 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java @@ -407,7 +407,11 @@ protected void initializeOp(Configuration hconf) throws HiveException { computeMaxEntriesHashAggr(); } memoryMXBean = ManagementFactory.getMemoryMXBean(); - maxMemory = isTez ? getConf().getMaxMemoryAvailable() : memoryMXBean.getHeapMemoryUsage().getMax(); + if (isLlap || !isTez) { + maxMemory = memoryMXBean.getHeapMemoryUsage().getMax(); + } else { + maxMemory = getConf().getMaxMemoryAvailable(); + } memoryThreshold = this.getConf().getMemoryThreshold(); LOG.info("isTez: {} isLlap: {} numExecutors: {} maxMemory: {}", isTez, isLlap, numExecutors, maxMemory); } @@ -423,12 +427,13 @@ protected void initializeOp(Configuration hconf) throws HiveException { **/ private void computeMaxEntriesHashAggr() throws HiveException { float memoryPercentage = this.getConf().getGroupByMemoryUsage(); - if (isTez) { - maxHashTblMemory = (long) (memoryPercentage * getConf().getMaxMemoryAvailable()); - } else { + if (isLlap || !isTez) { maxHashTblMemory = (long) (memoryPercentage * Runtime.getRuntime().maxMemory()); + } else { + maxHashTblMemory = (long) (memoryPercentage * getConf().getMaxMemoryAvailable()); } - LOG.info("Max hash table memory: {} bytes", maxHashTblMemory); + LOG.info("Max hash table memory: memoryPercentage:{}, maxHashTblMemory:{} bytes", + memoryPercentage, maxHashTblMemory); estimateRowSize(); }