diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/HashTableLoader.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/HashTableLoader.java index 536b92c..9e6c4fc 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/HashTableLoader.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/HashTableLoader.java @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.ql.exec.tez; import java.io.IOException; +import java.lang.management.ManagementFactory; import java.util.Collections; import java.util.Map; @@ -82,6 +83,13 @@ public void load(MapJoinTableContainer[] mapJoinTables, // TODO remove this after memory manager is in long noConditionalTaskThreshold = HiveConf.getLongVar( hconf, HiveConf.ConfVars.HIVECONVERTJOINNOCONDITIONALTASKTHRESHOLD); + long processMaxMemory = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax(); + if (noConditionalTaskThreshold > processMaxMemory) { + LOG.warn("noConditionalTaskThreshold value of " + noConditionalTaskThreshold + + " is greater than the max memory size of " + processMaxMemory); + // Don't want to attempt to grab more memory than we have available + noConditionalTaskThreshold = processMaxMemory; + } // Only applicable to n-way Hybrid Grace Hash Join HybridHashTableConf nwayConf = null;