diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/spark/GenSparkUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/spark/GenSparkUtils.java index d0a82afee6ea32542d18beae21885ce509dcb238..ac641fdca278632fd09ed333bfd4a71a3b1919ed 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/spark/GenSparkUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/spark/GenSparkUtils.java @@ -157,8 +157,18 @@ public MapWork createMapWork(GenSparkProcContext context, Operator root, Preconditions.checkArgument(root instanceof TableScanOperator, "AssertionError: expected root to be an instance of TableScanOperator, but was " + root.getClass().getName()); - String alias = ((TableScanOperator) root).getConf().getAlias(); - + String alias = null; + if (context.parseContext != null && context.parseContext.getTopOps() != null) { + for (String currentAlias : context.parseContext.getTopOps().keySet()) { + Operator currOp = context.parseContext.getTopOps().get(currentAlias); + if (currOp == root) { + alias = currentAlias; + break; + } + } + } + if (alias == null) + alias = ((TableScanOperator) root).getConf().getAlias(); if (!deferSetup) { setupMapWork(mapWork, context, partitions,(TableScanOperator) root, alias); } diff --git a/ql/src/test/queries/clientpositive/explaindenpendencydiffengs.q b/ql/src/test/queries/clientpositive/explaindenpendencydiffengs.q new file mode 100644 index 0000000000000000000000000000000000000000..cc0cea6fe42b6be1b1848375e98707321b39d7d9 --- /dev/null +++ b/ql/src/test/queries/clientpositive/explaindenpendencydiffengs.q @@ -0,0 +1,11 @@ +drop table if exists dependtest; +create table dependtest (a string) partitioned by (b int); +insert into table dependtest partition (b=1) values ("hello"); +create view viewtest as select * from dependtest; +set hive.execution.engine=spark; +explain dependency select count(*) from viewtest; +set hive.execution.engine=mr; +explain dependency select count(*) from viewtest; +drop view viewtest; +drop table dependtest; + diff --git a/ql/src/test/results/clientpositive/explaindenpendencydiffengs.q.out b/ql/src/test/results/clientpositive/explaindenpendencydiffengs.q.out new file mode 100644 index 0000000000000000000000000000000000000000..42aa755cf46d4c8ae5c7b127bc66a13dc9d0b250 --- /dev/null +++ b/ql/src/test/results/clientpositive/explaindenpendencydiffengs.q.out @@ -0,0 +1,57 @@ +PREHOOK: query: drop table if exists dependtest +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists dependtest +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table dependtest (a string) partitioned by (b int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@dependtest +POSTHOOK: query: create table dependtest (a string) partitioned by (b int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@dependtest +PREHOOK: query: insert into table dependtest partition (b=1) values ("hello") +PREHOOK: type: QUERY +PREHOOK: Output: default@dependtest@b=1 +POSTHOOK: query: insert into table dependtest partition (b=1) values ("hello") +POSTHOOK: type: QUERY +POSTHOOK: Output: default@dependtest@b=1 +POSTHOOK: Lineage: dependtest PARTITION(b=1).a SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: create view viewtest as select * from dependtest +PREHOOK: type: CREATEVIEW +PREHOOK: Input: default@dependtest +PREHOOK: Output: database:default +PREHOOK: Output: default@viewtest +POSTHOOK: query: create view viewtest as select * from dependtest +POSTHOOK: type: CREATEVIEW +POSTHOOK: Input: default@dependtest +POSTHOOK: Output: database:default +POSTHOOK: Output: default@viewtest +POSTHOOK: Lineage: viewtest.a SIMPLE [(dependtest)dependtest.FieldSchema(name:a, type:string, comment:null), ] +POSTHOOK: Lineage: viewtest.b SIMPLE [(dependtest)dependtest.FieldSchema(name:b, type:int, comment:null), ] +PREHOOK: query: explain dependency select count(*) from viewtest +PREHOOK: type: QUERY +POSTHOOK: query: explain dependency select count(*) from viewtest +POSTHOOK: type: QUERY +{"input_tables":[{"tablename":"default@viewtest","tabletype":"VIRTUAL_VIEW"},{"tablename":"default@dependtest","tabletype":"MANAGED_TABLE","tableParents":"[default@viewtest]"}],"input_partitions":[]} +PREHOOK: query: explain dependency select count(*) from viewtest +PREHOOK: type: QUERY +POSTHOOK: query: explain dependency select count(*) from viewtest +POSTHOOK: type: QUERY +{"input_tables":[{"tablename":"default@viewtest","tabletype":"VIRTUAL_VIEW"},{"tablename":"default@dependtest","tabletype":"MANAGED_TABLE","tableParents":"[default@viewtest]"}],"input_partitions":[]} +PREHOOK: query: drop view viewtest +PREHOOK: type: DROPVIEW +PREHOOK: Input: default@viewtest +PREHOOK: Output: default@viewtest +POSTHOOK: query: drop view viewtest +POSTHOOK: type: DROPVIEW +POSTHOOK: Input: default@viewtest +POSTHOOK: Output: default@viewtest +PREHOOK: query: drop table dependtest +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@dependtest +PREHOOK: Output: default@dependtest +POSTHOOK: query: drop table dependtest +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@dependtest +POSTHOOK: Output: default@dependtest