diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 1838300247..76b10cb3c1 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -642,6 +642,7 @@ minillaplocal.query.files=\ materialized_view_rewrite_part_2.q,\ materialized_view_rewrite_ssb.q,\ materialized_view_rewrite_ssb_2.q,\ + materialized_view_rewrite_window.q,\ mapjoin_decimal.q,\ mapjoin_hint.q,\ mapjoin_emit_interval.q,\ diff --git a/ql/src/test/queries/clientpositive/materialized_view_rewrite_window.q b/ql/src/test/queries/clientpositive/materialized_view_rewrite_window.q new file mode 100644 index 0000000000..01b7ceaa51 --- /dev/null +++ b/ql/src/test/queries/clientpositive/materialized_view_rewrite_window.q @@ -0,0 +1,172 @@ +SET hive.cli.errors.ignore=true; +SET hive.support.concurrency=true; +SET hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +SET metastore.strict.managed.tables=true; +SET hive.default.fileformat=textfile; +SET hive.default.fileformat.managed=orc; +SET metastore.create.as.acid=true; +SET hive.groupby.position.alias=true; + +drop database if exists arc_view cascade; +create database arc_view; +use arc_view; + +create table wealth (name string, net_worth decimal(15,3), watches string) TBLPROPERTIES ('transactional'='true'); +insert into wealth values ('solomon', 2000000000.00, 'simpsons'),('midas', 1000000000.00, 'super bowl'),('midas', 1000000000.00, 'scream'),('midas', 1000000000.00, 'scream2'),('midas', 1000000000.00, 'scream3'); +create table tv_view_data (program string, total_views bigint) TBLPROPERTIES ('transactional'='true'); +insert into tv_view_data values ('simpsons', 1300000), ('bbt',2700000), ('super bowl',15000000); + +explain cbo +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile; + +create materialized view mv_tv_view_data_av1 stored as orc TBLPROPERTIES ('transactional'='true') as +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile; + +explain cbo +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile; + +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile; + +insert into tv_view_data values ('scream', 20000000); + +set hive.materializedview.rebuild.incremental=false; + +explain +alter materialized view mv_tv_view_data_av1 rebuild; + +alter materialized view mv_tv_view_data_av1 rebuild; + +explain cbo +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile; + +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile; + +insert into tv_view_data values ('scream2', 30000000); + +set hive.materializedview.rebuild.incremental=true; + +explain +alter materialized view mv_tv_view_data_av1 rebuild; + +alter materialized view mv_tv_view_data_av1 rebuild; + +explain cbo +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile; + +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile; + +drop materialized view mv_tv_view_data_av1; + +create materialized view mv_tv_view_data_av2 stored as orc TBLPROPERTIES ('transactional'='true') as +select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data; + +insert into tv_view_data values ('scream3', 40000000); + +select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data; + +explain +alter materialized view mv_tv_view_data_av2 rebuild; + +alter materialized view mv_tv_view_data_av2 rebuild; + +select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data; + +drop materialized view mv_tv_view_data_av2; diff --git a/ql/src/test/queries/clientpositive/perf/mv_query67.q b/ql/src/test/queries/clientpositive/perf/mv_query67.q index 61b5ce9da6..7c6c94c271 100644 --- a/ql/src/test/queries/clientpositive/perf/mv_query67.q +++ b/ql/src/test/queries/clientpositive/perf/mv_query67.q @@ -196,3 +196,212 @@ order by i_category ,sumsales ,rk limit 100; + +DROP MATERIALIZED VIEW `my_materialized_view_n100`; + + + + +CREATE MATERIALIZED VIEW `my_materialized_view_n101` AS +select i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy, s_store_id, coalesce(ss_sales_price*ss_quantity,0) sumsales +from store_sales, date_dim, store, item +where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11; + +explain cbo +select * +from +(select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category order by sumsales desc) rk + from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,coalesce(ss_sales_price*ss_quantity,0) sumsales + from store_sales + ,date_dim + ,store + ,item + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11) dw1 +) dw2 +order by i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rk +limit 100; + +DROP MATERIALIZED VIEW `my_materialized_view_n101`; + + + +CREATE MATERIALIZED VIEW `my_materialized_view_n102` AS +select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category order by sumsales desc) rk + from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,coalesce(ss_sales_price*ss_quantity,0) sumsales + from store_sales + ,date_dim + ,store + ,item + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11) dw1; + +explain cbo +select * +from +(select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category order by sumsales desc) rk + from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,coalesce(ss_sales_price*ss_quantity,0) sumsales + from store_sales + ,date_dim + ,store + ,item + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11) dw1 +) dw2 +order by i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rk +limit 100; + +DROP MATERIALIZED VIEW `my_materialized_view_n102`; + + + +CREATE MATERIALIZED VIEW `my_materialized_view_n103` AS +select * +from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category order by sumsales desc) rk + from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sum(coalesce(ss_sales_price*ss_quantity,0)) sumsales + from store_sales + ,date_dim + ,store + ,item + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11 + group by i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy,s_store_id)dw1) dw2; + +explain cbo +select * +from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category order by sumsales desc) rk + from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sum(coalesce(ss_sales_price*ss_quantity,0)) sumsales + from store_sales + ,date_dim + ,store + ,item + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11 + group by i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy,s_store_id)dw1) dw2 +order by i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rk +limit 100; diff --git a/ql/src/test/results/clientpositive/llap/materialized_view_rewrite_window.q.out b/ql/src/test/results/clientpositive/llap/materialized_view_rewrite_window.q.out new file mode 100644 index 0000000000..fbc3fff2fc --- /dev/null +++ b/ql/src/test/results/clientpositive/llap/materialized_view_rewrite_window.q.out @@ -0,0 +1,1039 @@ +PREHOOK: query: drop database if exists arc_view cascade +PREHOOK: type: DROPDATABASE +POSTHOOK: query: drop database if exists arc_view cascade +POSTHOOK: type: DROPDATABASE +PREHOOK: query: create database arc_view +PREHOOK: type: CREATEDATABASE +PREHOOK: Output: database:arc_view +POSTHOOK: query: create database arc_view +POSTHOOK: type: CREATEDATABASE +POSTHOOK: Output: database:arc_view +PREHOOK: query: use arc_view +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:arc_view +POSTHOOK: query: use arc_view +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:arc_view +PREHOOK: query: create table wealth (name string, net_worth decimal(15,3), watches string) TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: arc_view@wealth +PREHOOK: Output: database:arc_view +POSTHOOK: query: create table wealth (name string, net_worth decimal(15,3), watches string) TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: arc_view@wealth +POSTHOOK: Output: database:arc_view +PREHOOK: query: insert into wealth values ('solomon', 2000000000.00, 'simpsons'),('midas', 1000000000.00, 'super bowl'),('midas', 1000000000.00, 'scream'),('midas', 1000000000.00, 'scream2'),('midas', 1000000000.00, 'scream3') +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: arc_view@wealth +POSTHOOK: query: insert into wealth values ('solomon', 2000000000.00, 'simpsons'),('midas', 1000000000.00, 'super bowl'),('midas', 1000000000.00, 'scream'),('midas', 1000000000.00, 'scream2'),('midas', 1000000000.00, 'scream3') +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: arc_view@wealth +POSTHOOK: Lineage: wealth.name SCRIPT [] +POSTHOOK: Lineage: wealth.net_worth SCRIPT [] +POSTHOOK: Lineage: wealth.watches SCRIPT [] +PREHOOK: query: create table tv_view_data (program string, total_views bigint) TBLPROPERTIES ('transactional'='true') +PREHOOK: type: CREATETABLE +PREHOOK: Output: arc_view@tv_view_data +PREHOOK: Output: database:arc_view +POSTHOOK: query: create table tv_view_data (program string, total_views bigint) TBLPROPERTIES ('transactional'='true') +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: arc_view@tv_view_data +POSTHOOK: Output: database:arc_view +PREHOOK: query: insert into tv_view_data values ('simpsons', 1300000), ('bbt',2700000), ('super bowl',15000000) +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: arc_view@tv_view_data +POSTHOOK: query: insert into tv_view_data values ('simpsons', 1300000), ('bbt',2700000), ('super bowl',15000000) +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: arc_view@tv_view_data +POSTHOOK: Lineage: tv_view_data.program SCRIPT [] +POSTHOOK: Lineage: tv_view_data.total_views SCRIPT [] +PREHOOK: query: explain cbo +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +PREHOOK: type: QUERY +PREHOOK: Input: arc_view@tv_view_data +PREHOOK: Input: arc_view@wealth +#### A masked pattern was here #### +POSTHOOK: query: explain cbo +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +POSTHOOK: type: QUERY +POSTHOOK: Input: arc_view@tv_view_data +POSTHOOK: Input: arc_view@wealth +#### A masked pattern was here #### +CBO PLAN: +HiveAggregate(group=[{2}], agg#0=[max($1)]) + HiveJoin(condition=[=($3, $0)], joinType=[inner], algorithm=[none], cost=[not available]) + HiveProject(watches=[$2]) + HiveFilter(condition=[IS NOT NULL($2)]) + HiveTableScan(table=[[arc_view, wealth]], table:alias=[t2]) + HiveProject(total_views=[$1], quartile=[$2], program=[$0]) + HiveFilter(condition=[IS NOT NULL($0)]) + HiveProject(program=[$0], total_views=[$1], _o__col6=[sum(CAST(1.5:DECIMAL(2, 1)):DECIMAL(9, 4)) OVER (PARTITION BY 0 ORDER BY $1 NULLS LAST RANGE BETWEEN CURRENT ROW AND 2147483647 PRECEDING)]) + HiveTableScan(table=[[arc_view, tv_view_data]], table:alias=[tv_view_data]) + +PREHOOK: query: create materialized view mv_tv_view_data_av1 stored as orc TBLPROPERTIES ('transactional'='true') as +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +PREHOOK: type: CREATE_MATERIALIZED_VIEW +PREHOOK: Input: arc_view@tv_view_data +PREHOOK: Input: arc_view@wealth +PREHOOK: Output: arc_view@mv_tv_view_data_av1 +PREHOOK: Output: database:arc_view +POSTHOOK: query: create materialized view mv_tv_view_data_av1 stored as orc TBLPROPERTIES ('transactional'='true') as +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +POSTHOOK: type: CREATE_MATERIALIZED_VIEW +POSTHOOK: Input: arc_view@tv_view_data +POSTHOOK: Input: arc_view@wealth +POSTHOOK: Output: arc_view@mv_tv_view_data_av1 +POSTHOOK: Output: database:arc_view +PREHOOK: query: explain cbo +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile +PREHOOK: type: QUERY +PREHOOK: Input: arc_view@mv_tv_view_data_av1 +PREHOOK: Input: arc_view@tv_view_data +PREHOOK: Input: arc_view@wealth +#### A masked pattern was here #### +POSTHOOK: query: explain cbo +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile +POSTHOOK: type: QUERY +POSTHOOK: Input: arc_view@mv_tv_view_data_av1 +POSTHOOK: Input: arc_view@tv_view_data +POSTHOOK: Input: arc_view@wealth +#### A masked pattern was here #### +CBO PLAN: +HiveSortLimit(sort0=[$0], dir0=[ASC]) + HiveProject(quartile=[$0], total=[$1]) + HiveTableScan(table=[[arc_view, mv_tv_view_data_av1]], table:alias=[arc_view.mv_tv_view_data_av1]) + +PREHOOK: query: select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile +PREHOOK: type: QUERY +PREHOOK: Input: arc_view@mv_tv_view_data_av1 +PREHOOK: Input: arc_view@tv_view_data +PREHOOK: Input: arc_view@wealth +#### A masked pattern was here #### +POSTHOOK: query: select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile +POSTHOOK: type: QUERY +POSTHOOK: Input: arc_view@mv_tv_view_data_av1 +POSTHOOK: Input: arc_view@tv_view_data +POSTHOOK: Input: arc_view@wealth +#### A masked pattern was here #### +1.5 1300000 +4.5 15000000 +PREHOOK: query: insert into tv_view_data values ('scream', 20000000) +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: arc_view@tv_view_data +POSTHOOK: query: insert into tv_view_data values ('scream', 20000000) +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: arc_view@tv_view_data +POSTHOOK: Lineage: tv_view_data.program SCRIPT [] +POSTHOOK: Lineage: tv_view_data.total_views SCRIPT [] +PREHOOK: query: explain +alter materialized view mv_tv_view_data_av1 rebuild +PREHOOK: type: QUERY +PREHOOK: Input: arc_view@tv_view_data +PREHOOK: Input: arc_view@wealth +PREHOOK: Output: arc_view@mv_tv_view_data_av1 +POSTHOOK: query: explain +alter materialized view mv_tv_view_data_av1 rebuild +POSTHOOK: type: QUERY +POSTHOOK: Input: arc_view@tv_view_data +POSTHOOK: Input: arc_view@wealth +POSTHOOK: Output: arc_view@mv_tv_view_data_av1 +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + Stage-4 depends on stages: Stage-3 + +STAGE PLANS: + Stage: Stage-1 + Tez +#### A masked pattern was here #### + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Reducer 5 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) + Reducer 5 <- Map 4 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: t2 + filterExpr: watches is not null (type: boolean) + Statistics: Num rows: 5 Data size: 460 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: watches is not null (type: boolean) + Statistics: Num rows: 5 Data size: 460 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: watches (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 5 Data size: 460 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: string) + null sort order: a + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 5 Data size: 460 Basic stats: COMPLETE Column stats: COMPLETE + Execution mode: vectorized, llap + LLAP IO: may be used (ACID table) + Map 4 + Map Operator Tree: + TableScan + alias: tv_view_data + Statistics: Num rows: 4 Data size: 396 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: 0 (type: int), total_views (type: bigint) + null sort order: az + sort order: ++ + Map-reduce partition columns: 0 (type: int) + Statistics: Num rows: 4 Data size: 396 Basic stats: COMPLETE Column stats: COMPLETE + value expressions: program (type: string) + Execution mode: vectorized, llap + LLAP IO: may be used (ACID table) + Reducer 2 + Execution mode: llap + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + keys: + 0 _col0 (type: string) + 1 _col2 (type: string) + outputColumnNames: _col1, _col2 + Statistics: Num rows: 4 Data size: 480 Basic stats: COMPLETE Column stats: COMPLETE + Group By Operator + aggregations: max(_col1) + keys: _col2 (type: decimal(12,1)) + minReductionHashAggr: 0.5 + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 240 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(12,1)) + null sort order: a + sort order: + + Map-reduce partition columns: _col0 (type: decimal(12,1)) + Statistics: Num rows: 2 Data size: 240 Basic stats: COMPLETE Column stats: COMPLETE + value expressions: _col1 (type: bigint) + Reducer 3 + Execution mode: llap + Reduce Operator Tree: + Group By Operator + aggregations: max(VALUE._col0) + keys: KEY._col0 (type: decimal(12,1)) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 240 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 240 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: arc_view.mv_tv_view_data_av1 + Write Type: INSERT + Select Operator + expressions: _col0 (type: decimal(12,1)), _col1 (type: bigint) + outputColumnNames: quartile, total + Statistics: Num rows: 2 Data size: 240 Basic stats: COMPLETE Column stats: COMPLETE + Group By Operator + aggregations: compute_stats(quartile, 'hll'), compute_stats(total, 'hll') + mode: complete + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 1056 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col0 (type: struct), _col1 (type: struct) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 1056 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 1056 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Reducer 5 + Execution mode: vectorized, llap + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), KEY.reducesinkkey1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 4 Data size: 1468 Basic stats: COMPLETE Column stats: COMPLETE + PTF Operator + Function definitions: + Input definition + input alias: ptf_0 + output shape: _col0: string, _col1: bigint + type: WINDOWING + Windowing table definition + input alias: ptf_1 + name: windowingtablefunction + order by: _col1 ASC NULLS LAST + partition by: 0 + raw input shape: + window functions: + window function definition + alias: sum_window_0 + arguments: CAST( 1.5 AS decimal(9,4)) + name: sum + window function: GenericUDAFSumHiveDecimal + window frame: RANGE PRECEDING(MAX)~CURRENT + Statistics: Num rows: 4 Data size: 1468 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: _col0 is not null (type: boolean) + Statistics: Num rows: 4 Data size: 1468 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col1 (type: bigint), sum_window_0 (type: decimal(12,1)), _col0 (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 4 Data size: 844 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col2 (type: string) + null sort order: a + sort order: + + Map-reduce partition columns: _col2 (type: string) + Statistics: Num rows: 4 Data size: 844 Basic stats: COMPLETE Column stats: COMPLETE + value expressions: _col0 (type: bigint), _col1 (type: decimal(12,1)) + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: arc_view.mv_tv_view_data_av1 + Write Type: INSERT + + Stage: Stage-3 + Stats Work + Basic Stats Work: + Column Stats Desc: + Columns: quartile, total + Column Types: decimal(12,1), bigint + Table: arc_view.mv_tv_view_data_av1 + + Stage: Stage-4 + Materialized View Update + name: arc_view.mv_tv_view_data_av1 + update creation metadata: true + +PREHOOK: query: alter materialized view mv_tv_view_data_av1 rebuild +PREHOOK: type: QUERY +PREHOOK: Input: arc_view@tv_view_data +PREHOOK: Input: arc_view@wealth +PREHOOK: Output: arc_view@mv_tv_view_data_av1 +POSTHOOK: query: alter materialized view mv_tv_view_data_av1 rebuild +POSTHOOK: type: QUERY +POSTHOOK: Input: arc_view@tv_view_data +POSTHOOK: Input: arc_view@wealth +POSTHOOK: Output: arc_view@mv_tv_view_data_av1 +POSTHOOK: Lineage: mv_tv_view_data_av1.quartile SCRIPT [(tv_view_data)tv_view_data.FieldSchema(name:program, type:string, comment:null), (tv_view_data)tv_view_data.FieldSchema(name:total_views, type:bigint, comment:null), ] +POSTHOOK: Lineage: mv_tv_view_data_av1.total EXPRESSION [(tv_view_data)tv_view_data.FieldSchema(name:total_views, type:bigint, comment:null), ] +PREHOOK: query: explain cbo +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile +PREHOOK: type: QUERY +PREHOOK: Input: arc_view@mv_tv_view_data_av1 +PREHOOK: Input: arc_view@tv_view_data +PREHOOK: Input: arc_view@wealth +#### A masked pattern was here #### +POSTHOOK: query: explain cbo +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile +POSTHOOK: type: QUERY +POSTHOOK: Input: arc_view@mv_tv_view_data_av1 +POSTHOOK: Input: arc_view@tv_view_data +POSTHOOK: Input: arc_view@wealth +#### A masked pattern was here #### +CBO PLAN: +HiveSortLimit(sort0=[$0], dir0=[ASC]) + HiveProject(quartile=[$0], total=[$1]) + HiveTableScan(table=[[arc_view, mv_tv_view_data_av1]], table:alias=[arc_view.mv_tv_view_data_av1]) + +PREHOOK: query: select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile +PREHOOK: type: QUERY +PREHOOK: Input: arc_view@mv_tv_view_data_av1 +PREHOOK: Input: arc_view@tv_view_data +PREHOOK: Input: arc_view@wealth +#### A masked pattern was here #### +POSTHOOK: query: select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile +POSTHOOK: type: QUERY +POSTHOOK: Input: arc_view@mv_tv_view_data_av1 +POSTHOOK: Input: arc_view@tv_view_data +POSTHOOK: Input: arc_view@wealth +#### A masked pattern was here #### +1.5 1300000 +4.5 15000000 +6.0 20000000 +PREHOOK: query: insert into tv_view_data values ('scream2', 30000000) +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: arc_view@tv_view_data +POSTHOOK: query: insert into tv_view_data values ('scream2', 30000000) +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: arc_view@tv_view_data +POSTHOOK: Lineage: tv_view_data.program SCRIPT [] +POSTHOOK: Lineage: tv_view_data.total_views SCRIPT [] +PREHOOK: query: explain +alter materialized view mv_tv_view_data_av1 rebuild +PREHOOK: type: QUERY +PREHOOK: Input: arc_view@tv_view_data +PREHOOK: Input: arc_view@wealth +PREHOOK: Output: arc_view@mv_tv_view_data_av1 +POSTHOOK: query: explain +alter materialized view mv_tv_view_data_av1 rebuild +POSTHOOK: type: QUERY +POSTHOOK: Input: arc_view@tv_view_data +POSTHOOK: Input: arc_view@wealth +POSTHOOK: Output: arc_view@mv_tv_view_data_av1 +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + Stage-4 depends on stages: Stage-3 + +STAGE PLANS: + Stage: Stage-1 + Tez +#### A masked pattern was here #### + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Reducer 5 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (SIMPLE_EDGE) + Reducer 5 <- Map 4 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: t2 + filterExpr: watches is not null (type: boolean) + Statistics: Num rows: 5 Data size: 460 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: watches is not null (type: boolean) + Statistics: Num rows: 5 Data size: 460 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: watches (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 5 Data size: 460 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: string) + null sort order: a + sort order: + + Map-reduce partition columns: _col0 (type: string) + Statistics: Num rows: 5 Data size: 460 Basic stats: COMPLETE Column stats: COMPLETE + Execution mode: vectorized, llap + LLAP IO: may be used (ACID table) + Map 4 + Map Operator Tree: + TableScan + alias: tv_view_data + Statistics: Num rows: 5 Data size: 495 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: 0 (type: int), total_views (type: bigint) + null sort order: az + sort order: ++ + Map-reduce partition columns: 0 (type: int) + Statistics: Num rows: 5 Data size: 495 Basic stats: COMPLETE Column stats: COMPLETE + value expressions: program (type: string) + Execution mode: vectorized, llap + LLAP IO: may be used (ACID table) + Reducer 2 + Execution mode: llap + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + keys: + 0 _col0 (type: string) + 1 _col2 (type: string) + outputColumnNames: _col1, _col2 + Statistics: Num rows: 5 Data size: 600 Basic stats: COMPLETE Column stats: COMPLETE + Group By Operator + aggregations: max(_col1) + keys: _col2 (type: decimal(12,1)) + minReductionHashAggr: 0.6 + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 240 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col0 (type: decimal(12,1)) + null sort order: a + sort order: + + Map-reduce partition columns: _col0 (type: decimal(12,1)) + Statistics: Num rows: 2 Data size: 240 Basic stats: COMPLETE Column stats: COMPLETE + value expressions: _col1 (type: bigint) + Reducer 3 + Execution mode: llap + Reduce Operator Tree: + Group By Operator + aggregations: max(VALUE._col0) + keys: KEY._col0 (type: decimal(12,1)) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 2 Data size: 240 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 2 Data size: 240 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: arc_view.mv_tv_view_data_av1 + Write Type: INSERT + Select Operator + expressions: _col0 (type: decimal(12,1)), _col1 (type: bigint) + outputColumnNames: quartile, total + Statistics: Num rows: 2 Data size: 240 Basic stats: COMPLETE Column stats: COMPLETE + Group By Operator + aggregations: compute_stats(quartile, 'hll'), compute_stats(total, 'hll') + mode: complete + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 1056 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col0 (type: struct), _col1 (type: struct) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 1056 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 1056 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Reducer 5 + Execution mode: vectorized, llap + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), KEY.reducesinkkey1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 5 Data size: 1835 Basic stats: COMPLETE Column stats: COMPLETE + PTF Operator + Function definitions: + Input definition + input alias: ptf_0 + output shape: _col0: string, _col1: bigint + type: WINDOWING + Windowing table definition + input alias: ptf_1 + name: windowingtablefunction + order by: _col1 ASC NULLS LAST + partition by: 0 + raw input shape: + window functions: + window function definition + alias: sum_window_0 + arguments: CAST( 1.5 AS decimal(9,4)) + name: sum + window function: GenericUDAFSumHiveDecimal + window frame: RANGE PRECEDING(MAX)~CURRENT + Statistics: Num rows: 5 Data size: 1835 Basic stats: COMPLETE Column stats: COMPLETE + Filter Operator + predicate: _col0 is not null (type: boolean) + Statistics: Num rows: 5 Data size: 1835 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col1 (type: bigint), sum_window_0 (type: decimal(12,1)), _col0 (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 5 Data size: 1055 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: _col2 (type: string) + null sort order: a + sort order: + + Map-reduce partition columns: _col2 (type: string) + Statistics: Num rows: 5 Data size: 1055 Basic stats: COMPLETE Column stats: COMPLETE + value expressions: _col0 (type: bigint), _col1 (type: decimal(12,1)) + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: arc_view.mv_tv_view_data_av1 + Write Type: INSERT + + Stage: Stage-3 + Stats Work + Basic Stats Work: + Column Stats Desc: + Columns: quartile, total + Column Types: decimal(12,1), bigint + Table: arc_view.mv_tv_view_data_av1 + + Stage: Stage-4 + Materialized View Update + name: arc_view.mv_tv_view_data_av1 + update creation metadata: true + +PREHOOK: query: alter materialized view mv_tv_view_data_av1 rebuild +PREHOOK: type: QUERY +PREHOOK: Input: arc_view@tv_view_data +PREHOOK: Input: arc_view@wealth +PREHOOK: Output: arc_view@mv_tv_view_data_av1 +POSTHOOK: query: alter materialized view mv_tv_view_data_av1 rebuild +POSTHOOK: type: QUERY +POSTHOOK: Input: arc_view@tv_view_data +POSTHOOK: Input: arc_view@wealth +POSTHOOK: Output: arc_view@mv_tv_view_data_av1 +POSTHOOK: Lineage: mv_tv_view_data_av1.quartile SCRIPT [(tv_view_data)tv_view_data.FieldSchema(name:program, type:string, comment:null), (tv_view_data)tv_view_data.FieldSchema(name:total_views, type:bigint, comment:null), ] +POSTHOOK: Lineage: mv_tv_view_data_av1.total EXPRESSION [(tv_view_data)tv_view_data.FieldSchema(name:total_views, type:bigint, comment:null), ] +PREHOOK: query: explain cbo +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile +PREHOOK: type: QUERY +PREHOOK: Input: arc_view@mv_tv_view_data_av1 +PREHOOK: Input: arc_view@tv_view_data +PREHOOK: Input: arc_view@wealth +#### A masked pattern was here #### +POSTHOOK: query: explain cbo +select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile +POSTHOOK: type: QUERY +POSTHOOK: Input: arc_view@mv_tv_view_data_av1 +POSTHOOK: Input: arc_view@tv_view_data +POSTHOOK: Input: arc_view@wealth +#### A masked pattern was here #### +CBO PLAN: +HiveSortLimit(sort0=[$0], dir0=[ASC]) + HiveProject(quartile=[$0], total=[$1]) + HiveTableScan(table=[[arc_view, mv_tv_view_data_av1]], table:alias=[arc_view.mv_tv_view_data_av1]) + +PREHOOK: query: select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile +PREHOOK: type: QUERY +PREHOOK: Input: arc_view@mv_tv_view_data_av1 +PREHOOK: Input: arc_view@tv_view_data +PREHOOK: Input: arc_view@wealth +#### A masked pattern was here #### +POSTHOOK: query: select + t.quartile, + max(t.total_views) total +from wealth t2, +(select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data) t +where t.program=t2.watches +group by quartile +order by quartile +POSTHOOK: type: QUERY +POSTHOOK: Input: arc_view@mv_tv_view_data_av1 +POSTHOOK: Input: arc_view@tv_view_data +POSTHOOK: Input: arc_view@wealth +#### A masked pattern was here #### +1.5 1300000 +4.5 15000000 +6.0 20000000 +7.5 30000000 +PREHOOK: query: drop materialized view mv_tv_view_data_av1 +PREHOOK: type: DROP_MATERIALIZED_VIEW +PREHOOK: Input: arc_view@mv_tv_view_data_av1 +PREHOOK: Output: arc_view@mv_tv_view_data_av1 +POSTHOOK: query: drop materialized view mv_tv_view_data_av1 +POSTHOOK: type: DROP_MATERIALIZED_VIEW +POSTHOOK: Input: arc_view@mv_tv_view_data_av1 +POSTHOOK: Output: arc_view@mv_tv_view_data_av1 +PREHOOK: query: create materialized view mv_tv_view_data_av2 stored as orc TBLPROPERTIES ('transactional'='true') as +select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data +PREHOOK: type: CREATE_MATERIALIZED_VIEW +PREHOOK: Input: arc_view@tv_view_data +PREHOOK: Output: arc_view@mv_tv_view_data_av2 +PREHOOK: Output: database:arc_view +POSTHOOK: query: create materialized view mv_tv_view_data_av2 stored as orc TBLPROPERTIES ('transactional'='true') as +select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data +POSTHOOK: type: CREATE_MATERIALIZED_VIEW +POSTHOOK: Input: arc_view@tv_view_data +POSTHOOK: Output: arc_view@mv_tv_view_data_av2 +POSTHOOK: Output: database:arc_view +PREHOOK: query: insert into tv_view_data values ('scream3', 40000000) +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: arc_view@tv_view_data +POSTHOOK: query: insert into tv_view_data values ('scream3', 40000000) +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: arc_view@tv_view_data +POSTHOOK: Lineage: tv_view_data.program SCRIPT [] +POSTHOOK: Lineage: tv_view_data.total_views SCRIPT [] +PREHOOK: query: select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data +PREHOOK: type: QUERY +PREHOOK: Input: arc_view@tv_view_data +#### A masked pattern was here #### +POSTHOOK: query: select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data +POSTHOOK: type: QUERY +POSTHOOK: Input: arc_view@tv_view_data +#### A masked pattern was here #### +1300000 1.5 simpsons +2700000 3.0 bbt +15000000 4.5 super bowl +20000000 6.0 scream +30000000 7.5 scream2 +40000000 9.0 scream3 +PREHOOK: query: explain +alter materialized view mv_tv_view_data_av2 rebuild +PREHOOK: type: QUERY +PREHOOK: Input: arc_view@tv_view_data +PREHOOK: Output: arc_view@mv_tv_view_data_av2 +POSTHOOK: query: explain +alter materialized view mv_tv_view_data_av2 rebuild +POSTHOOK: type: QUERY +POSTHOOK: Input: arc_view@tv_view_data +POSTHOOK: Output: arc_view@mv_tv_view_data_av2 +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-0 + Stage-4 depends on stages: Stage-3 + +STAGE PLANS: + Stage: Stage-1 + Tez +#### A masked pattern was here #### + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: tv_view_data + Statistics: Num rows: 6 Data size: 594 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + key expressions: 0 (type: int), total_views (type: bigint) + null sort order: az + sort order: ++ + Map-reduce partition columns: 0 (type: int) + Statistics: Num rows: 6 Data size: 594 Basic stats: COMPLETE Column stats: COMPLETE + value expressions: program (type: string) + Execution mode: vectorized, llap + LLAP IO: may be used (ACID table) + Reducer 2 + Execution mode: llap + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: string), KEY.reducesinkkey1 (type: bigint) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 6 Data size: 2202 Basic stats: COMPLETE Column stats: COMPLETE + PTF Operator + Function definitions: + Input definition + input alias: ptf_0 + output shape: _col0: string, _col1: bigint + type: WINDOWING + Windowing table definition + input alias: ptf_1 + name: windowingtablefunction + order by: _col1 ASC NULLS LAST + partition by: 0 + raw input shape: + window functions: + window function definition + alias: sum_window_0 + arguments: CAST( 1.5 AS decimal(9,4)) + name: sum + window function: GenericUDAFSumHiveDecimal + window frame: RANGE PRECEDING(MAX)~CURRENT + Statistics: Num rows: 6 Data size: 2202 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: _col1 (type: bigint), sum_window_0 (type: decimal(12,1)), _col0 (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 6 Data size: 1266 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 6 Data size: 1266 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: arc_view.mv_tv_view_data_av2 + Write Type: INSERT + Select Operator + expressions: _col0 (type: bigint), _col1 (type: decimal(12,1)), _col2 (type: string) + outputColumnNames: total_views, quartile, program + Statistics: Num rows: 6 Data size: 1266 Basic stats: COMPLETE Column stats: COMPLETE + Group By Operator + aggregations: compute_stats(total_views, 'hll'), compute_stats(quartile, 'hll'), compute_stats(program, 'hll') + minReductionHashAggr: 0.8333333 + mode: hash + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1 Data size: 1496 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + null sort order: + sort order: + Statistics: Num rows: 1 Data size: 1496 Basic stats: COMPLETE Column stats: COMPLETE + value expressions: _col0 (type: struct), _col1 (type: struct), _col2 (type: struct) + Reducer 3 + Execution mode: llap + Reduce Operator Tree: + Group By Operator + aggregations: compute_stats(VALUE._col0), compute_stats(VALUE._col1), compute_stats(VALUE._col2) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 1 Data size: 1528 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 1528 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-2 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + replace: false + table: + input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat + output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat + serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde + name: arc_view.mv_tv_view_data_av2 + Write Type: INSERT + + Stage: Stage-3 + Stats Work + Basic Stats Work: + Column Stats Desc: + Columns: total_views, quartile, program + Column Types: bigint, decimal(12,1), string + Table: arc_view.mv_tv_view_data_av2 + + Stage: Stage-4 + Materialized View Update + name: arc_view.mv_tv_view_data_av2 + update creation metadata: true + +PREHOOK: query: alter materialized view mv_tv_view_data_av2 rebuild +PREHOOK: type: QUERY +PREHOOK: Input: arc_view@tv_view_data +PREHOOK: Output: arc_view@mv_tv_view_data_av2 +POSTHOOK: query: alter materialized view mv_tv_view_data_av2 rebuild +POSTHOOK: type: QUERY +POSTHOOK: Input: arc_view@tv_view_data +POSTHOOK: Output: arc_view@mv_tv_view_data_av2 +POSTHOOK: Lineage: mv_tv_view_data_av2.program SIMPLE [(tv_view_data)tv_view_data.FieldSchema(name:program, type:string, comment:null), ] +POSTHOOK: Lineage: mv_tv_view_data_av2.quartile SCRIPT [(tv_view_data)tv_view_data.FieldSchema(name:program, type:string, comment:null), (tv_view_data)tv_view_data.FieldSchema(name:total_views, type:bigint, comment:null), ] +POSTHOOK: Lineage: mv_tv_view_data_av2.total_views SIMPLE [(tv_view_data)tv_view_data.FieldSchema(name:total_views, type:bigint, comment:null), ] +PREHOOK: query: select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data +PREHOOK: type: QUERY +PREHOOK: Input: arc_view@tv_view_data +#### A masked pattern was here #### +POSTHOOK: query: select + total_views `total_views`, + sum(cast(1.5 as decimal(9,4))) over (order by total_views) as quartile, + program +from tv_view_data +POSTHOOK: type: QUERY +POSTHOOK: Input: arc_view@tv_view_data +#### A masked pattern was here #### +1300000 1.5 simpsons +2700000 3.0 bbt +15000000 4.5 super bowl +20000000 6.0 scream +30000000 7.5 scream2 +40000000 9.0 scream3 +PREHOOK: query: drop materialized view mv_tv_view_data_av2 +PREHOOK: type: DROP_MATERIALIZED_VIEW +PREHOOK: Input: arc_view@mv_tv_view_data_av2 +PREHOOK: Output: arc_view@mv_tv_view_data_av2 +POSTHOOK: query: drop materialized view mv_tv_view_data_av2 +POSTHOOK: type: DROP_MATERIALIZED_VIEW +POSTHOOK: Input: arc_view@mv_tv_view_data_av2 +POSTHOOK: Output: arc_view@mv_tv_view_data_av2 diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/mv_query67.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/mv_query67.q.out index f70f1bd8d8..fe66be5547 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/mv_query67.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/mv_query67.q.out @@ -488,3 +488,506 @@ HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], sort4=[$4], sort5= HiveProject(i_item_sk=[$0], i_brand=[$8], i_class=[$10], i_category=[$12], i_product_name=[$21]) HiveTableScan(table=[[default, item]], table:alias=[item]) +PREHOOK: query: DROP MATERIALIZED VIEW `my_materialized_view_n100` +PREHOOK: type: DROP_MATERIALIZED_VIEW +PREHOOK: Input: default@my_materialized_view_n100 +PREHOOK: Output: default@my_materialized_view_n100 +POSTHOOK: query: DROP MATERIALIZED VIEW `my_materialized_view_n100` +POSTHOOK: type: DROP_MATERIALIZED_VIEW +POSTHOOK: Input: default@my_materialized_view_n100 +POSTHOOK: Output: default@my_materialized_view_n100 +PREHOOK: query: CREATE MATERIALIZED VIEW `my_materialized_view_n101` AS +select i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy, s_store_id, coalesce(ss_sales_price*ss_quantity,0) sumsales +from store_sales, date_dim, store, item +where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11 +PREHOOK: type: CREATE_MATERIALIZED_VIEW +PREHOOK: Input: default@date_dim +PREHOOK: Input: default@item +PREHOOK: Input: default@store +PREHOOK: Input: default@store_sales +PREHOOK: Output: database:default +PREHOOK: Output: default@my_materialized_view_n101 +POSTHOOK: query: CREATE MATERIALIZED VIEW `my_materialized_view_n101` AS +select i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy, s_store_id, coalesce(ss_sales_price*ss_quantity,0) sumsales +from store_sales, date_dim, store, item +where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11 +POSTHOOK: type: CREATE_MATERIALIZED_VIEW +POSTHOOK: Input: default@date_dim +POSTHOOK: Input: default@item +POSTHOOK: Input: default@store +POSTHOOK: Input: default@store_sales +POSTHOOK: Output: database:default +POSTHOOK: Output: default@my_materialized_view_n101 +PREHOOK: query: explain cbo +select * +from +(select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category order by sumsales desc) rk + from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,coalesce(ss_sales_price*ss_quantity,0) sumsales + from store_sales + ,date_dim + ,store + ,item + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11) dw1 +) dw2 +order by i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rk +limit 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@date_dim +PREHOOK: Input: default@item +PREHOOK: Input: default@my_materialized_view_n101 +PREHOOK: Input: default@store +PREHOOK: Input: default@store_sales +PREHOOK: Output: hdfs://### HDFS PATH ### +POSTHOOK: query: explain cbo +select * +from +(select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category order by sumsales desc) rk + from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,coalesce(ss_sales_price*ss_quantity,0) sumsales + from store_sales + ,date_dim + ,store + ,item + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11) dw1 +) dw2 +order by i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rk +limit 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@date_dim +POSTHOOK: Input: default@item +POSTHOOK: Input: default@my_materialized_view_n101 +POSTHOOK: Input: default@store +POSTHOOK: Input: default@store_sales +POSTHOOK: Output: hdfs://### HDFS PATH ### +CBO PLAN: +HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], sort4=[$4], sort5=[$5], sort6=[$6], sort7=[$7], sort8=[$8], sort9=[$9], dir0=[ASC], dir1=[ASC], dir2=[ASC], dir3=[ASC], dir4=[ASC], dir5=[ASC], dir6=[ASC], dir7=[ASC], dir8=[ASC], dir9=[ASC], fetch=[100]) + HiveProject(i_category=[$0], i_class=[$1], i_brand=[$2], i_product_name=[$3], d_year=[$4], d_qoy=[$5], d_moy=[$6], s_store_id=[CAST($7):VARCHAR(2147483647) CHARACTER SET "UTF-16LE" NOT NULL], sumsales=[$8], $f9=[rank() OVER (PARTITION BY $0 ORDER BY $8 DESC NULLS LAST ROWS BETWEEN 2147483647 FOLLOWING AND 2147483647 PRECEDING)]) + HiveTableScan(table=[[default, my_materialized_view_n101]], table:alias=[default.my_materialized_view_n101]) + +PREHOOK: query: DROP MATERIALIZED VIEW `my_materialized_view_n101` +PREHOOK: type: DROP_MATERIALIZED_VIEW +PREHOOK: Input: default@my_materialized_view_n101 +PREHOOK: Output: default@my_materialized_view_n101 +POSTHOOK: query: DROP MATERIALIZED VIEW `my_materialized_view_n101` +POSTHOOK: type: DROP_MATERIALIZED_VIEW +POSTHOOK: Input: default@my_materialized_view_n101 +POSTHOOK: Output: default@my_materialized_view_n101 +PREHOOK: query: CREATE MATERIALIZED VIEW `my_materialized_view_n102` AS +select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category order by sumsales desc) rk + from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,coalesce(ss_sales_price*ss_quantity,0) sumsales + from store_sales + ,date_dim + ,store + ,item + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11) dw1 +PREHOOK: type: CREATE_MATERIALIZED_VIEW +PREHOOK: Input: default@date_dim +PREHOOK: Input: default@item +PREHOOK: Input: default@store +PREHOOK: Input: default@store_sales +PREHOOK: Output: database:default +PREHOOK: Output: default@my_materialized_view_n102 +POSTHOOK: query: CREATE MATERIALIZED VIEW `my_materialized_view_n102` AS +select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category order by sumsales desc) rk + from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,coalesce(ss_sales_price*ss_quantity,0) sumsales + from store_sales + ,date_dim + ,store + ,item + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11) dw1 +POSTHOOK: type: CREATE_MATERIALIZED_VIEW +POSTHOOK: Input: default@date_dim +POSTHOOK: Input: default@item +POSTHOOK: Input: default@store +POSTHOOK: Input: default@store_sales +POSTHOOK: Output: database:default +POSTHOOK: Output: default@my_materialized_view_n102 +PREHOOK: query: explain cbo +select * +from +(select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category order by sumsales desc) rk + from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,coalesce(ss_sales_price*ss_quantity,0) sumsales + from store_sales + ,date_dim + ,store + ,item + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11) dw1 +) dw2 +order by i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rk +limit 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@date_dim +PREHOOK: Input: default@item +PREHOOK: Input: default@my_materialized_view_n102 +PREHOOK: Input: default@store +PREHOOK: Input: default@store_sales +PREHOOK: Output: hdfs://### HDFS PATH ### +POSTHOOK: query: explain cbo +select * +from +(select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category order by sumsales desc) rk + from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,coalesce(ss_sales_price*ss_quantity,0) sumsales + from store_sales + ,date_dim + ,store + ,item + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11) dw1 +) dw2 +order by i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rk +limit 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@date_dim +POSTHOOK: Input: default@item +POSTHOOK: Input: default@my_materialized_view_n102 +POSTHOOK: Input: default@store +POSTHOOK: Input: default@store_sales +POSTHOOK: Output: hdfs://### HDFS PATH ### +CBO PLAN: +HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], sort4=[$4], sort5=[$5], sort6=[$6], sort7=[$7], sort8=[$8], sort9=[$9], dir0=[ASC], dir1=[ASC], dir2=[ASC], dir3=[ASC], dir4=[ASC], dir5=[ASC], dir6=[ASC], dir7=[ASC], dir8=[ASC], dir9=[ASC], fetch=[100]) + HiveProject(i_category=[$0], i_class=[$1], i_brand=[$2], i_product_name=[$3], d_year=[$4], d_qoy=[$5], d_moy=[$6], s_store_id=[CAST($7):VARCHAR(2147483647) CHARACTER SET "UTF-16LE" NOT NULL], sumsales=[$8], $f9=[rank() OVER (PARTITION BY $0 ORDER BY $8 DESC NULLS LAST ROWS BETWEEN 2147483647 FOLLOWING AND 2147483647 PRECEDING)]) + HiveTableScan(table=[[default, my_materialized_view_n102]], table:alias=[default.my_materialized_view_n102]) + +PREHOOK: query: DROP MATERIALIZED VIEW `my_materialized_view_n102` +PREHOOK: type: DROP_MATERIALIZED_VIEW +PREHOOK: Input: default@my_materialized_view_n102 +PREHOOK: Output: default@my_materialized_view_n102 +POSTHOOK: query: DROP MATERIALIZED VIEW `my_materialized_view_n102` +POSTHOOK: type: DROP_MATERIALIZED_VIEW +POSTHOOK: Input: default@my_materialized_view_n102 +POSTHOOK: Output: default@my_materialized_view_n102 +PREHOOK: query: CREATE MATERIALIZED VIEW `my_materialized_view_n103` AS +select * +from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category order by sumsales desc) rk + from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sum(coalesce(ss_sales_price*ss_quantity,0)) sumsales + from store_sales + ,date_dim + ,store + ,item + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11 + group by i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy,s_store_id)dw1) dw2 +PREHOOK: type: CREATE_MATERIALIZED_VIEW +PREHOOK: Input: default@date_dim +PREHOOK: Input: default@item +PREHOOK: Input: default@store +PREHOOK: Input: default@store_sales +PREHOOK: Output: database:default +PREHOOK: Output: default@my_materialized_view_n103 +POSTHOOK: query: CREATE MATERIALIZED VIEW `my_materialized_view_n103` AS +select * +from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category order by sumsales desc) rk + from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sum(coalesce(ss_sales_price*ss_quantity,0)) sumsales + from store_sales + ,date_dim + ,store + ,item + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11 + group by i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy,s_store_id)dw1) dw2 +POSTHOOK: type: CREATE_MATERIALIZED_VIEW +POSTHOOK: Input: default@date_dim +POSTHOOK: Input: default@item +POSTHOOK: Input: default@store +POSTHOOK: Input: default@store_sales +POSTHOOK: Output: database:default +POSTHOOK: Output: default@my_materialized_view_n103 +PREHOOK: query: explain cbo +select * +from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category order by sumsales desc) rk + from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sum(coalesce(ss_sales_price*ss_quantity,0)) sumsales + from store_sales + ,date_dim + ,store + ,item + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11 + group by i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy,s_store_id)dw1) dw2 +order by i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rk +limit 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@date_dim +PREHOOK: Input: default@item +PREHOOK: Input: default@my_materialized_view_n103 +PREHOOK: Input: default@store +PREHOOK: Input: default@store_sales +PREHOOK: Output: hdfs://### HDFS PATH ### +POSTHOOK: query: explain cbo +select * +from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category order by sumsales desc) rk + from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sum(coalesce(ss_sales_price*ss_quantity,0)) sumsales + from store_sales + ,date_dim + ,store + ,item + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1212 and 1212+11 + group by i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy,s_store_id)dw1) dw2 +order by i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rk +limit 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@date_dim +POSTHOOK: Input: default@item +POSTHOOK: Input: default@my_materialized_view_n103 +POSTHOOK: Input: default@store +POSTHOOK: Input: default@store_sales +POSTHOOK: Output: hdfs://### HDFS PATH ### +CBO PLAN: +HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], sort4=[$4], sort5=[$5], sort6=[$6], sort7=[$7], sort8=[$8], sort9=[$9], dir0=[ASC], dir1=[ASC], dir2=[ASC], dir3=[ASC], dir4=[ASC], dir5=[ASC], dir6=[ASC], dir7=[ASC], dir8=[ASC], dir9=[ASC], fetch=[100]) + HiveProject(i_category=[$0], i_class=[$1], i_brand=[$2], i_product_name=[$3], d_year=[$4], d_qoy=[$5], d_moy=[$6], s_store_id=[CAST($7):VARCHAR(2147483647) CHARACTER SET "UTF-16LE" NOT NULL], sumsales=[$8], $f9=[rank() OVER (PARTITION BY $0 ORDER BY $8 DESC NULLS LAST ROWS BETWEEN 2147483647 FOLLOWING AND 2147483647 PRECEDING)]) + HiveTableScan(table=[[default, my_materialized_view_n103]], table:alias=[default.my_materialized_view_n103]) +