From c6459cc8e0ca7327336f4de99efbbf8161b2c311 Mon Sep 17 00:00:00 2001 From: luguangming Date: Fri, 20 Sep 2019 14:36:14 +0800 Subject: [PATCH] HIVE-22198.patch : Execute unoin-all with childs Join in parallel --- ql/src/java/org/apache/hadoop/hive/ql/Driver.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java index e8b0b08..69060ea 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java @@ -2871,6 +2871,7 @@ private TaskRunner launchTask(Task tsk, String queryId, if (LOG.isInfoEnabled()){ LOG.info("Starting task [" + tsk + "] in parallel"); } + repairDepend(tsk); tskRun.start(); } else { if (LOG.isInfoEnabled()){ @@ -2881,6 +2882,25 @@ private TaskRunner launchTask(Task tsk, String queryId, return tskRun; } + /** + * repair the task of childs dependency to itself + * @param task + */ + private void repairDepend(Task task){ + List> childs = task.getChildTasks(); + if(childs == null || childs.isEmpty()){ + return; + } + for(Task ctask : childs){ + if(ctask.getParentTasks() == null){ + ctask.setParentTasks(new ArrayList>()); + } + if(!ctask.getParentTasks().contains(task)){ + ctask.getParentTasks().add(task); + LOG.info("repair dependency: parent="+task+", child="+ctask); + } + } + } private void setStageConf(HiveConf conf,String taskId) { String stageConfs = conf.get("hive.stage.reset.conf.list"); -- 2.9.2.windows.1