Index: common/src/java/org/apache/hadoop/hive/conf/HiveConf.java =================================================================== --- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (revision 919258) +++ common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (working copy) @@ -200,6 +200,7 @@ HIVEOPTPPD("hive.optimize.ppd", true), // predicate pushdown HIVEOPTGROUPBY("hive.optimize.groupby", true), // optimize group by HIVEOPTBUCKETMAPJOIN("hive.optimize.bucketmapjoin", false), // optimize bucket map join + HIVEOPTBUCKETMAPJOINTRUSTTRANSFORM("hive.optimize.bucketmapjoin.transform.trust", false), HIVEOPTSORTMERGEBUCKETMAPJOIN("hive.optimize.bucketmapjoin.sortedmerge", false), // try to use sorted merge bucket map join ; Index: ql/src/java/org/apache/hadoop/hive/ql/exec/DefaultBucketMatcher.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/exec/DefaultBucketMatcher.java (revision 920539) +++ ql/src/java/org/apache/hadoop/hive/ql/exec/DefaultBucketMatcher.java (working copy) @@ -38,6 +38,9 @@ } public List getAliasBucketFiles(String refTableInputFile, String refTableAlias, String alias) { + //remove all the sub-query prefixes. + refTableAlias = removeSubqueryPrefix(refTableAlias); + alias = removeSubqueryPrefix(alias); List pathStr=aliasBucketMapping.get(alias).get(refTableInputFile); List paths = new ArrayList(); if(pathStr!=null) { @@ -49,6 +52,14 @@ return paths; } + private String removeSubqueryPrefix(String alias) { + int index = alias.lastIndexOf(':'); + if (index < 0) { + return alias; + } + return alias.substring(index+1); + } + public void setAliasBucketFileNameMapping( LinkedHashMap>> aliasBucketFileNameMapping) { this.aliasBucketMapping = aliasBucketFileNameMapping; Index: ql/src/java/org/apache/hadoop/hive/ql/exec/ExecMapper.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/exec/ExecMapper.java (revision 920539) +++ ql/src/java/org/apache/hadoop/hive/ql/exec/ExecMapper.java (working copy) @@ -320,14 +320,14 @@ // ideally hadoop should let us know whether map execution failed or not try { mo.close(abort); - if (fetchOperators != null) { - MapredLocalWork localWork = mo.getConf().getMapLocalWork(); - for (Map.Entry entry : fetchOperators.entrySet()) { - Operator forwardOp = localWork - .getAliasToWork().get(entry.getKey()); - forwardOp.close(abort); - } - } +// if (fetchOperators != null) { +// MapredLocalWork localWork = mo.getConf().getMapLocalWork(); +// for (Map.Entry entry : fetchOperators.entrySet()) { +// Operator forwardOp = localWork +// .getAliasToWork().get(entry.getKey()); +// forwardOp.close(abort); +// } +// } if (l4j.isInfoEnabled()) { long used_memory = memoryMXBean.getHeapMemoryUsage().getUsed(); @@ -344,6 +344,9 @@ l4j.error("Hit error while closing operators - failing tree"); throw new RuntimeException("Error while closing operators", e); } + } finally { + oc = null; + mo.setOutputCollector(oc); } } Index: ql/src/java/org/apache/hadoop/hive/ql/optimizer/BucketMapJoinOptimizer.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/BucketMapJoinOptimizer.java (revision 919258) +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/BucketMapJoinOptimizer.java (working copy) @@ -18,7 +18,6 @@ package org.apache.hadoop.hive.ql.optimizer; import java.io.IOException; -import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -36,10 +35,17 @@ import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.ql.exec.CommonJoinOperator; import org.apache.hadoop.hive.ql.exec.FunctionRegistry; +import org.apache.hadoop.hive.ql.exec.GroupByOperator; +import org.apache.hadoop.hive.ql.exec.LateralViewJoinOperator; import org.apache.hadoop.hive.ql.exec.MapJoinOperator; import org.apache.hadoop.hive.ql.exec.Operator; +import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator; +import org.apache.hadoop.hive.ql.exec.ScriptOperator; import org.apache.hadoop.hive.ql.exec.TableScanOperator; +import org.apache.hadoop.hive.ql.exec.UnionOperator; import org.apache.hadoop.hive.ql.lib.DefaultGraphWalker; import org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher; import org.apache.hadoop.hive.ql.lib.Dispatcher; @@ -181,7 +187,8 @@ // right now this code does not work with "a join b on a.key = b.key and // a.ds = b.ds", where ds is a partition column. It only works with joins // with only one partition presents in each join source tables. - Map> topOps = this.pGraphContext.getTopOps(); + Map topOps = this.pGraphContext + .getJoinOpToAliasToOpMapping().get(mapJoinOp); Map topToTable = this.pGraphContext.getTopToTable(); // (partition to bucket file names) and (partition to bucket number) for @@ -191,10 +198,17 @@ for (int index = 0; index < joinAliases.size(); index++) { String alias = joinAliases.get(index); - TableScanOperator tso = (TableScanOperator) topOps.get(alias); - if (tso == null) + Operator topOp = topOps.get(alias); + TableScanOperator tso = backTraceTableScanOperator(topOp); + if (tso == null) { return null; + } + Table tbl = topToTable.get(tso); + if(tbl == null) { + return null; + } + if(tbl.isPartitioned()) { PrunedPartitionList prunedParts = null; try { @@ -361,6 +375,37 @@ desc.setBigTableAlias(baseBigAlias); return null; } + + private TableScanOperator backTraceTableScanOperator(Operator start) { + if(start == null) { + return null; + } + + if(start instanceof TableScanOperator) { + return (TableScanOperator) start; + } + + if ((start instanceof CommonJoinOperator) + || (start instanceof UnionOperator) + || (start instanceof ReduceSinkOperator) + || (start instanceof LateralViewJoinOperator) + || (start instanceof GroupByOperator)) { + return null; + } + + if (start instanceof ScriptOperator + && !HiveConf.getBoolVar(this.pGraphContext.getConf(), + HiveConf.ConfVars.HIVEOPTBUCKETMAPJOINTRUSTTRANSFORM)) { + return null; + } + + if (start.getParentOperators() == null + || start.getParentOperators().size() > 1) { + return null; + } else { + return backTraceTableScanOperator((Operator)start.getParentOperators().get(0)); + } + } private void fillMapping(String baseBigAlias, LinkedHashMap aliasToBucketNumberMapping, Index: ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java (revision 919258) +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java (working copy) @@ -129,6 +129,12 @@ opProcCtx.setCurrTopOp(currTopOp); opProcCtx.setCurrAliasId(currAliasId); } + + public static void initMapJoinPlan( + Operator op, GenMRProcContext ctx, + boolean readInputMapJoin, boolean readInputUnion, boolean setReducer, int pos) throws SemanticException { + initMapJoinPlan(op, ctx, readInputMapJoin, readInputUnion, setReducer, pos, false); + } /** * Initialize the current plan by adding it to root tasks. @@ -142,7 +148,7 @@ */ public static void initMapJoinPlan(Operator op, GenMRProcContext opProcCtx, boolean readInputMapJoin, - boolean readInputUnion, boolean setReducer, int pos) + boolean readInputUnion, boolean setReducer, int pos, boolean createLocalPlan) throws SemanticException { Map, GenMapRedCtx> mapCurrCtx = opProcCtx .getMapCurrCtx(); @@ -197,7 +203,7 @@ } setTaskPlan(taskTmpDir, taskTmpDir, rootOp, plan, local, tt_desc); - setupBucketMapJoinInfo(plan, currMapJoinOp); + setupBucketMapJoinInfo(plan, currMapJoinOp, createLocalPlan); } else { initUnionPlan(opProcCtx, currTask, false); } @@ -219,7 +225,7 @@ seenOps.add(currTopOp); boolean local = (pos == desc.getPosBigTable()) ? false : true; setTaskPlan(currAliasId, currTopOp, plan, local, opProcCtx); - setupBucketMapJoinInfo(plan, (AbstractMapJoinOperator)op); + setupBucketMapJoinInfo(plan, (AbstractMapJoinOperator)op, createLocalPlan); } opProcCtx.setCurrTask(currTask); @@ -228,7 +234,7 @@ } private static void setupBucketMapJoinInfo(MapredWork plan, - AbstractMapJoinOperator currMapJoinOp) { + AbstractMapJoinOperator currMapJoinOp, boolean createLocalPlan) { if (currMapJoinOp != null) { LinkedHashMap>> aliasBucketFileNameMapping = currMapJoinOp.getConf().getAliasBucketFileNameMapping(); @@ -238,7 +244,7 @@ if(currMapJoinOp instanceof SMBMapJoinOperator) { localPlan = ((SMBMapJoinOperator)currMapJoinOp).getConf().getLocalWork(); } - if (localPlan == null) { + if (localPlan == null && createLocalPlan) { localPlan = new MapredLocalWork( new LinkedHashMap>(), new LinkedHashMap()); @@ -253,6 +259,11 @@ } } } + + if(localPlan == null) { + return; + } + if(currMapJoinOp instanceof SMBMapJoinOperator) { plan.setMapLocalWork(null); ((SMBMapJoinOperator)currMapJoinOp).getConf().setLocalWork(localPlan); @@ -332,6 +343,14 @@ } } } + + + public static void joinPlan(Operator op, + Task oldTask, Task task, + GenMRProcContext opProcCtx, int pos, boolean split, + boolean readMapJoinData, boolean readUnionData) throws SemanticException { + joinPlan(op, oldTask, task, opProcCtx, pos, split, readMapJoinData, readUnionData, false); + } /** * Merge the current task with the task for the current reducer. @@ -350,7 +369,7 @@ public static void joinPlan(Operator op, Task oldTask, Task task, GenMRProcContext opProcCtx, int pos, boolean split, - boolean readMapJoinData, boolean readUnionData) throws SemanticException { + boolean readMapJoinData, boolean readUnionData, boolean createLocalWork) throws SemanticException { Task currTask = task; MapredWork plan = (MapredWork) currTask.getWork(); Operator currTopOp = opProcCtx.getCurrTopOp(); @@ -386,7 +405,7 @@ } setTaskPlan(currAliasId, currTopOp, plan, local, opProcCtx); if(op instanceof AbstractMapJoinOperator) { - setupBucketMapJoinInfo(plan, (AbstractMapJoinOperator)op); + setupBucketMapJoinInfo(plan, (AbstractMapJoinOperator)op, createLocalWork); } } currTopOp = null; @@ -420,7 +439,7 @@ boolean local = ((pos == -1) || (pos == (mjOp.getConf()) .getPosBigTable())) ? false : true; setTaskPlan(taskTmpDir, taskTmpDir, rootOp, plan, local, tt_desc); - setupBucketMapJoinInfo(plan, oldMapJoin); + setupBucketMapJoinInfo(plan, oldMapJoin, createLocalWork); } opProcCtx.setCurrMapJoinOp(null); @@ -430,9 +449,9 @@ } } - if (opProcCtx.getRootTasks().contains(currTask)) { - opProcCtx.getRootTasks().remove(currTask); - } +// if (opProcCtx.getRootTasks().contains(currTask)) { +// opProcCtx.getRootTasks().remove(currTask); +// } } opProcCtx.setCurrTask(currTask); @@ -647,6 +666,10 @@ Operator topOp, MapredWork plan, boolean local, TableDesc tt_desc) throws SemanticException { + if(path == null || alias == null) { + return; + } + if (!local) { if (plan.getPathToAliases().get(path) == null) { plan.getPathToAliases().put(path, new ArrayList()); @@ -857,7 +880,7 @@ opProcCtx.setMapJoinCtx(mjOp, mjCtx); opProcCtx.getMapCurrCtx().put(parent, new GenMapRedCtx(childTask, null, null)); - setupBucketMapJoinInfo(cplan, mjOp); + setupBucketMapJoinInfo(cplan, mjOp, false); } currTopOp = null; @@ -937,4 +960,5 @@ private GenMapRedUtils() { // prevent instantiation } + } Index: ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinFactory.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinFactory.java (revision 919258) +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinFactory.java (working copy) @@ -100,12 +100,12 @@ // If the plan for this reducer does not exist, initialize the plan if (opMapTask == null) { assert currPlan.getReducer() == null; - GenMapRedUtils.initMapJoinPlan(mapJoin, ctx, false, false, false, pos); + GenMapRedUtils.initMapJoinPlan(mapJoin, ctx, false, false, false, pos, true); } else { // The current plan can be thrown away after being merged with the // original plan GenMapRedUtils.joinPlan(mapJoin, null, opMapTask, ctx, pos, false, - false, false); + false, false, true); currTask = opMapTask; ctx.setCurrTask(currTask); } @@ -204,7 +204,6 @@ } ctx.setCurrMapJoinOp(mapJoin); - Task currTask = ctx.getCurrTask(); GenMRMapJoinCtx mjCtx = ctx.getMapJoinCtx(mapJoin); if (mjCtx == null) { @@ -270,7 +269,6 @@ ctx.getParseCtx(); AbstractMapJoinOperator oldMapJoin = ctx.getCurrMapJoinOp(); - assert oldMapJoin != null; GenMRMapJoinCtx mjCtx = ctx.getMapJoinCtx(mapJoin); if (mjCtx != null) { mjCtx.setOldMapJoin(oldMapJoin); Index: ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinProcessor.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinProcessor.java (revision 919258) +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinProcessor.java (working copy) @@ -23,6 +23,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; @@ -271,6 +272,11 @@ op.setChildOperators(null); op.setParentOperators(null); + HashMap map = pctx.getJoinOpToAliasToOpMapping().remove(op); + if(map != null) { + pctx.getJoinOpToAliasToOpMapping().put(mapJoinOp, map); + } + // create a dummy select to select all columns genSelectPlan(pctx, mapJoinOp); return mapJoinOp; @@ -438,8 +444,6 @@ getMapJoinFS()); opRules.put(new RuleRegExp(new String("R2"), "MAPJOIN%.*RS%"), getMapJoinDefault()); - opRules.put(new RuleRegExp(new String("R3"), "MAPJOIN%.*MAPJOIN%"), - getMapJoinDefault()); opRules.put(new RuleRegExp(new String("R4"), "MAPJOIN%.*UNION%"), getMapJoinDefault()); @@ -472,10 +476,79 @@ MapJoinWalkerCtx ctx = (MapJoinWalkerCtx) procCtx; MapJoinOperator mapJoin = (MapJoinOperator) nd; + MapJoinOperator parentMapJoin = (MapJoinOperator) ctx.getCurrMapJoinOp(); + if (parentMapJoin != null + && (ctx.getListRejectedMapJoins() != null && !ctx + .getListRejectedMapJoins().contains(parentMapJoin))) { + //for rule: MapJoin%.*MapJoin + // have a parent mapjoin. if the parent mapjoin comes from a local work, + // will put the parent mapjoin in the rejected list. + int pos = findGrandparentBranch(mapJoin, parentMapJoin); + if (pos >= 0) { + if (pos != mapJoin.getConf().getPosBigTable()) { + addRejectMapJoinToCtx(ctx, parentMapJoin); + } else { + addNoReducerMapJoinToCtx(ctx, parentMapJoin); + } + } + } ctx.setCurrMapJoinOp(mapJoin); return null; } } + + private static void addNoReducerMapJoinToCtx(MapJoinWalkerCtx ctx, + AbstractMapJoinOperator mapJoin) { + List> listMapJoinsNoRed = ctx.getListMapJoinsNoRed(); + if (listMapJoinsNoRed == null) { + listMapJoinsNoRed = new ArrayList>(); + } + if (!listMapJoinsNoRed.contains(mapJoin)) { + listMapJoinsNoRed.add(mapJoin); + } + ctx.setListMapJoins(listMapJoinsNoRed); + } + + private static void addRejectMapJoinToCtx(MapJoinWalkerCtx ctx, + AbstractMapJoinOperator mapjoin) { + List> listRejectedMapJoins = ctx.getListRejectedMapJoins(); + if (listRejectedMapJoins == null) { + listRejectedMapJoins = new ArrayList>(); + } + if (!listRejectedMapJoins.contains(mapjoin)) { + listRejectedMapJoins.add(mapjoin); + } + + if (ctx.getListMapJoinsNoRed() != null + && ctx.getListMapJoinsNoRed().contains(mapjoin)) { + ctx.getListMapJoinsNoRed().remove(mapjoin); + } + + ctx.setListMapJoins(listRejectedMapJoins); + } + + private static int findGrandparentBranch(Operator currOp, Operator grandParent) { + int pos = -1; + for (int i = 0; i < currOp.getParentOperators().size(); i++) { + List> parentOpList = new LinkedList>(); + parentOpList.add(currOp.getParentOperators().get(i)); + boolean found = false; + while (!parentOpList.isEmpty()) { + Operator p = parentOpList.remove(0); + if(p == grandParent) { + found = true; + break; + } else if (p.getParentOperators() != null){ + parentOpList.addAll(p.getParentOperators()); + } + } + if(found) { + pos = i; + break; + } + } + return pos; + } /** * MapJoinFS. @@ -500,13 +573,7 @@ && (listRejectedMapJoins.contains(mapJoin))) { return null; } - - List> listMapJoinsNoRed = ctx.getListMapJoinsNoRed(); - if (listMapJoinsNoRed == null) { - listMapJoinsNoRed = new ArrayList>(); - } - listMapJoinsNoRed.add(mapJoin); - ctx.setListMapJoins(listMapJoinsNoRed); + addNoReducerMapJoinToCtx(ctx, mapJoin); return null; } } @@ -525,13 +592,7 @@ Object... nodeOutputs) throws SemanticException { MapJoinWalkerCtx ctx = (MapJoinWalkerCtx) procCtx; AbstractMapJoinOperator mapJoin = ctx.getCurrMapJoinOp(); - List> listRejectedMapJoins = ctx - .getListRejectedMapJoins(); - if (listRejectedMapJoins == null) { - listRejectedMapJoins = new ArrayList>(); - } - listRejectedMapJoins.add(mapJoin); - ctx.setListRejectedMapJoins(listRejectedMapJoins); + addRejectMapJoinToCtx(ctx, mapJoin); return null; } } @@ -576,7 +637,7 @@ private List> listMapJoinsNoRed; private List> listRejectedMapJoins; private AbstractMapJoinOperator currMapJoinOp; - + /** * @param listMapJoinsNoRed */ @@ -631,5 +692,6 @@ List> listRejectedMapJoins) { this.listRejectedMapJoins = listRejectedMapJoins; } + } } Index: ql/src/java/org/apache/hadoop/hive/ql/parse/ParseContext.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/parse/ParseContext.java (revision 919258) +++ ql/src/java/org/apache/hadoop/hive/ql/parse/ParseContext.java (working copy) @@ -28,6 +28,8 @@ import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.ql.Context; import org.apache.hadoop.hive.ql.exec.AbstractMapJoinOperator; +import org.apache.hadoop.hive.ql.exec.CommonJoinOperator; +import org.apache.hadoop.hive.ql.exec.AbstractMapJoinOperator; import org.apache.hadoop.hive.ql.exec.GroupByOperator; import org.apache.hadoop.hive.ql.exec.JoinOperator; import org.apache.hadoop.hive.ql.exec.MapJoinOperator; @@ -83,6 +85,8 @@ // to the client without requiring // a map-reduce job private boolean hasNonPartCols; + + private Map, HashMap> joinOpToAliasToOpMapping; public ParseContext() { } @@ -118,6 +122,7 @@ * list of map join operators with no reducer * @param opToSamplePruner * operator to sample pruner map + * @param joinOpToAliasToOpMapping */ public ParseContext( HiveConf conf, @@ -134,7 +139,8 @@ UnionProcContext uCtx, List> listMapJoinOpsNoReducer, Map> groupOpToInputTables, Map prunedPartitions, - HashMap opToSamplePruner) { + HashMap opToSamplePruner, + Map, HashMap> joinOpToAliasToOpMapping) { this.conf = conf; this.qb = qb; this.ast = ast; @@ -156,6 +162,7 @@ this.groupOpToInputTables = groupOpToInputTables; this.prunedPartitions = prunedPartitions; this.opToSamplePruner = opToSamplePruner; + this.joinOpToAliasToOpMapping = joinOpToAliasToOpMapping; } /** @@ -450,4 +457,13 @@ public void setMapJoinContext(Map mapJoinContext) { this.mapJoinContext = mapJoinContext; } + + public Map, HashMap> getJoinOpToAliasToOpMapping() { + return joinOpToAliasToOpMapping; + } + + public void setJoinOpToAliasToOpMapping( + Map, HashMap> joinOpToAliasToOpMapping) { + this.joinOpToAliasToOpMapping = joinOpToAliasToOpMapping; + } } Index: ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (revision 920525) +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (working copy) @@ -47,6 +47,7 @@ import org.apache.hadoop.hive.metastore.api.Order; import org.apache.hadoop.hive.ql.exec.AbstractMapJoinOperator; import org.apache.hadoop.hive.ql.exec.ColumnInfo; +import org.apache.hadoop.hive.ql.exec.CommonJoinOperator; import org.apache.hadoop.hive.ql.exec.ConditionalTask; import org.apache.hadoop.hive.ql.exec.ExecDriver; import org.apache.hadoop.hive.ql.exec.FetchTask; @@ -54,7 +55,6 @@ import org.apache.hadoop.hive.ql.exec.FunctionRegistry; import org.apache.hadoop.hive.ql.exec.GroupByOperator; import org.apache.hadoop.hive.ql.exec.JoinOperator; -import org.apache.hadoop.hive.ql.exec.MapJoinOperator; import org.apache.hadoop.hive.ql.exec.MapRedTask; import org.apache.hadoop.hive.ql.exec.Operator; import org.apache.hadoop.hive.ql.exec.OperatorFactory; @@ -183,6 +183,7 @@ private CreateViewDesc createVwDesc; private ASTNode viewSelect; private final UnparseTranslator unparseTranslator; + private Map, HashMap> joinOpToAliasToOpMapping; private static class Phase1Ctx { String dest; @@ -208,6 +209,7 @@ groupOpToInputTables = new HashMap>(); prunedPartitions = new HashMap(); unparseTranslator = new UnparseTranslator(); + joinOpToAliasToOpMapping = new HashMap, HashMap>(); } @Override @@ -245,13 +247,14 @@ qb = pctx.getQB(); groupOpToInputTables = pctx.getGroupOpToInputTables(); prunedPartitions = pctx.getPrunedPartitions(); + joinOpToAliasToOpMapping = pctx.getJoinOpToAliasToOpMapping(); } public ParseContext getParseContext() { return new ParseContext(conf, qb, ast, opToPartPruner, topOps, topSelOps, opParseCtx, joinContext, topToTable, loadTableWork, loadFileWork, ctx, idToTableNameMap, destTableId, uCtx, listMapJoinOpsNoReducer, - groupOpToInputTables, prunedPartitions, opToSamplePruner); + groupOpToInputTables, prunedPartitions, opToSamplePruner, joinOpToAliasToOpMapping); } @SuppressWarnings("nls") @@ -3975,11 +3978,11 @@ } private Operator genJoinOperator(QB qb, QBJoinTree joinTree, - HashMap map) throws SemanticException { + HashMap map, HashMap aliasToTopScanMap) throws SemanticException { QBJoinTree leftChild = joinTree.getJoinSrc(); Operator joinSrcOp = null; if (leftChild != null) { - Operator joinOp = genJoinOperator(qb, leftChild, map); + Operator joinOp = genJoinOperator(qb, leftChild, map, aliasToTopScanMap); ArrayList filter = joinTree.getFilters().get(0); for (ASTNode cond : filter) { joinOp = genFilterPlan(qb, cond, joinOp); @@ -4031,6 +4034,7 @@ JoinOperator joinOp = (JoinOperator) genJoinOperatorChildren(joinTree, joinSrcOp, srcOps, omitOpts); joinContext.put(joinOp, joinTree); + joinOpToAliasToOpMapping.put(joinOp, aliasToTopScanMap); return joinOp; } @@ -4171,10 +4175,10 @@ } } - private Operator genJoinPlan(QB qb, HashMap map) + private Operator genJoinPlan(QB qb, HashMap map, HashMap aliasToTopScabOp) throws SemanticException { QBJoinTree joinTree = qb.getQbJoinTree(); - Operator joinOp = genJoinOperator(qb, joinTree, map); + Operator joinOp = genJoinOperator(qb, joinTree, map, aliasToTopScabOp); return joinOp; } @@ -5379,11 +5383,13 @@ qb.setQbJoinTree(joinTree); mergeJoinTree(qb); } - + + HashMap aliasTopOpMappingCopy = new HashMap(); + aliasTopOpMappingCopy.putAll(aliasToOpInfo); // if any filters are present in the join tree, push them on top of the // table pushJoinFilters(qb, qb.getQbJoinTree(), aliasToOpInfo); - srcOpInfo = genJoinPlan(qb, aliasToOpInfo); + srcOpInfo = genJoinPlan(qb, aliasToOpInfo, aliasTopOpMappingCopy); } else { // Now if there are more than 1 sources then we have a join case // later we can extend this to the union all case as well @@ -5935,7 +5941,7 @@ topOps, topSelOps, opParseCtx, joinContext, topToTable, loadTableWork, loadFileWork, ctx, idToTableNameMap, destTableId, uCtx, listMapJoinOpsNoReducer, groupOpToInputTables, prunedPartitions, - opToSamplePruner); + opToSamplePruner, joinOpToAliasToOpMapping); Optimizer optm = new Optimizer(); optm.setPctx(pCtx); Index: ql/src/test/queries/clientpositive/bucketmapjoin_subquery.q =================================================================== --- ql/src/test/queries/clientpositive/bucketmapjoin_subquery.q (revision 0) +++ ql/src/test/queries/clientpositive/bucketmapjoin_subquery.q (revision 0) @@ -0,0 +1,105 @@ +drop table srcbucket_mapjoin; +drop table srcbucket_mapjoin_part; +drop table srcbucket_mapjoin_part_2; + +CREATE TABLE srcbucket_mapjoin(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin; +load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin; + +CREATE TABLE srcbucket_mapjoin_part (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-09'); +load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-09'); +load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-09'); +load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-09'); + +CREATE TABLE srcbucket_mapjoin_part_2 (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); +load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); +load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-09'); +load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-09'); + +set hive.optimize.bucketmapjoin = true; + +explain extended +select count(1) from ( +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key) subq; + +select count(1) from ( +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key) subq; + +explain extended +select * from ( +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key) subq where v1 != '100'; + +select * from ( +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key) subq where v1 != '100'; + +explain extended +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from +(select * from srcbucket_mapjoin where value != '100') a +join srcbucket_mapjoin_part b +on a.key=b.key; + +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from +(select * from srcbucket_mapjoin where value != '100') a +join srcbucket_mapjoin_part b +on a.key=b.key; + +explain extended +select count(1) from ( +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from +(select * from srcbucket_mapjoin where key<100) a +join srcbucket_mapjoin_part b +on a.key=b.key) subq; + +select count(1) from +( +select /*+mapjoin(b)*/ a.key as key, a.value as v1, b.value as v2 +from +(select * from srcbucket_mapjoin where key<100) a +join srcbucket_mapjoin_part b +on a.key=b.key) subq; + + +explain extended +select count(1) from ( +select /*+mapjoin(a, c)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key join srcbucket_mapjoin_part c on b.key = c.key ) subq; + +select count(1) from ( +select /*+mapjoin(a, c)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key join srcbucket_mapjoin_part c on b.key = c.key ) subq; + + +explain extended +select count(1) from ( +select /*+mapjoin(a, c)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key join srcbucket_mapjoin_part c on b.key = c.key where a.key<100 and b.key<100) subq; + +select count(1) from ( +select /*+mapjoin(a, c)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key join srcbucket_mapjoin_part c on b.key = c.key where a.key<100 and b.key<100) subq; + + +drop table srcbucket_mapjoin; +drop table srcbucket_mapjoin_part; +drop table srcbucket_mapjoin_part_2; \ No newline at end of file Index: ql/src/test/queries/clientpositive/smb_subquery.q =================================================================== --- ql/src/test/queries/clientpositive/smb_subquery.q (revision 0) +++ ql/src/test/queries/clientpositive/smb_subquery.q (revision 0) @@ -0,0 +1,159 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; + +drop table bucketmapjoin6_1; +CREATE TABLE bucketmapjoin6_1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +drop table bucketmapjoin6_2; +CREATE TABLE bucketmapjoin6_2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +drop table bucketmapjoin6_3; +CREATE TABLE bucketmapjoin6_3(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +insert overwrite table bucketmapjoin6_1 +select * from src where key < 100 and key != 44 and key != 28 and key != 15; + +select * from bucketmapjoin6_1; + +insert overwrite table bucketmapjoin6_2 +select * from src where key > 20 and key < 50; + +select * from bucketmapjoin6_2; + +insert overwrite table bucketmapjoin6_3 +select * from src where key > 10 and key < 30; + +select * from bucketmapjoin6_3; + +explain +select * from +( +select +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 or key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key; + +select * from +( +select +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 or key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key; + + + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; + +explain +select /*+ MAPJOIN(L) */ * from +( +select /*+ MAPJOIN(S) */ +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 and key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key; + +select /*+ MAPJOIN(L) */ * from +( +select /*+ MAPJOIN(S) */ +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 or key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key; + + +explain +select /*+ MAPJOIN(L) */ * from bucketmapjoin6_3 L +full outer join +( +select /*+ MAPJOIN(S) */ +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 and key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +on subq2.key = L.key; + +select /*+ MAPJOIN(L) */ * from bucketmapjoin6_3 L +full outer join +( +select /*+ MAPJOIN(S) */ +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 and key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +on subq2.key = L.key; + + +set hive.optimize.bucketmapjoin = false; +select * from +( +select +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 or key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key; + +select * from +( +select +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 or key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key; + +drop table bucketmapjoin6_3; +drop table bucketmapjoin6_2; +drop table bucketmapjoin6_1; \ No newline at end of file Index: ql/src/test/results/clientpositive/bucketmapjoin_subquery.q.out =================================================================== --- ql/src/test/results/clientpositive/bucketmapjoin_subquery.q.out (revision 0) +++ ql/src/test/results/clientpositive/bucketmapjoin_subquery.q.out (revision 0) @@ -0,0 +1,3698 @@ +PREHOOK: query: drop table srcbucket_mapjoin +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table srcbucket_mapjoin +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table srcbucket_mapjoin_part +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table srcbucket_mapjoin_part +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table srcbucket_mapjoin_part_2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table srcbucket_mapjoin_part_2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE srcbucket_mapjoin(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE srcbucket_mapjoin(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@srcbucket_mapjoin +PREHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin +PREHOOK: type: LOAD +POSTHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin +POSTHOOK: type: LOAD +POSTHOOK: Output: default@srcbucket_mapjoin +PREHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin +PREHOOK: type: LOAD +POSTHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin +POSTHOOK: type: LOAD +POSTHOOK: Output: default@srcbucket_mapjoin +PREHOOK: query: CREATE TABLE srcbucket_mapjoin_part (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE srcbucket_mapjoin_part (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@srcbucket_mapjoin_part +PREHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08') +PREHOOK: type: LOAD +POSTHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08') +POSTHOOK: type: LOAD +POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08 +PREHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08') +PREHOOK: type: LOAD +POSTHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08') +POSTHOOK: type: LOAD +POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08 +PREHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08') +PREHOOK: type: LOAD +POSTHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08') +POSTHOOK: type: LOAD +POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08 +PREHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08') +PREHOOK: type: LOAD +POSTHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08') +POSTHOOK: type: LOAD +POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08 +PREHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-09') +PREHOOK: type: LOAD +POSTHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-09') +POSTHOOK: type: LOAD +POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-09 +PREHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-09') +PREHOOK: type: LOAD +POSTHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-09') +POSTHOOK: type: LOAD +POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-09 +PREHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-09') +PREHOOK: type: LOAD +POSTHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-09') +POSTHOOK: type: LOAD +POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-09 +PREHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-09') +PREHOOK: type: LOAD +POSTHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-09') +POSTHOOK: type: LOAD +POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-09 +PREHOOK: query: CREATE TABLE srcbucket_mapjoin_part_2 (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE srcbucket_mapjoin_part_2 (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@srcbucket_mapjoin_part_2 +PREHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08') +PREHOOK: type: LOAD +POSTHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08') +POSTHOOK: type: LOAD +POSTHOOK: Output: default@srcbucket_mapjoin_part_2@ds=2008-04-08 +PREHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08') +PREHOOK: type: LOAD +POSTHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08') +POSTHOOK: type: LOAD +POSTHOOK: Output: default@srcbucket_mapjoin_part_2@ds=2008-04-08 +PREHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-09') +PREHOOK: type: LOAD +POSTHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-09') +POSTHOOK: type: LOAD +POSTHOOK: Output: default@srcbucket_mapjoin_part_2@ds=2008-04-09 +PREHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-09') +PREHOOK: type: LOAD +POSTHOOK: query: load data local inpath '/Users/heyongqiang/Documents/workspace/Hive-Test/data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-09') +POSTHOOK: type: LOAD +POSTHOOK: Output: default@srcbucket_mapjoin_part_2@ds=2008-04-09 +PREHOOK: query: explain extended +select count(1) from ( +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key) subq +PREHOOK: type: QUERY +POSTHOOK: query: explain extended +select count(1) from ( +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key) subq +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_JOIN (TOK_TABREF srcbucket_mapjoin a) (TOK_TABREF srcbucket_mapjoin_part b) (= (. (TOK_TABLE_OR_COL a) key) (. (TOK_TABLE_OR_COL b) key)))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_HINTLIST (TOK_HINT TOK_MAPJOIN (TOK_HINTARGLIST a))) (TOK_SELEXPR (. (TOK_TABLE_OR_COL a) key) key) (TOK_SELEXPR (. (TOK_TABLE_OR_COL a) value) v1) (TOK_SELEXPR (. (TOK_TABLE_OR_COL b) value) v2)))) subq)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION count 1))))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + subq:b + TableScan + alias: b + Common Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 + 1 + handleSkewJoin: false + keys: + 0 [Column[key]] + 1 [Column[key]] + Position of Big Table: 1 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-08_574_396269637830851017/10002 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns + columns.types + escape.delim \ + TotalFiles: 1 + MultiFileSpray: false + Local Work: + Map Reduce Local Work + Alias -> Map Local Tables: + subq:a + Fetch Operator + limit: -1 + Alias -> Map Local Operator Tree: + subq:a + TableScan + alias: a + Common Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 + 1 + handleSkewJoin: false + keys: + 0 [Column[key]] + 1 [Column[key]] + Position of Big Table: 1 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-08_574_396269637830851017/10002 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns + columns.types + escape.delim \ + TotalFiles: 1 + MultiFileSpray: false + Bucket Mapjoin Context: + Alias Bucket Base File Name Mapping: + a {srcbucket20.txt=[srcbucket20.txt], srcbucket21.txt=[srcbucket21.txt], srcbucket22.txt=[srcbucket20.txt], srcbucket23.txt=[srcbucket21.txt], ds=2008-04-09/srcbucket20.txt=[srcbucket20.txt], ds=2008-04-09/srcbucket21.txt=[srcbucket21.txt], ds=2008-04-09/srcbucket22.txt=[srcbucket20.txt], ds=2008-04-09/srcbucket23.txt=[srcbucket21.txt]} + Alias Bucket File Name Mapping: + a {file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08/srcbucket20.txt=[file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin/srcbucket20.txt], file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08/srcbucket21.txt=[file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin/srcbucket21.txt], file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08/srcbucket22.txt=[file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin/srcbucket20.txt], file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08/srcbucket23.txt=[file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin/srcbucket21.txt], file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09/srcbucket20.txt=[file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin/srcbucket20.txt], file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09/srcbucket21.txt=[file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin/srcbucket21.txt], file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09/srcbucket22.txt=[file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin/srcbucket20.txt], file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09/srcbucket23.txt=[file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin/srcbucket21.txt]} + Needs Tagging: false + Path -> Alias: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08 [subq:b] + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09 [subq:b] + Path -> Partition: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08 + Partition + base file name: ds=2008-04-08 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + partition values: + ds 2008-04-08 + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: srcbucket_mapjoin_part + name: srcbucket_mapjoin_part + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09 + Partition + base file name: ds=2008-04-09 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + partition values: + ds 2008-04-09 + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: srcbucket_mapjoin_part + name: srcbucket_mapjoin_part + + Stage: Stage-2 + Map Reduce + Alias -> Map Operator Tree: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-08_574_396269637830851017/10002 + Select Operator + Select Operator + Select Operator + Group By Operator + aggregations: + expr: count(1) + bucketGroup: false + mode: hash + outputColumnNames: _col0 + Reduce Output Operator + sort order: + tag: -1 + value expressions: + expr: _col0 + type: bigint + Needs Tagging: false + Path -> Alias: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-08_574_396269637830851017/10002 [file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-08_574_396269637830851017/10002] + Path -> Partition: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-08_574_396269637830851017/10002 + Partition + base file name: 10002 + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns + columns.types + escape.delim \ + + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns + columns.types + escape.delim \ + Reduce Operator Tree: + Group By Operator + aggregations: + expr: count(VALUE._col0) + bucketGroup: false + mode: mergepartial + outputColumnNames: _col0 + Select Operator + expressions: + expr: _col0 + type: bigint + outputColumnNames: _col0 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-08_574_396269637830851017/10001 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0 + columns.types bigint + serialization.format 1 + TotalFiles: 1 + MultiFileSpray: false + + Stage: Stage-0 + Fetch Operator + limit: -1 + + +PREHOOK: query: select count(1) from ( +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key) subq +PREHOOK: type: QUERY +PREHOOK: Input: default@srcbucket_mapjoin +PREHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-08 +PREHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-09 +PREHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-09_335_294298971967548101/10000 +POSTHOOK: query: select count(1) from ( +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key) subq +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcbucket_mapjoin +POSTHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-08 +POSTHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-09 +POSTHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-09_335_294298971967548101/10000 +928 +PREHOOK: query: explain extended +select * from ( +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key) subq where v1 != '100' +PREHOOK: type: QUERY +POSTHOOK: query: explain extended +select * from ( +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key) subq where v1 != '100' +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_JOIN (TOK_TABREF srcbucket_mapjoin a) (TOK_TABREF srcbucket_mapjoin_part b) (= (. (TOK_TABLE_OR_COL a) key) (. (TOK_TABLE_OR_COL b) key)))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_HINTLIST (TOK_HINT TOK_MAPJOIN (TOK_HINTARGLIST a))) (TOK_SELEXPR (. (TOK_TABLE_OR_COL a) key) key) (TOK_SELEXPR (. (TOK_TABLE_OR_COL a) value) v1) (TOK_SELEXPR (. (TOK_TABLE_OR_COL b) value) v2)))) subq)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (!= (TOK_TABLE_OR_COL v1) '100')))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + subq:b + TableScan + alias: b + Common Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {key} {value} + 1 {value} + handleSkewJoin: false + keys: + 0 [Column[key]] + 1 [Column[key]] + outputColumnNames: _col0, _col1, _col3 + Position of Big Table: 1 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col3 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col2 + Filter Operator + isSamplingPred: false + predicate: + expr: (_col1 <> '100') + type: boolean + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + outputColumnNames: _col0, _col1, _col2 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-23_758_4937625749854681908/10001 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0,_col1,_col2 + columns.types int:string:string + serialization.format 1 + TotalFiles: 1 + MultiFileSpray: false + Local Work: + Map Reduce Local Work + Alias -> Map Local Tables: + subq:a + Fetch Operator + limit: -1 + Alias -> Map Local Operator Tree: + subq:a + TableScan + alias: a + Common Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {key} {value} + 1 {value} + handleSkewJoin: false + keys: + 0 [Column[key]] + 1 [Column[key]] + outputColumnNames: _col0, _col1, _col3 + Position of Big Table: 1 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col3 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col2 + Filter Operator + isSamplingPred: false + predicate: + expr: (_col1 <> '100') + type: boolean + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + outputColumnNames: _col0, _col1, _col2 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-23_758_4937625749854681908/10001 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0,_col1,_col2 + columns.types int:string:string + serialization.format 1 + TotalFiles: 1 + MultiFileSpray: false + Bucket Mapjoin Context: + Alias Bucket Base File Name Mapping: + a {srcbucket20.txt=[srcbucket20.txt], srcbucket21.txt=[srcbucket21.txt], srcbucket22.txt=[srcbucket20.txt], srcbucket23.txt=[srcbucket21.txt], ds=2008-04-09/srcbucket20.txt=[srcbucket20.txt], ds=2008-04-09/srcbucket21.txt=[srcbucket21.txt], ds=2008-04-09/srcbucket22.txt=[srcbucket20.txt], ds=2008-04-09/srcbucket23.txt=[srcbucket21.txt]} + Alias Bucket File Name Mapping: + a {file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08/srcbucket20.txt=[file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin/srcbucket20.txt], file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08/srcbucket21.txt=[file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin/srcbucket21.txt], file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08/srcbucket22.txt=[file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin/srcbucket20.txt], file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08/srcbucket23.txt=[file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin/srcbucket21.txt], file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09/srcbucket20.txt=[file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin/srcbucket20.txt], file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09/srcbucket21.txt=[file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin/srcbucket21.txt], file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09/srcbucket22.txt=[file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin/srcbucket20.txt], file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09/srcbucket23.txt=[file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin/srcbucket21.txt]} + Needs Tagging: false + Path -> Alias: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08 [subq:b] + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09 [subq:b] + Path -> Partition: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08 + Partition + base file name: ds=2008-04-08 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + partition values: + ds 2008-04-08 + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: srcbucket_mapjoin_part + name: srcbucket_mapjoin_part + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09 + Partition + base file name: ds=2008-04-09 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + partition values: + ds 2008-04-09 + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: srcbucket_mapjoin_part + name: srcbucket_mapjoin_part + + Stage: Stage-0 + Fetch Operator + limit: -1 + + +PREHOOK: query: select * from ( +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key) subq where v1 != '100' +PREHOOK: type: QUERY +PREHOOK: Input: default@srcbucket_mapjoin +PREHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-08 +PREHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-09 +PREHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-24_305_7210163893545298387/10000 +POSTHOOK: query: select * from ( +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key) subq where v1 != '100' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcbucket_mapjoin +POSTHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-08 +POSTHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-09 +POSTHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-24_305_7210163893545298387/10000 +165 val_165 val_165 +165 val_165 val_165 +484 val_484 val_484 +150 val_150 val_150 +224 val_224 val_224 +224 val_224 val_224 +66 val_66 val_66 +213 val_213 val_213 +213 val_213 val_213 +374 val_374 val_374 +495 val_495 val_495 +37 val_37 val_37 +37 val_37 val_37 +327 val_327 val_327 +327 val_327 val_327 +327 val_327 val_327 +15 val_15 val_15 +15 val_15 val_15 +338 val_338 val_338 +459 val_459 val_459 +459 val_459 val_459 +466 val_466 val_466 +466 val_466 val_466 +466 val_466 val_466 +396 val_396 val_396 +396 val_396 val_396 +396 val_396 val_396 +309 val_309 val_309 +309 val_309 val_309 +367 val_367 val_367 +367 val_367 val_367 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +455 val_455 val_455 +316 val_316 val_316 +316 val_316 val_316 +316 val_316 val_316 +345 val_345 val_345 +129 val_129 val_129 +129 val_129 val_129 +378 val_378 val_378 +4 val_4 val_4 +356 val_356 val_356 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +125 val_125 val_125 +125 val_125 val_125 +437 val_437 val_437 +286 val_286 val_286 +187 val_187 val_187 +187 val_187 val_187 +187 val_187 val_187 +176 val_176 val_176 +176 val_176 val_176 +459 val_459 val_459 +459 val_459 val_459 +51 val_51 val_51 +51 val_51 val_51 +103 val_103 val_103 +103 val_103 val_103 +239 val_239 val_239 +239 val_239 val_239 +213 val_213 val_213 +213 val_213 val_213 +176 val_176 val_176 +176 val_176 val_176 +275 val_275 val_275 +260 val_260 val_260 +404 val_404 val_404 +404 val_404 val_404 +217 val_217 val_217 +217 val_217 val_217 +84 val_84 val_84 +84 val_84 val_84 +466 val_466 val_466 +466 val_466 val_466 +466 val_466 val_466 +8 val_8 val_8 +411 val_411 val_411 +172 val_172 val_172 +172 val_172 val_172 +129 val_129 val_129 +129 val_129 val_129 +158 val_158 val_158 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +26 val_26 val_26 +26 val_26 val_26 +165 val_165 val_165 +165 val_165 val_165 +327 val_327 val_327 +327 val_327 val_327 +327 val_327 val_327 +51 val_51 val_51 +51 val_51 val_51 +404 val_404 val_404 +404 val_404 val_404 +95 val_95 val_95 +95 val_95 val_95 +282 val_282 val_282 +282 val_282 val_282 +187 val_187 val_187 +187 val_187 val_187 +187 val_187 val_187 +316 val_316 val_316 +316 val_316 val_316 +316 val_316 val_316 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +77 val_77 val_77 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +118 val_118 val_118 +118 val_118 val_118 +282 val_282 val_282 +282 val_282 val_282 +419 val_419 val_419 +15 val_15 val_15 +15 val_15 val_15 +118 val_118 val_118 +118 val_118 val_118 +19 val_19 val_19 +224 val_224 val_224 +224 val_224 val_224 +309 val_309 val_309 +309 val_309 val_309 +389 val_389 val_389 +327 val_327 val_327 +327 val_327 val_327 +327 val_327 val_327 +242 val_242 val_242 +242 val_242 val_242 +392 val_392 val_392 +242 val_242 val_242 +242 val_242 val_242 +396 val_396 val_396 +396 val_396 val_396 +396 val_396 val_396 +95 val_95 val_95 +95 val_95 val_95 +11 val_11 val_11 +143 val_143 val_143 +228 val_228 val_228 +33 val_33 val_33 +103 val_103 val_103 +103 val_103 val_103 +367 val_367 val_367 +367 val_367 val_367 +239 val_239 val_239 +239 val_239 val_239 +480 val_480 val_480 +480 val_480 val_480 +480 val_480 val_480 +202 val_202 val_202 +316 val_316 val_316 +316 val_316 val_316 +316 val_316 val_316 +235 val_235 val_235 +80 val_80 val_80 +44 val_44 val_44 +466 val_466 val_466 +466 val_466 val_466 +466 val_466 val_466 +257 val_257 val_257 +190 val_190 val_190 +114 val_114 val_114 +396 val_396 val_396 +396 val_396 val_396 +396 val_396 val_396 +217 val_217 val_217 +217 val_217 val_217 +125 val_125 val_125 +125 val_125 val_125 +187 val_187 val_187 +187 val_187 val_187 +187 val_187 val_187 +480 val_480 val_480 +480 val_480 val_480 +480 val_480 val_480 +491 val_491 val_491 +305 val_305 val_305 +444 val_444 val_444 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +323 val_323 val_323 +480 val_480 val_480 +480 val_480 val_480 +480 val_480 val_480 +136 val_136 val_136 +172 val_172 val_172 +172 val_172 val_172 +462 val_462 val_462 +462 val_462 val_462 +26 val_26 val_26 +26 val_26 val_26 +462 val_462 val_462 +462 val_462 val_462 +341 val_341 val_341 +183 val_183 val_183 +84 val_84 val_84 +84 val_84 val_84 +37 val_37 val_37 +37 val_37 val_37 +448 val_448 val_448 +194 val_194 val_194 +477 val_477 val_477 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +400 val_400 val_400 +27 val_27 val_27 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +265 val_265 val_265 +265 val_265 val_265 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +166 val_166 val_166 +430 val_430 val_430 +430 val_430 val_430 +430 val_430 val_430 +287 val_287 val_287 +207 val_207 val_207 +207 val_207 val_207 +199 val_199 val_199 +199 val_199 val_199 +199 val_199 val_199 +247 val_247 val_247 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +162 val_162 val_162 +397 val_397 val_397 +397 val_397 val_397 +342 val_342 val_342 +342 val_342 val_342 +195 val_195 val_195 +195 val_195 val_195 +155 val_155 val_155 +203 val_203 val_203 +203 val_203 val_203 +339 val_339 val_339 +302 val_302 val_302 +438 val_438 val_438 +438 val_438 val_438 +438 val_438 val_438 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +221 val_221 val_221 +221 val_221 val_221 +92 val_92 val_92 +111 val_111 val_111 +427 val_427 val_427 +382 val_382 val_382 +382 val_382 val_382 +386 val_386 val_386 +430 val_430 val_430 +430 val_430 val_430 +430 val_430 val_430 +221 val_221 val_221 +221 val_221 val_221 +137 val_137 val_137 +137 val_137 val_137 +180 val_180 val_180 +12 val_12 val_12 +12 val_12 val_12 +67 val_67 val_67 +67 val_67 val_67 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +353 val_353 val_353 +353 val_353 val_353 +272 val_272 val_272 +272 val_272 val_272 +463 val_463 val_463 +463 val_463 val_463 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +496 val_496 val_496 +393 val_393 val_393 +100 val_100 val_100 +100 val_100 val_100 +298 val_298 val_298 +298 val_298 val_298 +298 val_298 val_298 +199 val_199 val_199 +199 val_199 val_199 +199 val_199 val_199 +191 val_191 val_191 +191 val_191 val_191 +96 val_96 val_96 +481 val_481 val_481 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +470 val_470 val_470 +137 val_137 val_137 +137 val_137 val_137 +85 val_85 val_85 +364 val_364 val_364 +306 val_306 val_306 +272 val_272 val_272 +272 val_272 val_272 +331 val_331 val_331 +331 val_331 val_331 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +452 val_452 val_452 +177 val_177 val_177 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +317 val_317 val_317 +317 val_317 val_317 +34 val_34 val_34 +229 val_229 val_229 +229 val_229 val_229 +195 val_195 val_195 +195 val_195 val_195 +430 val_430 val_430 +430 val_430 val_430 +430 val_430 val_430 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +78 val_78 val_78 +41 val_41 val_41 +492 val_492 val_492 +492 val_492 val_492 +449 val_449 val_449 +218 val_218 val_218 +30 val_30 val_30 +74 val_74 val_74 +342 val_342 val_342 +342 val_342 val_342 +368 val_368 val_368 +485 val_485 val_485 +70 val_70 val_70 +70 val_70 val_70 +70 val_70 val_70 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +191 val_191 val_191 +191 val_191 val_191 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +438 val_438 val_438 +438 val_438 val_438 +438 val_438 val_438 +467 val_467 val_467 +229 val_229 val_229 +229 val_229 val_229 +463 val_463 val_463 +463 val_463 val_463 +283 val_283 val_283 +331 val_331 val_331 +331 val_331 val_331 +335 val_335 val_335 +104 val_104 val_104 +104 val_104 val_104 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +258 val_258 val_258 +203 val_203 val_203 +203 val_203 val_203 +12 val_12 val_12 +12 val_12 val_12 +478 val_478 val_478 +478 val_478 val_478 +298 val_298 val_298 +298 val_298 val_298 +298 val_298 val_298 +382 val_382 val_382 +382 val_382 val_382 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +70 val_70 val_70 +70 val_70 val_70 +70 val_70 val_70 +397 val_397 val_397 +397 val_397 val_397 +104 val_104 val_104 +104 val_104 val_104 +70 val_70 val_70 +70 val_70 val_70 +70 val_70 val_70 +438 val_438 val_438 +438 val_438 val_438 +438 val_438 val_438 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +360 val_360 val_360 +199 val_199 val_199 +199 val_199 val_199 +199 val_199 val_199 +478 val_478 val_478 +478 val_478 val_478 +317 val_317 val_317 +317 val_317 val_317 +207 val_207 val_207 +207 val_207 val_207 +265 val_265 val_265 +265 val_265 val_265 +353 val_353 val_353 +353 val_353 val_353 +214 val_214 val_214 +133 val_133 val_133 +375 val_375 val_375 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +67 val_67 val_67 +67 val_67 val_67 +379 val_379 val_379 +492 val_492 val_492 +492 val_492 val_492 +100 val_100 val_100 +100 val_100 val_100 +298 val_298 val_298 +298 val_298 val_298 +298 val_298 val_298 +9 val_9 val_9 +126 val_126 val_126 +165 val_165 val_165 +165 val_165 val_165 +484 val_484 val_484 +150 val_150 val_150 +224 val_224 val_224 +224 val_224 val_224 +66 val_66 val_66 +213 val_213 val_213 +213 val_213 val_213 +374 val_374 val_374 +495 val_495 val_495 +37 val_37 val_37 +37 val_37 val_37 +327 val_327 val_327 +327 val_327 val_327 +327 val_327 val_327 +15 val_15 val_15 +15 val_15 val_15 +338 val_338 val_338 +459 val_459 val_459 +459 val_459 val_459 +466 val_466 val_466 +466 val_466 val_466 +466 val_466 val_466 +396 val_396 val_396 +396 val_396 val_396 +396 val_396 val_396 +309 val_309 val_309 +309 val_309 val_309 +367 val_367 val_367 +367 val_367 val_367 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +455 val_455 val_455 +316 val_316 val_316 +316 val_316 val_316 +316 val_316 val_316 +345 val_345 val_345 +129 val_129 val_129 +129 val_129 val_129 +378 val_378 val_378 +4 val_4 val_4 +356 val_356 val_356 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +125 val_125 val_125 +125 val_125 val_125 +437 val_437 val_437 +286 val_286 val_286 +187 val_187 val_187 +187 val_187 val_187 +187 val_187 val_187 +176 val_176 val_176 +176 val_176 val_176 +459 val_459 val_459 +459 val_459 val_459 +51 val_51 val_51 +51 val_51 val_51 +103 val_103 val_103 +103 val_103 val_103 +239 val_239 val_239 +239 val_239 val_239 +213 val_213 val_213 +213 val_213 val_213 +176 val_176 val_176 +176 val_176 val_176 +275 val_275 val_275 +260 val_260 val_260 +404 val_404 val_404 +404 val_404 val_404 +217 val_217 val_217 +217 val_217 val_217 +84 val_84 val_84 +84 val_84 val_84 +466 val_466 val_466 +466 val_466 val_466 +466 val_466 val_466 +8 val_8 val_8 +411 val_411 val_411 +172 val_172 val_172 +172 val_172 val_172 +129 val_129 val_129 +129 val_129 val_129 +158 val_158 val_158 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +26 val_26 val_26 +26 val_26 val_26 +165 val_165 val_165 +165 val_165 val_165 +327 val_327 val_327 +327 val_327 val_327 +327 val_327 val_327 +51 val_51 val_51 +51 val_51 val_51 +404 val_404 val_404 +404 val_404 val_404 +95 val_95 val_95 +95 val_95 val_95 +282 val_282 val_282 +282 val_282 val_282 +187 val_187 val_187 +187 val_187 val_187 +187 val_187 val_187 +316 val_316 val_316 +316 val_316 val_316 +316 val_316 val_316 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +77 val_77 val_77 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +118 val_118 val_118 +118 val_118 val_118 +282 val_282 val_282 +282 val_282 val_282 +419 val_419 val_419 +15 val_15 val_15 +15 val_15 val_15 +118 val_118 val_118 +118 val_118 val_118 +19 val_19 val_19 +224 val_224 val_224 +224 val_224 val_224 +309 val_309 val_309 +309 val_309 val_309 +389 val_389 val_389 +327 val_327 val_327 +327 val_327 val_327 +327 val_327 val_327 +242 val_242 val_242 +242 val_242 val_242 +392 val_392 val_392 +242 val_242 val_242 +242 val_242 val_242 +396 val_396 val_396 +396 val_396 val_396 +396 val_396 val_396 +95 val_95 val_95 +95 val_95 val_95 +11 val_11 val_11 +143 val_143 val_143 +228 val_228 val_228 +33 val_33 val_33 +103 val_103 val_103 +103 val_103 val_103 +367 val_367 val_367 +367 val_367 val_367 +239 val_239 val_239 +239 val_239 val_239 +480 val_480 val_480 +480 val_480 val_480 +480 val_480 val_480 +202 val_202 val_202 +316 val_316 val_316 +316 val_316 val_316 +316 val_316 val_316 +235 val_235 val_235 +80 val_80 val_80 +44 val_44 val_44 +466 val_466 val_466 +466 val_466 val_466 +466 val_466 val_466 +257 val_257 val_257 +190 val_190 val_190 +114 val_114 val_114 +396 val_396 val_396 +396 val_396 val_396 +396 val_396 val_396 +217 val_217 val_217 +217 val_217 val_217 +125 val_125 val_125 +125 val_125 val_125 +187 val_187 val_187 +187 val_187 val_187 +187 val_187 val_187 +480 val_480 val_480 +480 val_480 val_480 +480 val_480 val_480 +491 val_491 val_491 +305 val_305 val_305 +444 val_444 val_444 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +323 val_323 val_323 +480 val_480 val_480 +480 val_480 val_480 +480 val_480 val_480 +136 val_136 val_136 +172 val_172 val_172 +172 val_172 val_172 +462 val_462 val_462 +462 val_462 val_462 +26 val_26 val_26 +26 val_26 val_26 +462 val_462 val_462 +462 val_462 val_462 +341 val_341 val_341 +183 val_183 val_183 +84 val_84 val_84 +84 val_84 val_84 +37 val_37 val_37 +37 val_37 val_37 +448 val_448 val_448 +194 val_194 val_194 +477 val_477 val_477 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +400 val_400 val_400 +27 val_27 val_27 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +265 val_265 val_265 +265 val_265 val_265 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +166 val_166 val_166 +430 val_430 val_430 +430 val_430 val_430 +430 val_430 val_430 +287 val_287 val_287 +207 val_207 val_207 +207 val_207 val_207 +199 val_199 val_199 +199 val_199 val_199 +199 val_199 val_199 +247 val_247 val_247 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +162 val_162 val_162 +397 val_397 val_397 +397 val_397 val_397 +342 val_342 val_342 +342 val_342 val_342 +195 val_195 val_195 +195 val_195 val_195 +155 val_155 val_155 +203 val_203 val_203 +203 val_203 val_203 +339 val_339 val_339 +302 val_302 val_302 +438 val_438 val_438 +438 val_438 val_438 +438 val_438 val_438 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +221 val_221 val_221 +221 val_221 val_221 +92 val_92 val_92 +111 val_111 val_111 +427 val_427 val_427 +382 val_382 val_382 +382 val_382 val_382 +386 val_386 val_386 +430 val_430 val_430 +430 val_430 val_430 +430 val_430 val_430 +221 val_221 val_221 +221 val_221 val_221 +137 val_137 val_137 +137 val_137 val_137 +180 val_180 val_180 +12 val_12 val_12 +12 val_12 val_12 +67 val_67 val_67 +67 val_67 val_67 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +353 val_353 val_353 +353 val_353 val_353 +272 val_272 val_272 +272 val_272 val_272 +463 val_463 val_463 +463 val_463 val_463 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +496 val_496 val_496 +393 val_393 val_393 +100 val_100 val_100 +100 val_100 val_100 +298 val_298 val_298 +298 val_298 val_298 +298 val_298 val_298 +199 val_199 val_199 +199 val_199 val_199 +199 val_199 val_199 +191 val_191 val_191 +191 val_191 val_191 +96 val_96 val_96 +481 val_481 val_481 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +470 val_470 val_470 +137 val_137 val_137 +137 val_137 val_137 +85 val_85 val_85 +364 val_364 val_364 +306 val_306 val_306 +272 val_272 val_272 +272 val_272 val_272 +331 val_331 val_331 +331 val_331 val_331 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +452 val_452 val_452 +177 val_177 val_177 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +317 val_317 val_317 +317 val_317 val_317 +34 val_34 val_34 +229 val_229 val_229 +229 val_229 val_229 +195 val_195 val_195 +195 val_195 val_195 +430 val_430 val_430 +430 val_430 val_430 +430 val_430 val_430 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +78 val_78 val_78 +41 val_41 val_41 +492 val_492 val_492 +492 val_492 val_492 +449 val_449 val_449 +218 val_218 val_218 +30 val_30 val_30 +74 val_74 val_74 +342 val_342 val_342 +342 val_342 val_342 +368 val_368 val_368 +485 val_485 val_485 +70 val_70 val_70 +70 val_70 val_70 +70 val_70 val_70 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +191 val_191 val_191 +191 val_191 val_191 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +438 val_438 val_438 +438 val_438 val_438 +438 val_438 val_438 +467 val_467 val_467 +229 val_229 val_229 +229 val_229 val_229 +463 val_463 val_463 +463 val_463 val_463 +283 val_283 val_283 +331 val_331 val_331 +331 val_331 val_331 +335 val_335 val_335 +104 val_104 val_104 +104 val_104 val_104 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +258 val_258 val_258 +203 val_203 val_203 +203 val_203 val_203 +12 val_12 val_12 +12 val_12 val_12 +478 val_478 val_478 +478 val_478 val_478 +298 val_298 val_298 +298 val_298 val_298 +298 val_298 val_298 +382 val_382 val_382 +382 val_382 val_382 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +70 val_70 val_70 +70 val_70 val_70 +70 val_70 val_70 +397 val_397 val_397 +397 val_397 val_397 +104 val_104 val_104 +104 val_104 val_104 +70 val_70 val_70 +70 val_70 val_70 +70 val_70 val_70 +438 val_438 val_438 +438 val_438 val_438 +438 val_438 val_438 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +360 val_360 val_360 +199 val_199 val_199 +199 val_199 val_199 +199 val_199 val_199 +478 val_478 val_478 +478 val_478 val_478 +317 val_317 val_317 +317 val_317 val_317 +207 val_207 val_207 +207 val_207 val_207 +265 val_265 val_265 +265 val_265 val_265 +353 val_353 val_353 +353 val_353 val_353 +214 val_214 val_214 +133 val_133 val_133 +375 val_375 val_375 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +67 val_67 val_67 +67 val_67 val_67 +379 val_379 val_379 +492 val_492 val_492 +492 val_492 val_492 +100 val_100 val_100 +100 val_100 val_100 +298 val_298 val_298 +298 val_298 val_298 +298 val_298 val_298 +9 val_9 val_9 +126 val_126 val_126 +PREHOOK: query: explain extended +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from +(select * from srcbucket_mapjoin where value != '100') a +join srcbucket_mapjoin_part b +on a.key=b.key +PREHOOK: type: QUERY +POSTHOOK: query: explain extended +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from +(select * from srcbucket_mapjoin where value != '100') a +join srcbucket_mapjoin_part b +on a.key=b.key +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_JOIN (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_TABREF srcbucket_mapjoin)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (!= (TOK_TABLE_OR_COL value) '100')))) a) (TOK_TABREF srcbucket_mapjoin_part b) (= (. (TOK_TABLE_OR_COL a) key) (. (TOK_TABLE_OR_COL b) key)))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_HINTLIST (TOK_HINT TOK_MAPJOIN (TOK_HINTARGLIST a))) (TOK_SELEXPR (. (TOK_TABLE_OR_COL a) key) key) (TOK_SELEXPR (. (TOK_TABLE_OR_COL a) value) v1) (TOK_SELEXPR (. (TOK_TABLE_OR_COL b) value) v2)))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + b + TableScan + alias: b + Common Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {_col0} {_col1} + 1 {value} + handleSkewJoin: false + keys: + 0 [Column[_col0]] + 1 [Column[key]] + outputColumnNames: _col0, _col1, _col3 + Position of Big Table: 1 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col3 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col2 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-30_282_2890669952675776803/10001 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0,_col1,_col2 + columns.types int:string:string + serialization.format 1 + TotalFiles: 1 + MultiFileSpray: false + Local Work: + Map Reduce Local Work + Alias -> Map Local Tables: + a:srcbucket_mapjoin + Fetch Operator + limit: -1 + Alias -> Map Local Operator Tree: + a:srcbucket_mapjoin + TableScan + alias: srcbucket_mapjoin + Filter Operator + isSamplingPred: false + predicate: + expr: (value <> '100') + type: boolean + Filter Operator + isSamplingPred: false + predicate: + expr: (value <> '100') + type: boolean + Select Operator + expressions: + expr: key + type: int + expr: value + type: string + outputColumnNames: _col0, _col1 + Common Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {_col0} {_col1} + 1 {value} + handleSkewJoin: false + keys: + 0 [Column[_col0]] + 1 [Column[key]] + outputColumnNames: _col0, _col1, _col3 + Position of Big Table: 1 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col3 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col2 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-30_282_2890669952675776803/10001 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0,_col1,_col2 + columns.types int:string:string + serialization.format 1 + TotalFiles: 1 + MultiFileSpray: false + Needs Tagging: false + Path -> Alias: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08 [b] + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09 [b] + Path -> Partition: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08 + Partition + base file name: ds=2008-04-08 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + partition values: + ds 2008-04-08 + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: srcbucket_mapjoin_part + name: srcbucket_mapjoin_part + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09 + Partition + base file name: ds=2008-04-09 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + partition values: + ds 2008-04-09 + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: srcbucket_mapjoin_part + name: srcbucket_mapjoin_part + + Stage: Stage-0 + Fetch Operator + limit: -1 + + +PREHOOK: query: select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from +(select * from srcbucket_mapjoin where value != '100') a +join srcbucket_mapjoin_part b +on a.key=b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-08 +PREHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-09 +PREHOOK: Input: default@srcbucket_mapjoin +PREHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-30_793_3257012805799316768/10000 +POSTHOOK: query: select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from +(select * from srcbucket_mapjoin where value != '100') a +join srcbucket_mapjoin_part b +on a.key=b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-08 +POSTHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-09 +POSTHOOK: Input: default@srcbucket_mapjoin +POSTHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-30_793_3257012805799316768/10000 +165 val_165 val_165 +165 val_165 val_165 +484 val_484 val_484 +150 val_150 val_150 +224 val_224 val_224 +224 val_224 val_224 +66 val_66 val_66 +213 val_213 val_213 +213 val_213 val_213 +374 val_374 val_374 +495 val_495 val_495 +37 val_37 val_37 +37 val_37 val_37 +327 val_327 val_327 +327 val_327 val_327 +327 val_327 val_327 +15 val_15 val_15 +15 val_15 val_15 +338 val_338 val_338 +459 val_459 val_459 +459 val_459 val_459 +466 val_466 val_466 +466 val_466 val_466 +466 val_466 val_466 +396 val_396 val_396 +396 val_396 val_396 +396 val_396 val_396 +309 val_309 val_309 +309 val_309 val_309 +367 val_367 val_367 +367 val_367 val_367 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +455 val_455 val_455 +316 val_316 val_316 +316 val_316 val_316 +316 val_316 val_316 +345 val_345 val_345 +129 val_129 val_129 +129 val_129 val_129 +378 val_378 val_378 +4 val_4 val_4 +356 val_356 val_356 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +125 val_125 val_125 +125 val_125 val_125 +437 val_437 val_437 +286 val_286 val_286 +187 val_187 val_187 +187 val_187 val_187 +187 val_187 val_187 +176 val_176 val_176 +176 val_176 val_176 +459 val_459 val_459 +459 val_459 val_459 +51 val_51 val_51 +51 val_51 val_51 +103 val_103 val_103 +103 val_103 val_103 +239 val_239 val_239 +239 val_239 val_239 +213 val_213 val_213 +213 val_213 val_213 +176 val_176 val_176 +176 val_176 val_176 +275 val_275 val_275 +260 val_260 val_260 +404 val_404 val_404 +404 val_404 val_404 +217 val_217 val_217 +217 val_217 val_217 +84 val_84 val_84 +84 val_84 val_84 +466 val_466 val_466 +466 val_466 val_466 +466 val_466 val_466 +8 val_8 val_8 +411 val_411 val_411 +172 val_172 val_172 +172 val_172 val_172 +129 val_129 val_129 +129 val_129 val_129 +158 val_158 val_158 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +26 val_26 val_26 +26 val_26 val_26 +165 val_165 val_165 +165 val_165 val_165 +327 val_327 val_327 +327 val_327 val_327 +327 val_327 val_327 +51 val_51 val_51 +51 val_51 val_51 +404 val_404 val_404 +404 val_404 val_404 +95 val_95 val_95 +95 val_95 val_95 +282 val_282 val_282 +282 val_282 val_282 +187 val_187 val_187 +187 val_187 val_187 +187 val_187 val_187 +316 val_316 val_316 +316 val_316 val_316 +316 val_316 val_316 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +77 val_77 val_77 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +118 val_118 val_118 +118 val_118 val_118 +282 val_282 val_282 +282 val_282 val_282 +419 val_419 val_419 +15 val_15 val_15 +15 val_15 val_15 +118 val_118 val_118 +118 val_118 val_118 +19 val_19 val_19 +224 val_224 val_224 +224 val_224 val_224 +309 val_309 val_309 +309 val_309 val_309 +389 val_389 val_389 +327 val_327 val_327 +327 val_327 val_327 +327 val_327 val_327 +242 val_242 val_242 +242 val_242 val_242 +392 val_392 val_392 +242 val_242 val_242 +242 val_242 val_242 +396 val_396 val_396 +396 val_396 val_396 +396 val_396 val_396 +95 val_95 val_95 +95 val_95 val_95 +11 val_11 val_11 +143 val_143 val_143 +228 val_228 val_228 +33 val_33 val_33 +103 val_103 val_103 +103 val_103 val_103 +367 val_367 val_367 +367 val_367 val_367 +239 val_239 val_239 +239 val_239 val_239 +480 val_480 val_480 +480 val_480 val_480 +480 val_480 val_480 +202 val_202 val_202 +316 val_316 val_316 +316 val_316 val_316 +316 val_316 val_316 +235 val_235 val_235 +80 val_80 val_80 +44 val_44 val_44 +466 val_466 val_466 +466 val_466 val_466 +466 val_466 val_466 +257 val_257 val_257 +190 val_190 val_190 +114 val_114 val_114 +396 val_396 val_396 +396 val_396 val_396 +396 val_396 val_396 +217 val_217 val_217 +217 val_217 val_217 +125 val_125 val_125 +125 val_125 val_125 +187 val_187 val_187 +187 val_187 val_187 +187 val_187 val_187 +480 val_480 val_480 +480 val_480 val_480 +480 val_480 val_480 +491 val_491 val_491 +305 val_305 val_305 +444 val_444 val_444 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +323 val_323 val_323 +480 val_480 val_480 +480 val_480 val_480 +480 val_480 val_480 +136 val_136 val_136 +172 val_172 val_172 +172 val_172 val_172 +462 val_462 val_462 +462 val_462 val_462 +26 val_26 val_26 +26 val_26 val_26 +462 val_462 val_462 +462 val_462 val_462 +341 val_341 val_341 +183 val_183 val_183 +84 val_84 val_84 +84 val_84 val_84 +37 val_37 val_37 +37 val_37 val_37 +448 val_448 val_448 +194 val_194 val_194 +477 val_477 val_477 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +400 val_400 val_400 +27 val_27 val_27 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +265 val_265 val_265 +265 val_265 val_265 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +166 val_166 val_166 +430 val_430 val_430 +430 val_430 val_430 +430 val_430 val_430 +287 val_287 val_287 +207 val_207 val_207 +207 val_207 val_207 +199 val_199 val_199 +199 val_199 val_199 +199 val_199 val_199 +247 val_247 val_247 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +162 val_162 val_162 +397 val_397 val_397 +397 val_397 val_397 +342 val_342 val_342 +342 val_342 val_342 +195 val_195 val_195 +195 val_195 val_195 +155 val_155 val_155 +203 val_203 val_203 +203 val_203 val_203 +339 val_339 val_339 +302 val_302 val_302 +438 val_438 val_438 +438 val_438 val_438 +438 val_438 val_438 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +221 val_221 val_221 +221 val_221 val_221 +92 val_92 val_92 +111 val_111 val_111 +427 val_427 val_427 +382 val_382 val_382 +382 val_382 val_382 +386 val_386 val_386 +430 val_430 val_430 +430 val_430 val_430 +430 val_430 val_430 +221 val_221 val_221 +221 val_221 val_221 +137 val_137 val_137 +137 val_137 val_137 +180 val_180 val_180 +12 val_12 val_12 +12 val_12 val_12 +67 val_67 val_67 +67 val_67 val_67 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +353 val_353 val_353 +353 val_353 val_353 +272 val_272 val_272 +272 val_272 val_272 +463 val_463 val_463 +463 val_463 val_463 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +496 val_496 val_496 +393 val_393 val_393 +100 val_100 val_100 +100 val_100 val_100 +298 val_298 val_298 +298 val_298 val_298 +298 val_298 val_298 +199 val_199 val_199 +199 val_199 val_199 +199 val_199 val_199 +191 val_191 val_191 +191 val_191 val_191 +96 val_96 val_96 +481 val_481 val_481 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +470 val_470 val_470 +137 val_137 val_137 +137 val_137 val_137 +85 val_85 val_85 +364 val_364 val_364 +306 val_306 val_306 +272 val_272 val_272 +272 val_272 val_272 +331 val_331 val_331 +331 val_331 val_331 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +452 val_452 val_452 +177 val_177 val_177 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +317 val_317 val_317 +317 val_317 val_317 +34 val_34 val_34 +229 val_229 val_229 +229 val_229 val_229 +195 val_195 val_195 +195 val_195 val_195 +430 val_430 val_430 +430 val_430 val_430 +430 val_430 val_430 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +78 val_78 val_78 +41 val_41 val_41 +492 val_492 val_492 +492 val_492 val_492 +449 val_449 val_449 +218 val_218 val_218 +30 val_30 val_30 +74 val_74 val_74 +342 val_342 val_342 +342 val_342 val_342 +368 val_368 val_368 +485 val_485 val_485 +70 val_70 val_70 +70 val_70 val_70 +70 val_70 val_70 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +191 val_191 val_191 +191 val_191 val_191 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +438 val_438 val_438 +438 val_438 val_438 +438 val_438 val_438 +467 val_467 val_467 +229 val_229 val_229 +229 val_229 val_229 +463 val_463 val_463 +463 val_463 val_463 +283 val_283 val_283 +331 val_331 val_331 +331 val_331 val_331 +335 val_335 val_335 +104 val_104 val_104 +104 val_104 val_104 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +258 val_258 val_258 +203 val_203 val_203 +203 val_203 val_203 +12 val_12 val_12 +12 val_12 val_12 +478 val_478 val_478 +478 val_478 val_478 +298 val_298 val_298 +298 val_298 val_298 +298 val_298 val_298 +382 val_382 val_382 +382 val_382 val_382 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +70 val_70 val_70 +70 val_70 val_70 +70 val_70 val_70 +397 val_397 val_397 +397 val_397 val_397 +104 val_104 val_104 +104 val_104 val_104 +70 val_70 val_70 +70 val_70 val_70 +70 val_70 val_70 +438 val_438 val_438 +438 val_438 val_438 +438 val_438 val_438 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +360 val_360 val_360 +199 val_199 val_199 +199 val_199 val_199 +199 val_199 val_199 +478 val_478 val_478 +478 val_478 val_478 +317 val_317 val_317 +317 val_317 val_317 +207 val_207 val_207 +207 val_207 val_207 +265 val_265 val_265 +265 val_265 val_265 +353 val_353 val_353 +353 val_353 val_353 +214 val_214 val_214 +133 val_133 val_133 +375 val_375 val_375 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +67 val_67 val_67 +67 val_67 val_67 +379 val_379 val_379 +492 val_492 val_492 +492 val_492 val_492 +100 val_100 val_100 +100 val_100 val_100 +298 val_298 val_298 +298 val_298 val_298 +298 val_298 val_298 +9 val_9 val_9 +126 val_126 val_126 +165 val_165 val_165 +165 val_165 val_165 +484 val_484 val_484 +150 val_150 val_150 +224 val_224 val_224 +224 val_224 val_224 +66 val_66 val_66 +213 val_213 val_213 +213 val_213 val_213 +374 val_374 val_374 +495 val_495 val_495 +37 val_37 val_37 +37 val_37 val_37 +327 val_327 val_327 +327 val_327 val_327 +327 val_327 val_327 +15 val_15 val_15 +15 val_15 val_15 +338 val_338 val_338 +459 val_459 val_459 +459 val_459 val_459 +466 val_466 val_466 +466 val_466 val_466 +466 val_466 val_466 +396 val_396 val_396 +396 val_396 val_396 +396 val_396 val_396 +309 val_309 val_309 +309 val_309 val_309 +367 val_367 val_367 +367 val_367 val_367 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +455 val_455 val_455 +316 val_316 val_316 +316 val_316 val_316 +316 val_316 val_316 +345 val_345 val_345 +129 val_129 val_129 +129 val_129 val_129 +378 val_378 val_378 +4 val_4 val_4 +356 val_356 val_356 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +125 val_125 val_125 +125 val_125 val_125 +437 val_437 val_437 +286 val_286 val_286 +187 val_187 val_187 +187 val_187 val_187 +187 val_187 val_187 +176 val_176 val_176 +176 val_176 val_176 +459 val_459 val_459 +459 val_459 val_459 +51 val_51 val_51 +51 val_51 val_51 +103 val_103 val_103 +103 val_103 val_103 +239 val_239 val_239 +239 val_239 val_239 +213 val_213 val_213 +213 val_213 val_213 +176 val_176 val_176 +176 val_176 val_176 +275 val_275 val_275 +260 val_260 val_260 +404 val_404 val_404 +404 val_404 val_404 +217 val_217 val_217 +217 val_217 val_217 +84 val_84 val_84 +84 val_84 val_84 +466 val_466 val_466 +466 val_466 val_466 +466 val_466 val_466 +8 val_8 val_8 +411 val_411 val_411 +172 val_172 val_172 +172 val_172 val_172 +129 val_129 val_129 +129 val_129 val_129 +158 val_158 val_158 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +26 val_26 val_26 +26 val_26 val_26 +165 val_165 val_165 +165 val_165 val_165 +327 val_327 val_327 +327 val_327 val_327 +327 val_327 val_327 +51 val_51 val_51 +51 val_51 val_51 +404 val_404 val_404 +404 val_404 val_404 +95 val_95 val_95 +95 val_95 val_95 +282 val_282 val_282 +282 val_282 val_282 +187 val_187 val_187 +187 val_187 val_187 +187 val_187 val_187 +316 val_316 val_316 +316 val_316 val_316 +316 val_316 val_316 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +77 val_77 val_77 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +118 val_118 val_118 +118 val_118 val_118 +282 val_282 val_282 +282 val_282 val_282 +419 val_419 val_419 +15 val_15 val_15 +15 val_15 val_15 +118 val_118 val_118 +118 val_118 val_118 +19 val_19 val_19 +224 val_224 val_224 +224 val_224 val_224 +309 val_309 val_309 +309 val_309 val_309 +389 val_389 val_389 +327 val_327 val_327 +327 val_327 val_327 +327 val_327 val_327 +242 val_242 val_242 +242 val_242 val_242 +392 val_392 val_392 +242 val_242 val_242 +242 val_242 val_242 +396 val_396 val_396 +396 val_396 val_396 +396 val_396 val_396 +95 val_95 val_95 +95 val_95 val_95 +11 val_11 val_11 +143 val_143 val_143 +228 val_228 val_228 +33 val_33 val_33 +103 val_103 val_103 +103 val_103 val_103 +367 val_367 val_367 +367 val_367 val_367 +239 val_239 val_239 +239 val_239 val_239 +480 val_480 val_480 +480 val_480 val_480 +480 val_480 val_480 +202 val_202 val_202 +316 val_316 val_316 +316 val_316 val_316 +316 val_316 val_316 +235 val_235 val_235 +80 val_80 val_80 +44 val_44 val_44 +466 val_466 val_466 +466 val_466 val_466 +466 val_466 val_466 +257 val_257 val_257 +190 val_190 val_190 +114 val_114 val_114 +396 val_396 val_396 +396 val_396 val_396 +396 val_396 val_396 +217 val_217 val_217 +217 val_217 val_217 +125 val_125 val_125 +125 val_125 val_125 +187 val_187 val_187 +187 val_187 val_187 +187 val_187 val_187 +480 val_480 val_480 +480 val_480 val_480 +480 val_480 val_480 +491 val_491 val_491 +305 val_305 val_305 +444 val_444 val_444 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +323 val_323 val_323 +480 val_480 val_480 +480 val_480 val_480 +480 val_480 val_480 +136 val_136 val_136 +172 val_172 val_172 +172 val_172 val_172 +462 val_462 val_462 +462 val_462 val_462 +26 val_26 val_26 +26 val_26 val_26 +462 val_462 val_462 +462 val_462 val_462 +341 val_341 val_341 +183 val_183 val_183 +84 val_84 val_84 +84 val_84 val_84 +37 val_37 val_37 +37 val_37 val_37 +448 val_448 val_448 +194 val_194 val_194 +477 val_477 val_477 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +400 val_400 val_400 +27 val_27 val_27 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +265 val_265 val_265 +265 val_265 val_265 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +166 val_166 val_166 +430 val_430 val_430 +430 val_430 val_430 +430 val_430 val_430 +287 val_287 val_287 +207 val_207 val_207 +207 val_207 val_207 +199 val_199 val_199 +199 val_199 val_199 +199 val_199 val_199 +247 val_247 val_247 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +162 val_162 val_162 +397 val_397 val_397 +397 val_397 val_397 +342 val_342 val_342 +342 val_342 val_342 +195 val_195 val_195 +195 val_195 val_195 +155 val_155 val_155 +203 val_203 val_203 +203 val_203 val_203 +339 val_339 val_339 +302 val_302 val_302 +438 val_438 val_438 +438 val_438 val_438 +438 val_438 val_438 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +221 val_221 val_221 +221 val_221 val_221 +92 val_92 val_92 +111 val_111 val_111 +427 val_427 val_427 +382 val_382 val_382 +382 val_382 val_382 +386 val_386 val_386 +430 val_430 val_430 +430 val_430 val_430 +430 val_430 val_430 +221 val_221 val_221 +221 val_221 val_221 +137 val_137 val_137 +137 val_137 val_137 +180 val_180 val_180 +12 val_12 val_12 +12 val_12 val_12 +67 val_67 val_67 +67 val_67 val_67 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +353 val_353 val_353 +353 val_353 val_353 +272 val_272 val_272 +272 val_272 val_272 +463 val_463 val_463 +463 val_463 val_463 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +496 val_496 val_496 +393 val_393 val_393 +100 val_100 val_100 +100 val_100 val_100 +298 val_298 val_298 +298 val_298 val_298 +298 val_298 val_298 +199 val_199 val_199 +199 val_199 val_199 +199 val_199 val_199 +191 val_191 val_191 +191 val_191 val_191 +96 val_96 val_96 +481 val_481 val_481 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +470 val_470 val_470 +137 val_137 val_137 +137 val_137 val_137 +85 val_85 val_85 +364 val_364 val_364 +306 val_306 val_306 +272 val_272 val_272 +272 val_272 val_272 +331 val_331 val_331 +331 val_331 val_331 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +452 val_452 val_452 +177 val_177 val_177 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +317 val_317 val_317 +317 val_317 val_317 +34 val_34 val_34 +229 val_229 val_229 +229 val_229 val_229 +195 val_195 val_195 +195 val_195 val_195 +430 val_430 val_430 +430 val_430 val_430 +430 val_430 val_430 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +78 val_78 val_78 +41 val_41 val_41 +492 val_492 val_492 +492 val_492 val_492 +449 val_449 val_449 +218 val_218 val_218 +30 val_30 val_30 +74 val_74 val_74 +342 val_342 val_342 +342 val_342 val_342 +368 val_368 val_368 +485 val_485 val_485 +70 val_70 val_70 +70 val_70 val_70 +70 val_70 val_70 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +191 val_191 val_191 +191 val_191 val_191 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +438 val_438 val_438 +438 val_438 val_438 +438 val_438 val_438 +467 val_467 val_467 +229 val_229 val_229 +229 val_229 val_229 +463 val_463 val_463 +463 val_463 val_463 +283 val_283 val_283 +331 val_331 val_331 +331 val_331 val_331 +335 val_335 val_335 +104 val_104 val_104 +104 val_104 val_104 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +258 val_258 val_258 +203 val_203 val_203 +203 val_203 val_203 +12 val_12 val_12 +12 val_12 val_12 +478 val_478 val_478 +478 val_478 val_478 +298 val_298 val_298 +298 val_298 val_298 +298 val_298 val_298 +382 val_382 val_382 +382 val_382 val_382 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +70 val_70 val_70 +70 val_70 val_70 +70 val_70 val_70 +397 val_397 val_397 +397 val_397 val_397 +104 val_104 val_104 +104 val_104 val_104 +70 val_70 val_70 +70 val_70 val_70 +70 val_70 val_70 +438 val_438 val_438 +438 val_438 val_438 +438 val_438 val_438 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +360 val_360 val_360 +199 val_199 val_199 +199 val_199 val_199 +199 val_199 val_199 +478 val_478 val_478 +478 val_478 val_478 +317 val_317 val_317 +317 val_317 val_317 +207 val_207 val_207 +207 val_207 val_207 +265 val_265 val_265 +265 val_265 val_265 +353 val_353 val_353 +353 val_353 val_353 +214 val_214 val_214 +133 val_133 val_133 +375 val_375 val_375 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +67 val_67 val_67 +67 val_67 val_67 +379 val_379 val_379 +492 val_492 val_492 +492 val_492 val_492 +100 val_100 val_100 +100 val_100 val_100 +298 val_298 val_298 +298 val_298 val_298 +298 val_298 val_298 +9 val_9 val_9 +126 val_126 val_126 +PREHOOK: query: explain extended +select count(1) from ( +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from +(select * from srcbucket_mapjoin where key<100) a +join srcbucket_mapjoin_part b +on a.key=b.key) subq +PREHOOK: type: QUERY +POSTHOOK: query: explain extended +select count(1) from ( +select /*+mapjoin(a)*/ a.key as key, a.value as v1, b.value as v2 +from +(select * from srcbucket_mapjoin where key<100) a +join srcbucket_mapjoin_part b +on a.key=b.key) subq +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_JOIN (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_TABREF srcbucket_mapjoin)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (< (TOK_TABLE_OR_COL key) 100)))) a) (TOK_TABREF srcbucket_mapjoin_part b) (= (. (TOK_TABLE_OR_COL a) key) (. (TOK_TABLE_OR_COL b) key)))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_HINTLIST (TOK_HINT TOK_MAPJOIN (TOK_HINTARGLIST a))) (TOK_SELEXPR (. (TOK_TABLE_OR_COL a) key) key) (TOK_SELEXPR (. (TOK_TABLE_OR_COL a) value) v1) (TOK_SELEXPR (. (TOK_TABLE_OR_COL b) value) v2)))) subq)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION count 1))))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + subq:b + TableScan + alias: b + Common Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 + 1 + handleSkewJoin: false + keys: + 0 [Column[_col0]] + 1 [Column[key]] + Position of Big Table: 1 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-37_458_4074662869343418974/10002 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns + columns.types + escape.delim \ + TotalFiles: 1 + MultiFileSpray: false + Local Work: + Map Reduce Local Work + Alias -> Map Local Tables: + subq:a:srcbucket_mapjoin + Fetch Operator + limit: -1 + Alias -> Map Local Operator Tree: + subq:a:srcbucket_mapjoin + TableScan + alias: srcbucket_mapjoin + Filter Operator + isSamplingPred: false + predicate: + expr: (key < 100) + type: boolean + Filter Operator + isSamplingPred: false + predicate: + expr: (key < 100) + type: boolean + Select Operator + expressions: + expr: key + type: int + outputColumnNames: _col0 + Common Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 + 1 + handleSkewJoin: false + keys: + 0 [Column[_col0]] + 1 [Column[key]] + Position of Big Table: 1 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-37_458_4074662869343418974/10002 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns + columns.types + escape.delim \ + TotalFiles: 1 + MultiFileSpray: false + Needs Tagging: false + Path -> Alias: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08 [subq:b] + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09 [subq:b] + Path -> Partition: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08 + Partition + base file name: ds=2008-04-08 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + partition values: + ds 2008-04-08 + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: srcbucket_mapjoin_part + name: srcbucket_mapjoin_part + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09 + Partition + base file name: ds=2008-04-09 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + partition values: + ds 2008-04-09 + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: srcbucket_mapjoin_part + name: srcbucket_mapjoin_part + + Stage: Stage-2 + Map Reduce + Alias -> Map Operator Tree: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-37_458_4074662869343418974/10002 + Select Operator + Select Operator + Select Operator + Group By Operator + aggregations: + expr: count(1) + bucketGroup: false + mode: hash + outputColumnNames: _col0 + Reduce Output Operator + sort order: + tag: -1 + value expressions: + expr: _col0 + type: bigint + Needs Tagging: false + Path -> Alias: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-37_458_4074662869343418974/10002 [file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-37_458_4074662869343418974/10002] + Path -> Partition: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-37_458_4074662869343418974/10002 + Partition + base file name: 10002 + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns + columns.types + escape.delim \ + + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns + columns.types + escape.delim \ + Reduce Operator Tree: + Group By Operator + aggregations: + expr: count(VALUE._col0) + bucketGroup: false + mode: mergepartial + outputColumnNames: _col0 + Select Operator + expressions: + expr: _col0 + type: bigint + outputColumnNames: _col0 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-37_458_4074662869343418974/10001 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0 + columns.types bigint + serialization.format 1 + TotalFiles: 1 + MultiFileSpray: false + + Stage: Stage-0 + Fetch Operator + limit: -1 + + +PREHOOK: query: select count(1) from +( +select /*+mapjoin(b)*/ a.key as key, a.value as v1, b.value as v2 +from +(select * from srcbucket_mapjoin where key<100) a +join srcbucket_mapjoin_part b +on a.key=b.key) subq +PREHOOK: type: QUERY +PREHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-08 +PREHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-09 +PREHOOK: Input: default@srcbucket_mapjoin +PREHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-38_036_5954830597723848511/10000 +POSTHOOK: query: select count(1) from +( +select /*+mapjoin(b)*/ a.key as key, a.value as v1, b.value as v2 +from +(select * from srcbucket_mapjoin where key<100) a +join srcbucket_mapjoin_part b +on a.key=b.key) subq +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-08 +POSTHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-09 +POSTHOOK: Input: default@srcbucket_mapjoin +POSTHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-38_036_5954830597723848511/10000 +156 +PREHOOK: query: explain extended +select count(1) from ( +select /*+mapjoin(a, c)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key join srcbucket_mapjoin_part c on b.key = c.key ) subq +PREHOOK: type: QUERY +POSTHOOK: query: explain extended +select count(1) from ( +select /*+mapjoin(a, c)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key join srcbucket_mapjoin_part c on b.key = c.key ) subq +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_JOIN (TOK_JOIN (TOK_TABREF srcbucket_mapjoin a) (TOK_TABREF srcbucket_mapjoin_part b) (= (. (TOK_TABLE_OR_COL a) key) (. (TOK_TABLE_OR_COL b) key))) (TOK_TABREF srcbucket_mapjoin_part c) (= (. (TOK_TABLE_OR_COL b) key) (. (TOK_TABLE_OR_COL c) key)))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_HINTLIST (TOK_HINT TOK_MAPJOIN (TOK_HINTARGLIST a c))) (TOK_SELEXPR (. (TOK_TABLE_OR_COL a) key) key) (TOK_SELEXPR (. (TOK_TABLE_OR_COL a) value) v1) (TOK_SELEXPR (. (TOK_TABLE_OR_COL b) value) v2)))) subq)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION count 1))))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + subq:b + TableScan + alias: b + Common Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 1 to 2 + condition expressions: + 0 + 1 + 2 + handleSkewJoin: false + keys: + 0 [Column[key]] + 1 [Column[key]] + 2 [Column[key]] + Position of Big Table: 1 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-48_978_2027175420374862143/10002 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns + columns.types + escape.delim \ + TotalFiles: 1 + MultiFileSpray: false + Local Work: + Map Reduce Local Work + Alias -> Map Local Tables: + subq:a + Fetch Operator + limit: -1 + subq:c + Fetch Operator + limit: -1 + Alias -> Map Local Operator Tree: + subq:a + TableScan + alias: a + Common Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 1 to 2 + condition expressions: + 0 + 1 + 2 + handleSkewJoin: false + keys: + 0 [Column[key]] + 1 [Column[key]] + 2 [Column[key]] + Position of Big Table: 1 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-48_978_2027175420374862143/10002 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns + columns.types + escape.delim \ + TotalFiles: 1 + MultiFileSpray: false + subq:c + TableScan + alias: c + Common Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 1 to 2 + condition expressions: + 0 + 1 + 2 + handleSkewJoin: false + keys: + 0 [Column[key]] + 1 [Column[key]] + 2 [Column[key]] + Position of Big Table: 1 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-48_978_2027175420374862143/10002 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns + columns.types + escape.delim \ + TotalFiles: 1 + MultiFileSpray: false + Needs Tagging: false + Path -> Alias: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08 [subq:b] + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09 [subq:b] + Path -> Partition: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08 + Partition + base file name: ds=2008-04-08 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + partition values: + ds 2008-04-08 + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: srcbucket_mapjoin_part + name: srcbucket_mapjoin_part + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09 + Partition + base file name: ds=2008-04-09 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + partition values: + ds 2008-04-09 + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: srcbucket_mapjoin_part + name: srcbucket_mapjoin_part + + Stage: Stage-2 + Map Reduce + Alias -> Map Operator Tree: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-48_978_2027175420374862143/10002 + Select Operator + Select Operator + Select Operator + Group By Operator + aggregations: + expr: count(1) + bucketGroup: false + mode: hash + outputColumnNames: _col0 + Reduce Output Operator + sort order: + tag: -1 + value expressions: + expr: _col0 + type: bigint + Needs Tagging: false + Path -> Alias: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-48_978_2027175420374862143/10002 [file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-48_978_2027175420374862143/10002] + Path -> Partition: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-48_978_2027175420374862143/10002 + Partition + base file name: 10002 + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns + columns.types + escape.delim \ + + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns + columns.types + escape.delim \ + Reduce Operator Tree: + Group By Operator + aggregations: + expr: count(VALUE._col0) + bucketGroup: false + mode: mergepartial + outputColumnNames: _col0 + Select Operator + expressions: + expr: _col0 + type: bigint + outputColumnNames: _col0 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-48_978_2027175420374862143/10001 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0 + columns.types bigint + serialization.format 1 + TotalFiles: 1 + MultiFileSpray: false + + Stage: Stage-0 + Fetch Operator + limit: -1 + + +PREHOOK: query: select count(1) from ( +select /*+mapjoin(a, c)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key join srcbucket_mapjoin_part c on b.key = c.key ) subq +PREHOOK: type: QUERY +PREHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-08 +PREHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-09 +PREHOOK: Input: default@srcbucket_mapjoin +PREHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-49_697_8686417853293089835/10000 +POSTHOOK: query: select count(1) from ( +select /*+mapjoin(a, c)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key join srcbucket_mapjoin_part c on b.key = c.key ) subq +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-08 +POSTHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-09 +POSTHOOK: Input: default@srcbucket_mapjoin +POSTHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-01-49_697_8686417853293089835/10000 +4456 +PREHOOK: query: explain extended +select count(1) from ( +select /*+mapjoin(a, c)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key join srcbucket_mapjoin_part c on b.key = c.key where a.key<100 and b.key<100) subq +PREHOOK: type: QUERY +POSTHOOK: query: explain extended +select count(1) from ( +select /*+mapjoin(a, c)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key join srcbucket_mapjoin_part c on b.key = c.key where a.key<100 and b.key<100) subq +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_JOIN (TOK_JOIN (TOK_TABREF srcbucket_mapjoin a) (TOK_TABREF srcbucket_mapjoin_part b) (= (. (TOK_TABLE_OR_COL a) key) (. (TOK_TABLE_OR_COL b) key))) (TOK_TABREF srcbucket_mapjoin_part c) (= (. (TOK_TABLE_OR_COL b) key) (. (TOK_TABLE_OR_COL c) key)))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_HINTLIST (TOK_HINT TOK_MAPJOIN (TOK_HINTARGLIST a c))) (TOK_SELEXPR (. (TOK_TABLE_OR_COL a) key) key) (TOK_SELEXPR (. (TOK_TABLE_OR_COL a) value) v1) (TOK_SELEXPR (. (TOK_TABLE_OR_COL b) value) v2)) (TOK_WHERE (and (< (. (TOK_TABLE_OR_COL a) key) 100) (< (. (TOK_TABLE_OR_COL b) key) 100))))) subq)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION count 1))))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + subq:b + TableScan + alias: b + Filter Operator + isSamplingPred: false + predicate: + expr: (key < 100) + type: boolean + Common Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 1 to 2 + condition expressions: + 0 {key} + 1 {key} + 2 + handleSkewJoin: false + keys: + 0 [Column[key]] + 1 [Column[key]] + 2 [Column[key]] + outputColumnNames: _col0, _col2 + Position of Big Table: 1 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-02-02_589_4860411554583472386/10002 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns _col0,_col2 + columns.types int,int + escape.delim \ + TotalFiles: 1 + MultiFileSpray: false + Local Work: + Map Reduce Local Work + Alias -> Map Local Tables: + subq:a + Fetch Operator + limit: -1 + subq:c + Fetch Operator + limit: -1 + Alias -> Map Local Operator Tree: + subq:a + TableScan + alias: a + Filter Operator + isSamplingPred: false + predicate: + expr: (key < 100) + type: boolean + Common Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 1 to 2 + condition expressions: + 0 {key} + 1 {key} + 2 + handleSkewJoin: false + keys: + 0 [Column[key]] + 1 [Column[key]] + 2 [Column[key]] + outputColumnNames: _col0, _col2 + Position of Big Table: 1 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-02-02_589_4860411554583472386/10002 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns _col0,_col2 + columns.types int,int + escape.delim \ + TotalFiles: 1 + MultiFileSpray: false + subq:c + TableScan + alias: c + Common Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 1 to 2 + condition expressions: + 0 {key} + 1 {key} + 2 + handleSkewJoin: false + keys: + 0 [Column[key]] + 1 [Column[key]] + 2 [Column[key]] + outputColumnNames: _col0, _col2 + Position of Big Table: 1 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-02-02_589_4860411554583472386/10002 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns _col0,_col2 + columns.types int,int + escape.delim \ + TotalFiles: 1 + MultiFileSpray: false + Needs Tagging: false + Path -> Alias: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08 [subq:b] + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09 [subq:b] + Path -> Partition: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-08 + Partition + base file name: ds=2008-04-08 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + partition values: + ds 2008-04-08 + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: srcbucket_mapjoin_part + name: srcbucket_mapjoin_part + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part/ds=2008-04-09 + Partition + base file name: ds=2008-04-09 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + partition values: + ds 2008-04-09 + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count 4 + bucket_field_name key + columns key,value + columns.types int:string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/test/data/warehouse/srcbucket_mapjoin_part + name srcbucket_mapjoin_part + partition_columns ds + serialization.ddl struct srcbucket_mapjoin_part { i32 key, string value} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1268103665 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: srcbucket_mapjoin_part + name: srcbucket_mapjoin_part + + Stage: Stage-2 + Map Reduce + Alias -> Map Operator Tree: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-02-02_589_4860411554583472386/10002 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col2 + type: int + outputColumnNames: _col0, _col2 + Filter Operator + isSamplingPred: false + predicate: + expr: ((_col0 < 100) and (_col2 < 100)) + type: boolean + Select Operator + Select Operator + Group By Operator + aggregations: + expr: count(1) + bucketGroup: false + mode: hash + outputColumnNames: _col0 + Reduce Output Operator + sort order: + tag: -1 + value expressions: + expr: _col0 + type: bigint + Needs Tagging: false + Path -> Alias: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-02-02_589_4860411554583472386/10002 [file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-02-02_589_4860411554583472386/10002] + Path -> Partition: + file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-02-02_589_4860411554583472386/10002 + Partition + base file name: 10002 + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns _col0,_col2 + columns.types int,int + escape.delim \ + + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + properties: + columns _col0,_col2 + columns.types int,int + escape.delim \ + Reduce Operator Tree: + Group By Operator + aggregations: + expr: count(VALUE._col0) + bucketGroup: false + mode: mergepartial + outputColumnNames: _col0 + Select Operator + expressions: + expr: _col0 + type: bigint + outputColumnNames: _col0 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-02-02_589_4860411554583472386/10001 + NumFilesPerFileSink: 1 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0 + columns.types bigint + serialization.format 1 + TotalFiles: 1 + MultiFileSpray: false + + Stage: Stage-0 + Fetch Operator + limit: -1 + + +PREHOOK: query: select count(1) from ( +select /*+mapjoin(a, c)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key join srcbucket_mapjoin_part c on b.key = c.key where a.key<100 and b.key<100) subq +PREHOOK: type: QUERY +PREHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-08 +PREHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-09 +PREHOOK: Input: default@srcbucket_mapjoin +PREHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-02-03_234_2119628641235933915/10000 +POSTHOOK: query: select count(1) from ( +select /*+mapjoin(a, c)*/ a.key as key, a.value as v1, b.value as v2 +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key join srcbucket_mapjoin_part c on b.key = c.key where a.key<100 and b.key<100) subq +POSTHOOK: type: QUERY +POSTHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-08 +POSTHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-09 +POSTHOOK: Input: default@srcbucket_mapjoin +POSTHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_19-02-03_234_2119628641235933915/10000 +656 +PREHOOK: query: drop table srcbucket_mapjoin +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table srcbucket_mapjoin +POSTHOOK: type: DROPTABLE +POSTHOOK: Output: default@srcbucket_mapjoin +PREHOOK: query: drop table srcbucket_mapjoin_part +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table srcbucket_mapjoin_part +POSTHOOK: type: DROPTABLE +POSTHOOK: Output: default@srcbucket_mapjoin_part +PREHOOK: query: drop table srcbucket_mapjoin_part_2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table srcbucket_mapjoin_part_2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Output: default@srcbucket_mapjoin_part_2 Index: ql/src/test/results/clientpositive/smb_subquery.q.out =================================================================== --- ql/src/test/results/clientpositive/smb_subquery.q.out (revision 0) +++ ql/src/test/results/clientpositive/smb_subquery.q.out (revision 0) @@ -0,0 +1,1487 @@ +PREHOOK: query: drop table bucketmapjoin6_1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table bucketmapjoin6_1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE bucketmapjoin6_1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE bucketmapjoin6_1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@bucketmapjoin6_1 +PREHOOK: query: drop table bucketmapjoin6_2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table bucketmapjoin6_2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE bucketmapjoin6_2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE bucketmapjoin6_2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@bucketmapjoin6_2 +PREHOOK: query: drop table bucketmapjoin6_3 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table bucketmapjoin6_3 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE bucketmapjoin6_3(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE bucketmapjoin6_3(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@bucketmapjoin6_3 +PREHOOK: query: insert overwrite table bucketmapjoin6_1 +select * from src where key < 100 and key != 44 and key != 28 and key != 15 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@bucketmapjoin6_1 +POSTHOOK: query: insert overwrite table bucketmapjoin6_1 +select * from src where key < 100 and key != 44 and key != 28 and key != 15 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@bucketmapjoin6_1 +PREHOOK: query: select * from bucketmapjoin6_1 +PREHOOK: type: QUERY +PREHOOK: Input: default@bucketmapjoin6_1 +PREHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_20-13-45_690_5579852550623487923/10000 +POSTHOOK: query: select * from bucketmapjoin6_1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@bucketmapjoin6_1 +POSTHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_20-13-45_690_5579852550623487923/10000 +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +47 val_47 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +PREHOOK: query: insert overwrite table bucketmapjoin6_2 +select * from src where key > 20 and key < 50 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@bucketmapjoin6_2 +POSTHOOK: query: insert overwrite table bucketmapjoin6_2 +select * from src where key > 20 and key < 50 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@bucketmapjoin6_2 +PREHOOK: query: select * from bucketmapjoin6_2 +PREHOOK: type: QUERY +PREHOOK: Input: default@bucketmapjoin6_2 +PREHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_20-13-54_109_7268038131031565390/10000 +POSTHOOK: query: select * from bucketmapjoin6_2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@bucketmapjoin6_2 +POSTHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_20-13-54_109_7268038131031565390/10000 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +PREHOOK: query: insert overwrite table bucketmapjoin6_3 +select * from src where key > 10 and key < 30 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@bucketmapjoin6_3 +POSTHOOK: query: insert overwrite table bucketmapjoin6_3 +select * from src where key > 10 and key < 30 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@bucketmapjoin6_3 +PREHOOK: query: select * from bucketmapjoin6_3 +PREHOOK: type: QUERY +PREHOOK: Input: default@bucketmapjoin6_3 +PREHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_20-14-02_900_4611241818666628132/10000 +POSTHOOK: query: select * from bucketmapjoin6_3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@bucketmapjoin6_3 +POSTHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_20-14-02_900_4611241818666628132/10000 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +PREHOOK: query: explain +select * from +( +select +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 or key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key +PREHOOK: type: QUERY +POSTHOOK: query: explain +select * from +( +select +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 or key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_FULLOUTERJOIN (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_FULLOUTERJOIN (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_TABREF bucketmapjoin6_1)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (or (<= (TOK_TABLE_OR_COL key) 20) (>= (TOK_TABLE_OR_COL key) 50))))) M) (TOK_TABREF bucketmapjoin6_2 S) (= (. (TOK_TABLE_OR_COL M) key) (. (TOK_TABLE_OR_COL S) key)))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION WHEN (TOK_FUNCTION TOK_ISNOTNULL (. (TOK_TABLE_OR_COL M) key)) (. (TOK_TABLE_OR_COL M) key) (. (TOK_TABLE_OR_COL S) key)) key) (TOK_SELEXPR (. (TOK_TABLE_OR_COL M) value) Mvalue) (TOK_SELEXPR (. (TOK_TABLE_OR_COL S) value) Svalue)))) subq2) (TOK_TABREF bucketmapjoin6_3 L) (= (. (TOK_TABLE_OR_COL subq2) key) (. (TOK_TABLE_OR_COL L) key)))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + subq2:m:bucketmapjoin6_1 + TableScan + alias: bucketmapjoin6_1 + Filter Operator + predicate: + expr: ((key <= 20) or (key >= 50)) + type: boolean + Filter Operator + predicate: + expr: ((key <= 20) or (key >= 50)) + type: boolean + Select Operator + expressions: + expr: key + type: int + expr: value + type: string + outputColumnNames: _col0, _col1 + Reduce Output Operator + key expressions: + expr: _col0 + type: int + sort order: + + Map-reduce partition columns: + expr: _col0 + type: int + tag: 0 + value expressions: + expr: _col0 + type: int + expr: _col1 + type: string + subq2:s + TableScan + alias: s + Reduce Output Operator + key expressions: + expr: key + type: int + sort order: + + Map-reduce partition columns: + expr: key + type: int + tag: 1 + value expressions: + expr: key + type: int + expr: value + type: string + Reduce Operator Tree: + Join Operator + condition map: + Outer Join 0 to 1 + condition expressions: + 0 {VALUE._col0} {VALUE._col1} + 1 {VALUE._col0} {VALUE._col1} + handleSkewJoin: false + outputColumnNames: _col0, _col1, _col2, _col3 + Select Operator + expressions: + expr: CASE WHEN (_col0 is not null) THEN (_col0) ELSE (_col2) END + type: int + expr: _col1 + type: string + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col2 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + + Stage: Stage-2 + Map Reduce + Alias -> Map Operator Tree: + $INTNAME + Reduce Output Operator + key expressions: + expr: _col0 + type: int + sort order: + + Map-reduce partition columns: + expr: _col0 + type: int + tag: 0 + value expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + l + TableScan + alias: l + Reduce Output Operator + key expressions: + expr: key + type: int + sort order: + + Map-reduce partition columns: + expr: key + type: int + tag: 1 + value expressions: + expr: key + type: int + expr: value + type: string + Reduce Operator Tree: + Join Operator + condition map: + Outer Join 0 to 1 + condition expressions: + 0 {VALUE._col0} {VALUE._col1} {VALUE._col2} + 1 {VALUE._col0} {VALUE._col1} + handleSkewJoin: false + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + expr: _col3 + type: int + expr: _col4 + type: string + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + + Stage: Stage-0 + Fetch Operator + limit: -1 + + +PREHOOK: query: select * from +( +select +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 or key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key +PREHOOK: type: QUERY +PREHOOK: Input: default@bucketmapjoin6_1 +PREHOOK: Input: default@bucketmapjoin6_3 +PREHOOK: Input: default@bucketmapjoin6_2 +PREHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_20-14-04_051_7262689189068227678/10000 +POSTHOOK: query: select * from +( +select +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 or key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@bucketmapjoin6_1 +POSTHOOK: Input: default@bucketmapjoin6_3 +POSTHOOK: Input: default@bucketmapjoin6_2 +POSTHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_20-14-04_051_7262689189068227678/10000 +0 val_0 NULL NULL NULL +0 val_0 NULL NULL NULL +0 val_0 NULL NULL NULL +2 val_2 NULL NULL NULL +4 val_4 NULL NULL NULL +5 val_5 NULL NULL NULL +5 val_5 NULL NULL NULL +5 val_5 NULL NULL NULL +8 val_8 NULL NULL NULL +9 val_9 NULL NULL NULL +10 val_10 NULL NULL NULL +11 val_11 NULL 11 val_11 +12 val_12 NULL 12 val_12 +12 val_12 NULL 12 val_12 +12 val_12 NULL 12 val_12 +12 val_12 NULL 12 val_12 +NULL NULL NULL 15 val_15 +NULL NULL NULL 15 val_15 +17 val_17 NULL 17 val_17 +18 val_18 NULL 18 val_18 +18 val_18 NULL 18 val_18 +18 val_18 NULL 18 val_18 +18 val_18 NULL 18 val_18 +19 val_19 NULL 19 val_19 +20 val_20 NULL 20 val_20 +24 NULL val_24 24 val_24 +24 NULL val_24 24 val_24 +24 NULL val_24 24 val_24 +24 NULL val_24 24 val_24 +26 NULL val_26 26 val_26 +26 NULL val_26 26 val_26 +26 NULL val_26 26 val_26 +26 NULL val_26 26 val_26 +27 NULL val_27 27 val_27 +28 NULL val_28 28 val_28 +30 NULL val_30 NULL NULL +33 NULL val_33 NULL NULL +34 NULL val_34 NULL NULL +35 NULL val_35 NULL NULL +35 NULL val_35 NULL NULL +35 NULL val_35 NULL NULL +37 NULL val_37 NULL NULL +37 NULL val_37 NULL NULL +41 NULL val_41 NULL NULL +42 NULL val_42 NULL NULL +42 NULL val_42 NULL NULL +43 NULL val_43 NULL NULL +44 NULL val_44 NULL NULL +47 NULL val_47 NULL NULL +51 val_51 NULL NULL NULL +51 val_51 NULL NULL NULL +53 val_53 NULL NULL NULL +54 val_54 NULL NULL NULL +57 val_57 NULL NULL NULL +58 val_58 NULL NULL NULL +58 val_58 NULL NULL NULL +64 val_64 NULL NULL NULL +65 val_65 NULL NULL NULL +66 val_66 NULL NULL NULL +67 val_67 NULL NULL NULL +67 val_67 NULL NULL NULL +69 val_69 NULL NULL NULL +70 val_70 NULL NULL NULL +70 val_70 NULL NULL NULL +70 val_70 NULL NULL NULL +72 val_72 NULL NULL NULL +72 val_72 NULL NULL NULL +74 val_74 NULL NULL NULL +76 val_76 NULL NULL NULL +76 val_76 NULL NULL NULL +77 val_77 NULL NULL NULL +78 val_78 NULL NULL NULL +80 val_80 NULL NULL NULL +82 val_82 NULL NULL NULL +83 val_83 NULL NULL NULL +83 val_83 NULL NULL NULL +84 val_84 NULL NULL NULL +84 val_84 NULL NULL NULL +85 val_85 NULL NULL NULL +86 val_86 NULL NULL NULL +87 val_87 NULL NULL NULL +90 val_90 NULL NULL NULL +90 val_90 NULL NULL NULL +90 val_90 NULL NULL NULL +92 val_92 NULL NULL NULL +95 val_95 NULL NULL NULL +95 val_95 NULL NULL NULL +96 val_96 NULL NULL NULL +97 val_97 NULL NULL NULL +97 val_97 NULL NULL NULL +98 val_98 NULL NULL NULL +98 val_98 NULL NULL NULL +PREHOOK: query: explain +select /*+ MAPJOIN(L) */ * from +( +select /*+ MAPJOIN(S) */ +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 and key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key +PREHOOK: type: QUERY +POSTHOOK: query: explain +select /*+ MAPJOIN(L) */ * from +( +select /*+ MAPJOIN(S) */ +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 and key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_FULLOUTERJOIN (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_FULLOUTERJOIN (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_TABREF bucketmapjoin6_1)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (and (<= (TOK_TABLE_OR_COL key) 20) (>= (TOK_TABLE_OR_COL key) 50))))) M) (TOK_TABREF bucketmapjoin6_2 S) (= (. (TOK_TABLE_OR_COL M) key) (. (TOK_TABLE_OR_COL S) key)))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_HINTLIST (TOK_HINT TOK_MAPJOIN (TOK_HINTARGLIST S))) (TOK_SELEXPR (TOK_FUNCTION WHEN (TOK_FUNCTION TOK_ISNOTNULL (. (TOK_TABLE_OR_COL M) key)) (. (TOK_TABLE_OR_COL M) key) (. (TOK_TABLE_OR_COL S) key)) key) (TOK_SELEXPR (. (TOK_TABLE_OR_COL M) value) Mvalue) (TOK_SELEXPR (. (TOK_TABLE_OR_COL S) value) Svalue)))) subq2) (TOK_TABREF bucketmapjoin6_3 L) (= (. (TOK_TABLE_OR_COL subq2) key) (. (TOK_TABLE_OR_COL L) key)))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_HINTLIST (TOK_HINT TOK_MAPJOIN (TOK_HINTARGLIST L))) (TOK_SELEXPR TOK_ALLCOLREF)))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + subq2:m:bucketmapjoin6_1 + TableScan + alias: bucketmapjoin6_1 + Filter Operator + predicate: + expr: ((key <= 20) and (key >= 50)) + type: boolean + Filter Operator + predicate: + expr: ((key <= 20) and (key >= 50)) + type: boolean + Select Operator + expressions: + expr: key + type: int + expr: value + type: string + outputColumnNames: _col0, _col1 + Common Join Operator + condition map: + Outer Join 0 to 1 + condition expressions: + 0 {_col0} {_col1} + 1 {key} {value} + handleSkewJoin: false + keys: + 0 [Column[_col0]] + 1 [Column[key]] + outputColumnNames: _col0, _col1, _col2, _col3 + Position of Big Table: 0 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: int + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col2, _col3 + Select Operator + expressions: + expr: CASE WHEN (_col0 is not null) THEN (_col0) ELSE (_col2) END + type: int + expr: _col1 + type: string + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col2 + Common Join Operator + condition map: + Outer Join 0 to 1 + condition expressions: + 0 {_col0} {_col1} {_col2} + 1 {key} {value} + handleSkewJoin: false + keys: + 0 [Column[_col0]] + 1 [Column[key]] + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Position of Big Table: 0 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + expr: _col3 + type: int + expr: _col4 + type: string + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + expr: _col3 + type: int + expr: _col4 + type: string + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + Local Work: + Map Reduce Local Work + Alias -> Map Local Tables: + l + Fetch Operator + limit: -1 + subq2:s + Fetch Operator + limit: -1 + Alias -> Map Local Operator Tree: + l + TableScan + alias: l + Common Join Operator + condition map: + Outer Join 0 to 1 + condition expressions: + 0 {_col0} {_col1} {_col2} + 1 {key} {value} + handleSkewJoin: false + keys: + 0 [Column[_col0]] + 1 [Column[key]] + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Position of Big Table: 0 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + expr: _col3 + type: int + expr: _col4 + type: string + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + expr: _col3 + type: int + expr: _col4 + type: string + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + subq2:s + TableScan + alias: s + Common Join Operator + condition map: + Outer Join 0 to 1 + condition expressions: + 0 {_col0} {_col1} + 1 {key} {value} + handleSkewJoin: false + keys: + 0 [Column[_col0]] + 1 [Column[key]] + outputColumnNames: _col0, _col1, _col2, _col3 + Position of Big Table: 0 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: int + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col2, _col3 + Select Operator + expressions: + expr: CASE WHEN (_col0 is not null) THEN (_col0) ELSE (_col2) END + type: int + expr: _col1 + type: string + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col2 + Common Join Operator + condition map: + Outer Join 0 to 1 + condition expressions: + 0 {_col0} {_col1} {_col2} + 1 {key} {value} + handleSkewJoin: false + keys: + 0 [Column[_col0]] + 1 [Column[key]] + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Position of Big Table: 0 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + expr: _col3 + type: int + expr: _col4 + type: string + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + expr: _col3 + type: int + expr: _col4 + type: string + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + + Stage: Stage-0 + Fetch Operator + limit: -1 + + +PREHOOK: query: select /*+ MAPJOIN(L) */ * from +( +select /*+ MAPJOIN(S) */ +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 or key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key +PREHOOK: type: QUERY +PREHOOK: Input: default@bucketmapjoin6_1 +PREHOOK: Input: default@bucketmapjoin6_3 +PREHOOK: Input: default@bucketmapjoin6_2 +PREHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_20-14-19_410_8029001798082307620/10000 +POSTHOOK: query: select /*+ MAPJOIN(L) */ * from +( +select /*+ MAPJOIN(S) */ +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 or key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@bucketmapjoin6_1 +POSTHOOK: Input: default@bucketmapjoin6_3 +POSTHOOK: Input: default@bucketmapjoin6_2 +POSTHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_20-14-19_410_8029001798082307620/10000 +0 val_0 NULL NULL NULL +0 val_0 NULL NULL NULL +0 val_0 NULL NULL NULL +2 val_2 NULL NULL NULL +4 val_4 NULL NULL NULL +5 val_5 NULL NULL NULL +5 val_5 NULL NULL NULL +5 val_5 NULL NULL NULL +8 val_8 NULL NULL NULL +9 val_9 NULL NULL NULL +10 val_10 NULL NULL NULL +11 val_11 NULL 11 val_11 +12 val_12 NULL 12 val_12 +12 val_12 NULL 12 val_12 +12 val_12 NULL 12 val_12 +12 val_12 NULL 12 val_12 +17 val_17 NULL 17 val_17 +18 val_18 NULL 18 val_18 +18 val_18 NULL 18 val_18 +18 val_18 NULL 18 val_18 +18 val_18 NULL 18 val_18 +19 val_19 NULL 19 val_19 +20 val_20 NULL 20 val_20 +51 val_51 NULL NULL NULL +51 val_51 NULL NULL NULL +53 val_53 NULL NULL NULL +54 val_54 NULL NULL NULL +57 val_57 NULL NULL NULL +58 val_58 NULL NULL NULL +58 val_58 NULL NULL NULL +64 val_64 NULL NULL NULL +65 val_65 NULL NULL NULL +66 val_66 NULL NULL NULL +67 val_67 NULL NULL NULL +67 val_67 NULL NULL NULL +69 val_69 NULL NULL NULL +70 val_70 NULL NULL NULL +70 val_70 NULL NULL NULL +70 val_70 NULL NULL NULL +72 val_72 NULL NULL NULL +72 val_72 NULL NULL NULL +74 val_74 NULL NULL NULL +76 val_76 NULL NULL NULL +76 val_76 NULL NULL NULL +77 val_77 NULL NULL NULL +78 val_78 NULL NULL NULL +80 val_80 NULL NULL NULL +82 val_82 NULL NULL NULL +83 val_83 NULL NULL NULL +83 val_83 NULL NULL NULL +84 val_84 NULL NULL NULL +84 val_84 NULL NULL NULL +85 val_85 NULL NULL NULL +86 val_86 NULL NULL NULL +87 val_87 NULL NULL NULL +90 val_90 NULL NULL NULL +90 val_90 NULL NULL NULL +90 val_90 NULL NULL NULL +92 val_92 NULL NULL NULL +95 val_95 NULL NULL NULL +95 val_95 NULL NULL NULL +96 val_96 NULL NULL NULL +97 val_97 NULL NULL NULL +97 val_97 NULL NULL NULL +98 val_98 NULL NULL NULL +98 val_98 NULL NULL NULL +PREHOOK: query: explain +select /*+ MAPJOIN(L) */ * from bucketmapjoin6_3 L +full outer join +( +select /*+ MAPJOIN(S) */ +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 and key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +on subq2.key = L.key +PREHOOK: type: QUERY +POSTHOOK: query: explain +select /*+ MAPJOIN(L) */ * from bucketmapjoin6_3 L +full outer join +( +select /*+ MAPJOIN(S) */ +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 and key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +on subq2.key = L.key +POSTHOOK: type: QUERY +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_FULLOUTERJOIN (TOK_TABREF bucketmapjoin6_3 L) (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_FULLOUTERJOIN (TOK_SUBQUERY (TOK_QUERY (TOK_FROM (TOK_TABREF bucketmapjoin6_1)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (and (<= (TOK_TABLE_OR_COL key) 20) (>= (TOK_TABLE_OR_COL key) 50))))) M) (TOK_TABREF bucketmapjoin6_2 S) (= (. (TOK_TABLE_OR_COL M) key) (. (TOK_TABLE_OR_COL S) key)))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_HINTLIST (TOK_HINT TOK_MAPJOIN (TOK_HINTARGLIST S))) (TOK_SELEXPR (TOK_FUNCTION WHEN (TOK_FUNCTION TOK_ISNOTNULL (. (TOK_TABLE_OR_COL M) key)) (. (TOK_TABLE_OR_COL M) key) (. (TOK_TABLE_OR_COL S) key)) key) (TOK_SELEXPR (. (TOK_TABLE_OR_COL M) value) Mvalue) (TOK_SELEXPR (. (TOK_TABLE_OR_COL S) value) Svalue)))) subq2) (= (. (TOK_TABLE_OR_COL subq2) key) (. (TOK_TABLE_OR_COL L) key)))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_HINTLIST (TOK_HINT TOK_MAPJOIN (TOK_HINTARGLIST L))) (TOK_SELEXPR TOK_ALLCOLREF)))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + subq2:m:bucketmapjoin6_1 + TableScan + alias: bucketmapjoin6_1 + Filter Operator + predicate: + expr: ((key <= 20) and (key >= 50)) + type: boolean + Filter Operator + predicate: + expr: ((key <= 20) and (key >= 50)) + type: boolean + Select Operator + expressions: + expr: key + type: int + expr: value + type: string + outputColumnNames: _col0, _col1 + Common Join Operator + condition map: + Outer Join 0 to 1 + condition expressions: + 0 {_col0} {_col1} + 1 {key} {value} + handleSkewJoin: false + keys: + 0 [Column[_col0]] + 1 [Column[key]] + outputColumnNames: _col0, _col1, _col2, _col3 + Position of Big Table: 0 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: int + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col2, _col3 + Select Operator + expressions: + expr: CASE WHEN (_col0 is not null) THEN (_col0) ELSE (_col2) END + type: int + expr: _col1 + type: string + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col2 + Common Join Operator + condition map: + Outer Join 0 to 1 + condition expressions: + 0 {key} {value} + 1 {_col0} {_col1} {_col2} + handleSkewJoin: false + keys: + 0 [Column[key]] + 1 [Column[_col0]] + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Position of Big Table: 1 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: int + expr: _col3 + type: string + expr: _col4 + type: string + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: int + expr: _col3 + type: string + expr: _col4 + type: string + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + Local Work: + Map Reduce Local Work + Alias -> Map Local Tables: + l + Fetch Operator + limit: -1 + subq2:s + Fetch Operator + limit: -1 + Alias -> Map Local Operator Tree: + l + TableScan + alias: l + Common Join Operator + condition map: + Outer Join 0 to 1 + condition expressions: + 0 {key} {value} + 1 {_col0} {_col1} {_col2} + handleSkewJoin: false + keys: + 0 [Column[key]] + 1 [Column[_col0]] + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Position of Big Table: 1 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: int + expr: _col3 + type: string + expr: _col4 + type: string + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: int + expr: _col3 + type: string + expr: _col4 + type: string + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + subq2:s + TableScan + alias: s + Common Join Operator + condition map: + Outer Join 0 to 1 + condition expressions: + 0 {_col0} {_col1} + 1 {key} {value} + handleSkewJoin: false + keys: + 0 [Column[_col0]] + 1 [Column[key]] + outputColumnNames: _col0, _col1, _col2, _col3 + Position of Big Table: 0 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: int + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col2, _col3 + Select Operator + expressions: + expr: CASE WHEN (_col0 is not null) THEN (_col0) ELSE (_col2) END + type: int + expr: _col1 + type: string + expr: _col3 + type: string + outputColumnNames: _col0, _col1, _col2 + Common Join Operator + condition map: + Outer Join 0 to 1 + condition expressions: + 0 {key} {value} + 1 {_col0} {_col1} {_col2} + handleSkewJoin: false + keys: + 0 [Column[key]] + 1 [Column[_col0]] + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Position of Big Table: 1 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: int + expr: _col3 + type: string + expr: _col4 + type: string + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Select Operator + expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: int + expr: _col3 + type: string + expr: _col4 + type: string + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + + Stage: Stage-0 + Fetch Operator + limit: -1 + + +PREHOOK: query: select /*+ MAPJOIN(L) */ * from bucketmapjoin6_3 L +full outer join +( +select /*+ MAPJOIN(S) */ +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 and key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +on subq2.key = L.key +PREHOOK: type: QUERY +PREHOOK: Input: default@bucketmapjoin6_1 +PREHOOK: Input: default@bucketmapjoin6_3 +PREHOOK: Input: default@bucketmapjoin6_2 +PREHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_20-14-30_025_2652209251810224345/10000 +POSTHOOK: query: select /*+ MAPJOIN(L) */ * from bucketmapjoin6_3 L +full outer join +( +select /*+ MAPJOIN(S) */ +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 and key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +on subq2.key = L.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@bucketmapjoin6_1 +POSTHOOK: Input: default@bucketmapjoin6_3 +POSTHOOK: Input: default@bucketmapjoin6_2 +POSTHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_20-14-30_025_2652209251810224345/10000 +PREHOOK: query: select * from +( +select +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 or key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key +PREHOOK: type: QUERY +PREHOOK: Input: default@bucketmapjoin6_1 +PREHOOK: Input: default@bucketmapjoin6_3 +PREHOOK: Input: default@bucketmapjoin6_2 +PREHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_20-14-36_919_2261983707258835332/10000 +POSTHOOK: query: select * from +( +select +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 or key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@bucketmapjoin6_1 +POSTHOOK: Input: default@bucketmapjoin6_3 +POSTHOOK: Input: default@bucketmapjoin6_2 +POSTHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_20-14-36_919_2261983707258835332/10000 +0 val_0 NULL NULL NULL +0 val_0 NULL NULL NULL +0 val_0 NULL NULL NULL +2 val_2 NULL NULL NULL +4 val_4 NULL NULL NULL +5 val_5 NULL NULL NULL +5 val_5 NULL NULL NULL +5 val_5 NULL NULL NULL +8 val_8 NULL NULL NULL +9 val_9 NULL NULL NULL +10 val_10 NULL NULL NULL +11 val_11 NULL 11 val_11 +12 val_12 NULL 12 val_12 +12 val_12 NULL 12 val_12 +12 val_12 NULL 12 val_12 +12 val_12 NULL 12 val_12 +NULL NULL NULL 15 val_15 +NULL NULL NULL 15 val_15 +17 val_17 NULL 17 val_17 +18 val_18 NULL 18 val_18 +18 val_18 NULL 18 val_18 +18 val_18 NULL 18 val_18 +18 val_18 NULL 18 val_18 +19 val_19 NULL 19 val_19 +20 val_20 NULL 20 val_20 +24 NULL val_24 24 val_24 +24 NULL val_24 24 val_24 +24 NULL val_24 24 val_24 +24 NULL val_24 24 val_24 +26 NULL val_26 26 val_26 +26 NULL val_26 26 val_26 +26 NULL val_26 26 val_26 +26 NULL val_26 26 val_26 +27 NULL val_27 27 val_27 +28 NULL val_28 28 val_28 +30 NULL val_30 NULL NULL +33 NULL val_33 NULL NULL +34 NULL val_34 NULL NULL +35 NULL val_35 NULL NULL +35 NULL val_35 NULL NULL +35 NULL val_35 NULL NULL +37 NULL val_37 NULL NULL +37 NULL val_37 NULL NULL +41 NULL val_41 NULL NULL +42 NULL val_42 NULL NULL +42 NULL val_42 NULL NULL +43 NULL val_43 NULL NULL +44 NULL val_44 NULL NULL +47 NULL val_47 NULL NULL +51 val_51 NULL NULL NULL +51 val_51 NULL NULL NULL +53 val_53 NULL NULL NULL +54 val_54 NULL NULL NULL +57 val_57 NULL NULL NULL +58 val_58 NULL NULL NULL +58 val_58 NULL NULL NULL +64 val_64 NULL NULL NULL +65 val_65 NULL NULL NULL +66 val_66 NULL NULL NULL +67 val_67 NULL NULL NULL +67 val_67 NULL NULL NULL +69 val_69 NULL NULL NULL +70 val_70 NULL NULL NULL +70 val_70 NULL NULL NULL +70 val_70 NULL NULL NULL +72 val_72 NULL NULL NULL +72 val_72 NULL NULL NULL +74 val_74 NULL NULL NULL +76 val_76 NULL NULL NULL +76 val_76 NULL NULL NULL +77 val_77 NULL NULL NULL +78 val_78 NULL NULL NULL +80 val_80 NULL NULL NULL +82 val_82 NULL NULL NULL +83 val_83 NULL NULL NULL +83 val_83 NULL NULL NULL +84 val_84 NULL NULL NULL +84 val_84 NULL NULL NULL +85 val_85 NULL NULL NULL +86 val_86 NULL NULL NULL +87 val_87 NULL NULL NULL +90 val_90 NULL NULL NULL +90 val_90 NULL NULL NULL +90 val_90 NULL NULL NULL +92 val_92 NULL NULL NULL +95 val_95 NULL NULL NULL +95 val_95 NULL NULL NULL +96 val_96 NULL NULL NULL +97 val_97 NULL NULL NULL +97 val_97 NULL NULL NULL +98 val_98 NULL NULL NULL +98 val_98 NULL NULL NULL +PREHOOK: query: select * from +( +select +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 or key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key +PREHOOK: type: QUERY +PREHOOK: Input: default@bucketmapjoin6_1 +PREHOOK: Input: default@bucketmapjoin6_3 +PREHOOK: Input: default@bucketmapjoin6_2 +PREHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_20-14-50_872_7156619324692641587/10000 +POSTHOOK: query: select * from +( +select +CASE +WHEN M.key is not null THEN M.key +ELSE S.key +END as key, +M.value as Mvalue, S.value as Svalue from +(select * from bucketmapjoin6_1 where key <= 20 or key >= 50 ) M full outer join bucketmapjoin6_2 S on +M.key = S.key +) subq2 +full outer join +bucketmapjoin6_3 L +on subq2.key = L.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@bucketmapjoin6_1 +POSTHOOK: Input: default@bucketmapjoin6_3 +POSTHOOK: Input: default@bucketmapjoin6_2 +POSTHOOK: Output: file:/Users/heyongqiang/Documents/workspace/Hive-Test/build/ql/scratchdir/hive_2010-03-08_20-14-50_872_7156619324692641587/10000 +0 val_0 NULL NULL NULL +0 val_0 NULL NULL NULL +0 val_0 NULL NULL NULL +2 val_2 NULL NULL NULL +4 val_4 NULL NULL NULL +5 val_5 NULL NULL NULL +5 val_5 NULL NULL NULL +5 val_5 NULL NULL NULL +8 val_8 NULL NULL NULL +9 val_9 NULL NULL NULL +10 val_10 NULL NULL NULL +11 val_11 NULL 11 val_11 +12 val_12 NULL 12 val_12 +12 val_12 NULL 12 val_12 +12 val_12 NULL 12 val_12 +12 val_12 NULL 12 val_12 +NULL NULL NULL 15 val_15 +NULL NULL NULL 15 val_15 +17 val_17 NULL 17 val_17 +18 val_18 NULL 18 val_18 +18 val_18 NULL 18 val_18 +18 val_18 NULL 18 val_18 +18 val_18 NULL 18 val_18 +19 val_19 NULL 19 val_19 +20 val_20 NULL 20 val_20 +24 NULL val_24 24 val_24 +24 NULL val_24 24 val_24 +24 NULL val_24 24 val_24 +24 NULL val_24 24 val_24 +26 NULL val_26 26 val_26 +26 NULL val_26 26 val_26 +26 NULL val_26 26 val_26 +26 NULL val_26 26 val_26 +27 NULL val_27 27 val_27 +28 NULL val_28 28 val_28 +30 NULL val_30 NULL NULL +33 NULL val_33 NULL NULL +34 NULL val_34 NULL NULL +35 NULL val_35 NULL NULL +35 NULL val_35 NULL NULL +35 NULL val_35 NULL NULL +37 NULL val_37 NULL NULL +37 NULL val_37 NULL NULL +41 NULL val_41 NULL NULL +42 NULL val_42 NULL NULL +42 NULL val_42 NULL NULL +43 NULL val_43 NULL NULL +44 NULL val_44 NULL NULL +47 NULL val_47 NULL NULL +51 val_51 NULL NULL NULL +51 val_51 NULL NULL NULL +53 val_53 NULL NULL NULL +54 val_54 NULL NULL NULL +57 val_57 NULL NULL NULL +58 val_58 NULL NULL NULL +58 val_58 NULL NULL NULL +64 val_64 NULL NULL NULL +65 val_65 NULL NULL NULL +66 val_66 NULL NULL NULL +67 val_67 NULL NULL NULL +67 val_67 NULL NULL NULL +69 val_69 NULL NULL NULL +70 val_70 NULL NULL NULL +70 val_70 NULL NULL NULL +70 val_70 NULL NULL NULL +72 val_72 NULL NULL NULL +72 val_72 NULL NULL NULL +74 val_74 NULL NULL NULL +76 val_76 NULL NULL NULL +76 val_76 NULL NULL NULL +77 val_77 NULL NULL NULL +78 val_78 NULL NULL NULL +80 val_80 NULL NULL NULL +82 val_82 NULL NULL NULL +83 val_83 NULL NULL NULL +83 val_83 NULL NULL NULL +84 val_84 NULL NULL NULL +84 val_84 NULL NULL NULL +85 val_85 NULL NULL NULL +86 val_86 NULL NULL NULL +87 val_87 NULL NULL NULL +90 val_90 NULL NULL NULL +90 val_90 NULL NULL NULL +90 val_90 NULL NULL NULL +92 val_92 NULL NULL NULL +95 val_95 NULL NULL NULL +95 val_95 NULL NULL NULL +96 val_96 NULL NULL NULL +97 val_97 NULL NULL NULL +97 val_97 NULL NULL NULL +98 val_98 NULL NULL NULL +98 val_98 NULL NULL NULL +PREHOOK: query: drop table bucketmapjoin6_3 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table bucketmapjoin6_3 +POSTHOOK: type: DROPTABLE +POSTHOOK: Output: default@bucketmapjoin6_3 +PREHOOK: query: drop table bucketmapjoin6_2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table bucketmapjoin6_2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Output: default@bucketmapjoin6_2 +PREHOOK: query: drop table bucketmapjoin6_1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table bucketmapjoin6_1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Output: default@bucketmapjoin6_1