diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDTFGetSplits.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDTFGetSplits.java index e74a188..b2dd2d7 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDTFGetSplits.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDTFGetSplits.java @@ -257,14 +257,20 @@ public PlanFragment createPlanFragment(String query, int num, ApplicationId spli QueryPlan plan = driver.getPlan(); List> roots = plan.getRootTasks(); Schema schema = convertSchema(plan.getResultSchema()); - + boolean fetchTask = plan.getFetchTask() != null; + TezWork tezWork; if (roots == null || roots.size() != 1 || !(roots.get(0) instanceof TezTask)) { - throw new HiveException("Was expecting a single TezTask."); + // fetch task query + if (fetchTask) { + tezWork = null; + } else { + throw new HiveException("Was expecting a single TezTask or FetchTask."); + } + } else { + tezWork = ((TezTask) roots.get(0)).getWork(); } - TezWork tezWork = ((TezTask)roots.get(0)).getWork(); - - if (tezWork.getAllWork().size() != 1) { + if (tezWork == null || tezWork.getAllWork().size() != 1) { String tableName = "table_"+UUID.randomUUID().toString().replaceAll("[^A-Za-z0-9 ]", "");