diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/ConditionalTask.java ql/src/java/org/apache/hadoop/hive/ql/exec/ConditionalTask.java index 52cb445..c24a003 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/ConditionalTask.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/ConditionalTask.java @@ -61,17 +61,6 @@ public boolean isMapRedTask() { } @Override - public boolean hasReduce() { - for (Task task : listTasks) { - if (task.hasReduce()) { - return true; - } - } - - return false; - } - - @Override public int execute(DriverContext driverContext) { resTasks = resolver.getTasks(conf, resolverCtx); resolved = true; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/Task.java ql/src/java/org/apache/hadoop/hive/ql/exec/Task.java index e1bd291..6f35a22 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/Task.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/Task.java @@ -156,6 +156,7 @@ public void initialize(QueryState queryState, QueryPlan queryPlan, DriverContext setInitialized(); this.queryState = queryState; this.conf = queryState.getConf(); + this.conf.setBoolean(Utilities.HAS_REDUCE_WORK, hasReduce()); this.driverContext = driverContext; console = new LogHelper(LOG); } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java index 8db833e..004fdce 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java @@ -218,6 +218,7 @@ public static String REDUCE_PLAN_NAME = "reduce.xml"; public static String MERGE_PLAN_NAME = "merge.xml"; public static final String INPUT_NAME = "iocontext.input.name"; + public static final String HAS_REDUCE_WORK = "has.reduce.work"; public static final String MAPRED_MAPPER_CLASS = "mapred.mapper.class"; public static final String MAPRED_REDUCER_CLASS = "mapred.reducer.class"; public static final String HIVE_ADDED_JARS = "hive.added.jars"; @@ -310,6 +311,9 @@ public static void setReduceWork(Configuration conf, ReduceWork work) { } public static ReduceWork getReduceWork(Configuration conf) { + if (!conf.getBoolean(HAS_REDUCE_WORK, true)) { + return null; + } return (ReduceWork) getBaseWork(conf, REDUCE_PLAN_NAME); } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/spark/SparkTask.java ql/src/java/org/apache/hadoop/hive/ql/exec/spark/SparkTask.java index f836065..f53f7ce 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/spark/SparkTask.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/spark/SparkTask.java @@ -231,6 +231,11 @@ public String getName() { } @Override + public boolean hasReduce() { + return !work.getAllReduceWork().isEmpty(); + } + + @Override public Operator getReducer(MapWork mapWork) { List children = getWork().getChildren(mapWork); if (children.size() != 1) {