[ https://issues.apache.org/jira/browse/HIVE-7991?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mostafa Mokhtar updated HIVE-7991: ---------------------------------- Description: This loop results in adding the parent twice incase of a 3 way join of store_sales x date_dim x store {code} for (int pos = 0; pos < parents.size(); pos++) { ReduceSinkOperator parent = (ReduceSinkOperator) jop.getParentOperators().get(pos); Statistics parentStats = parent.getStatistics(); List<ExprNodeDesc> keyExprs = parent.getConf().getKeyCols(); // Parent RS may have column statistics from multiple parents. // Populate table alias to row count map, this will be used later to // scale down/up column statistics based on new row count // NOTE: JOIN with UNION as parent of RS will not have table alias // propagated properly. UNION operator does not propagate the table // alias of subqueries properly to expression nodes. Hence union20.q // will have wrong number of rows. Set<String> tableAliases = StatsUtils.getAllTableAlias(parent.getColumnExprMap()); for (String tabAlias : tableAliases) { rowCountParents.put(tabAlias, parentStats.getNumRows()); } {code} In the first join we have rowCountParents with {store_sales=120464862, date_dim=36524} which is correct. For the second join result rowCountParents ends up with {store=212, store_sales=120464862, date_dim=120464862} where it should be {store=212, store_sales=120464862, date_dim=36524}. The result of this is that computeNewRowCount ends up multiplying row count of store_sales x store_sales which makes the number of rows really high and eventually over flow. Plan snippet : {code} Map 1 Map Operator Tree: TableScan alias: store_sales filterExpr: (((ss_sold_date_sk is not null and ss_store_sk is not null) and ss_item_sk is not null) and ss_sold_date BETWEEN '1999-06-01' AND '2000-05-31') (type: boolean) Statistics: Num rows: 110339135 Data size: 4817453454 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator predicate: ((ss_sold_date_sk is not null and ss_store_sk is not null) and ss_item_sk is not null) (type: boolean) Statistics: Num rows: 107740258 Data size: 2124353556 Basic stats: COMPLETE Column stats: COMPLETE Map Join Operator condition map: Inner Join 0 to 1 condition expressions: 0 {ss_sold_date_sk} {ss_item_sk} {ss_store_sk} {ss_quantity} {ss_sales_price} {ss_sold_date} 1 {d_date_sk} {d_month_seq} {d_year} {d_moy} {d_qoy} keys: 0 ss_sold_date_sk (type: int) 1 d_date_sk (type: int) outputColumnNames: _col0, _col2, _col7, _col10, _col13, _col23, _col27, _col30, _col33, _col35, _col37 input vertices: 1 Map 6 Statistics: Num rows: 120464862 Data size: 26984129088 Basic stats: COMPLETE Column stats: COMPLETE Map Join Operator condition map: Inner Join 0 to 1 condition expressions: 0 {_col0} {_col2} {_col7} {_col10} {_col13} {_col23} {_col27} {_col30} {_col33} {_col35} {_col37} 1 {s_store_sk} {s_store_id} keys: 0 _col7 (type: int) 1 s_store_sk (type: int) outputColumnNames: _col0, _col2, _col7, _col10, _col13, _col23, _col27, _col30, _col33, _col35, _col37, _col58, _col59 input vertices: 1 Map 5 Statistics: Num rows: 17886616227069518 Data size: 5866810122478801920 Basic stats: COMPLETE Column stats: COMPLETE Map Join Operator condition map: Inner Join 0 to 1 condition expressions: 0 {_col0} {_col2} {_col7} {_col10} {_col13} {_col23} {_col27} {_col30} {_col33} {_col35} {_col37} {_col58} {_col59} 1 {i_item_sk} {i_brand} {i_class} {i_category} {i_product_name} keys: 0 _col2 (type: int) 1 i_item_sk (type: int) outputColumnNames: _col0, _col2, _col7, _col10, _col13, _col23, _col27, _col30, _col33, _col35, _col37, _col58, _col59, _col90, _col98, _col100, _col102, _col111 input vertices: 1 Map 7 Statistics: Num rows: -9223372036854775808 Data size: 0 Basic stats: NONE Column stats: COMPLETE Filter Operator predicate: (((((_col0 = _col27) and (_col2 = _col90)) and (_col7 = _col58)) and _col30 BETWEEN 1193 AND 1204) and _col23 BETWEEN '1999-06-01' AND '2000-05-31') (type: boolean) Statistics: Num rows: -9223372036854775808 Data size: 0 Basic stats: NONE Column stats: COMPLETE Select Operator expressions: _col102 (type: string), _col100 (type: string), _col98 (type: string), _col111 (type: string), _col33 (type: int), _col37 (type: int), _col35 (type: int), _col59 (type: string), _col13 (type: float), _col10 (type: int) outputColumnNames: _col102, _col100, _col98, _col111, _col33, _col37, _col35, _col59, _col13, _col10 Statistics: Num rows: -9223372036854775808 Data size: 0 Basic stats: NONE Column stats: COMPLETE Group By Operator aggregations: sum(COALESCE((_col13 * _col10),0)) keys: _col102 (type: string), _col100 (type: string), _col98 (type: string), _col111 (type: string), _col33 (type: int), _col37 (type: int), _col35 (type: int), _col59 (type: string), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9 Statistics: Num rows: -9223372036854775808 Data size: 0 Basic stats: NONE Column stats: COMPLETE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: int), _col5 (type: int), _col6 (type: int), _col7 (type: string), _col8 (type: string) sort order: +++++++++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: int), _col5 (type: int), _col6 (type: int), _col7 (type: string), _col8 (type: string) Statistics: Num rows: -9223372036854775808 Data size: 0 Basic stats: NONE Column stats: COMPLETE value expressions: _col9 (type: double) {code} was: For queries with rollup and cube the number of rows calculation in GroupByStatsRule should be multiplied by number of elements in grouping set. A side effect of this defect is that reducers will under estimate data size and end up with small number of tasks which negatively affects query runtime. {code} // since we do not know if hash-aggregation will be enabled or disabled // at runtime we will assume that map-side group by does not do any // reduction.hence no group by rule will be applied // map-side grouping set present. if grouping set is present then // multiply the number of rows by number of elements in grouping set if (gop.getConf().isGroupingSetsPresent()) { int multiplier = gop.getConf().getListGroupingSets().size(); // take into account the map-side parallelism as well, default is 1 multiplier *= mapSideParallelism; newNumRows = multiplier * stats.getNumRows(); long dataSize = multiplier * stats.getDataSize(); stats.setNumRows(newNumRows); stats.setDataSize(dataSize); for (ColStatistics cs : colStats) { if (cs != null) { long oldNumNulls = cs.getNumNulls(); long newNumNulls = multiplier * oldNumNulls; cs.setNumNulls(newNumNulls); } } } else { // map side no grouping set newNumRows = stats.getNumRows() * mapSideParallelism; updateStats(stats, newNumRows, true); } {code} Query {code} 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 store_sales.ss_sold_date_sk=date_dim.d_date_sk and store_sales.ss_item_sk=item.i_item_sk and store_sales.ss_store_sk = store.s_store_sk and d_month_seq between 1193 and 1193+11 and ss_sold_date between '1999-06-01' and '2000-05-31' group by i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy,s_store_id with rollup)dw1) dw2 where rk <= 100 order by i_category ,i_class ,i_brand ,i_product_name ,d_year ,d_qoy ,d_moy ,s_store_id ,sumsales ,rk limit 100 {code} Plan generated , note the data size for Map 1 {code} STAGE DEPENDENCIES: Stage-1 is a root stage Stage-0 depends on stages: Stage-1 STAGE PLANS: Stage: Stage-1 Tez Edges: Map 1 <- Map 5 (BROADCAST_EDGE), Map 6 (BROADCAST_EDGE), Map 7 (BROADCAST_EDGE) Reducer 2 <- Map 1 (SIMPLE_EDGE) Reducer 3 <- Reducer 2 (SIMPLE_EDGE) Reducer 4 <- Reducer 3 (SIMPLE_EDGE) DagName: mmokhtar_20140903154848_7cf1519f-e95c-47ab-9f10-6d2130cd5734:1 Vertices: Map 1 Map Operator Tree: TableScan alias: store_sales filterExpr: (((ss_sold_date_sk is not null and ss_store_sk is not null) and ss_item_sk is not null) and ss_sold_date BETWEEN '1999-06-01' AND '2000-05-31') (type: boolean) Statistics: Num rows: 110339135 Data size: 4817453454 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: ((ss_sold_date_sk is not null and ss_store_sk is not null) and ss_item_sk is not null) (type: boolean) Statistics: Num rows: 13792392 Data size: 602181687 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 condition expressions: 0 {ss_sold_date_sk} {ss_item_sk} {ss_store_sk} {ss_quantity} {ss_sales_price} {ss_sold_date} 1 {d_date_sk} {d_month_seq} {d_year} {d_moy} {d_qoy} keys: 0 ss_sold_date_sk (type: int) 1 d_date_sk (type: int) outputColumnNames: _col0, _col2, _col7, _col10, _col13, _col23, _col27, _col30, _col33, _col35, _col37 input vertices: 1 Map 6 Statistics: Num rows: 15171632 Data size: 662399872 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 condition expressions: 0 {_col0} {_col2} {_col7} {_col10} {_col13} {_col23} {_col27} {_col30} {_col33} {_col35} {_col37} 1 {s_store_sk} {s_store_id} keys: 0 _col7 (type: int) 1 s_store_sk (type: int) outputColumnNames: _col0, _col2, _col7, _col10, _col13, _col23, _col27, _col30, _col33, _col35, _col37, _col58, _col59 input vertices: 1 Map 5 Statistics: Num rows: 16688796 Data size: 728639872 Basic stats: COMPLETE Column stats: NONE Map Join Operator condition map: Inner Join 0 to 1 condition expressions: 0 {_col0} {_col2} {_col7} {_col10} {_col13} {_col23} {_col27} {_col30} {_col33} {_col35} {_col37} {_col58} {_col59} 1 {i_item_sk} {i_brand} {i_class} {i_category} {i_product_name} keys: 0 _col2 (type: int) 1 i_item_sk (type: int) outputColumnNames: _col0, _col2, _col7, _col10, _col13, _col23, _col27, _col30, _col33, _col35, _col37, _col58, _col59, _col90, _col98, _col100, _col102, _col111 input vertices: 1 Map 7 Statistics: Num rows: 18357676 Data size: 801503872 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (((((_col0 = _col27) and (_col2 = _col90)) and (_col7 = _col58)) and _col30 BETWEEN 1193 AND 1204) and _col23 BETWEEN '1999-06-01' AND '2000-05-31') (type: boolean) Statistics: Num rows: 573677 Data size: 25046979 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col102 (type: string), _col100 (type: string), _col98 (type: string), _col111 (type: string), _col33 (type: int), _col37 (type: int), _col35 (type: int), _col59 (type: string), _col13 (type: float), _col10 (type: int) outputColumnNames: _col102, _col100, _col98, _col111, _col33, _col37, _col35, _col59, _col13, _col10 Statistics: Num rows: 573677 Data size: 25046979 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: sum(COALESCE((_col13 * _col10),0)) keys: _col102 (type: string), _col100 (type: string), _col98 (type: string), _col111 (type: string), _col33 (type: int), _col37 (type: int), _col35 (type: int), _col59 (type: string), '0' (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9 Statistics: Num rows: 573677 Data size: 25046979 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: int), _col5 (type: int), _col6 (type: int), _col7 (type: string), _col8 (type: string) sort order: +++++++++ Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: int), _col5 (type: int), _col6 (type: int), _col7 (type: string), _col8 (type: string) Statistics: Num rows: 573677 Data size: 25046979 Basic stats: COMPLETE Column stats: NONE value expressions: _col9 (type: double) Map 5 Map Operator Tree: TableScan alias: store filterExpr: s_store_sk is not null (type: boolean) Statistics: Num rows: 212 Data size: 405680 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator predicate: s_store_sk is not null (type: boolean) Statistics: Num rows: 212 Data size: 22048 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: s_store_sk (type: int) sort order: + Map-reduce partition columns: s_store_sk (type: int) Statistics: Num rows: 212 Data size: 22048 Basic stats: COMPLETE Column stats: COMPLETE value expressions: s_store_id (type: string) Execution mode: vectorized Map 6 Map Operator Tree: TableScan alias: date_dim filterExpr: (d_date_sk is not null and d_month_seq BETWEEN 1193 AND 1204) (type: boolean) Statistics: Num rows: 73049 Data size: 81741831 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator predicate: (d_date_sk is not null and d_month_seq BETWEEN 1193 AND 1204) (type: boolean) Statistics: Num rows: 36524 Data size: 730480 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: d_date_sk (type: int) sort order: + Map-reduce partition columns: d_date_sk (type: int) Statistics: Num rows: 36524 Data size: 730480 Basic stats: COMPLETE Column stats: COMPLETE value expressions: d_month_seq (type: int), d_year (type: int), d_moy (type: int), d_qoy (type: int) Execution mode: vectorized Map 7 Map Operator Tree: TableScan alias: item filterExpr: i_item_sk is not null (type: boolean) Statistics: Num rows: 48000 Data size: 68732712 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator predicate: i_item_sk is not null (type: boolean) Statistics: Num rows: 48000 Data size: 18672000 Basic stats: COMPLETE Column stats: COMPLETE Reduce Output Operator key expressions: i_item_sk (type: int) sort order: + Map-reduce partition columns: i_item_sk (type: int) Statistics: Num rows: 48000 Data size: 18672000 Basic stats: COMPLETE Column stats: COMPLETE value expressions: i_brand (type: string), i_class (type: string), i_category (type: string), i_product_name (type: string) Execution mode: vectorized Reducer 2 Reduce Operator Tree: Group By Operator aggregations: sum(VALUE._col0) keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string), KEY._col3 (type: string), KEY._col4 (type: int), KEY._col5 (type: int), KEY._col6 (type: int), KEY._col7 (type: string), KEY._col8 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9 Statistics: Num rows: 286838 Data size: 12523467 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: int), _col5 (type: int), _col6 (type: int), _col7 (type: string), _col9 (type: double) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 Statistics: Num rows: 286838 Data size: 12523467 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col8 (type: double) sort order: +- Map-reduce partition columns: _col0 (type: string) Statistics: Num rows: 286838 Data size: 12523467 Basic stats: COMPLETE Column stats: NONE TopN Hash Memory Usage: 0.04 value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: int), _col5 (type: int), _col6 (type: int), _col7 (type: string), _col8 (type: double) Reducer 3 Reduce Operator Tree: Extract Statistics: Num rows: 286838 Data size: 12523467 Basic stats: COMPLETE Column stats: NONE PTF Operator Statistics: Num rows: 286838 Data size: 12523467 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (_wcol0 <= 100) (type: boolean) Statistics: Num rows: 95612 Data size: 4174459 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: int), _col5 (type: int), _col6 (type: int), _col7 (type: string), _col8 (type: double), _wcol0 (type: int) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9 Statistics: Num rows: 95612 Data size: 4174459 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: int), _col5 (type: int), _col6 (type: int), _col7 (type: string), _col8 (type: double), _col9 (type: int) sort order: ++++++++++ Statistics: Num rows: 95612 Data size: 4174459 Basic stats: COMPLETE Column stats: NONE TopN Hash Memory Usage: 0.04 Reducer 4 Reduce Operator Tree: Select Operator expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: string), KEY.reducesinkkey3 (type: string), KEY.reducesinkkey4 (type: int), KEY.reducesinkkey5 (type: int), KEY.reducesinkkey6 (type: int), KEY.reducesinkkey7 (type: string), KEY.reducesinkkey8 (type: double), KEY.reducesinkkey9 (type: int) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9 Statistics: Num rows: 95612 Data size: 4174459 Basic stats: COMPLETE Column stats: NONE Limit Number of rows: 100 Statistics: Num rows: 100 Data size: 4300 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false Statistics: Num rows: 100 Data size: 4300 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Execution mode: vectorized Stage: Stage-0 Fetch Operator limit: 100 Processor Tree: ListSink {code} > Incorrect calculation of number of rows in JoinStatsRule.process results in > overflow > ------------------------------------------------------------------------------------ > > Key: HIVE-7991 > URL: https://issues.apache.org/jira/browse/HIVE-7991 > Project: Hive > Issue Type: Bug > Components: Statistics > Affects Versions: 0.13.1 > Reporter: Mostafa Mokhtar > Assignee: Prasanth J > Labels: performance > Fix For: 0.14.0 > > > This loop results in adding the parent twice incase of a 3 way join of > store_sales x date_dim x store > {code} > for (int pos = 0; pos < parents.size(); pos++) { > ReduceSinkOperator parent = (ReduceSinkOperator) > jop.getParentOperators().get(pos); > Statistics parentStats = parent.getStatistics(); > List<ExprNodeDesc> keyExprs = parent.getConf().getKeyCols(); > // Parent RS may have column statistics from multiple parents. > // Populate table alias to row count map, this will be used later > to > // scale down/up column statistics based on new row count > // NOTE: JOIN with UNION as parent of RS will not have table alias > // propagated properly. UNION operator does not propagate the > table > // alias of subqueries properly to expression nodes. Hence > union20.q > // will have wrong number of rows. > Set<String> tableAliases = > StatsUtils.getAllTableAlias(parent.getColumnExprMap()); > for (String tabAlias : tableAliases) { > rowCountParents.put(tabAlias, parentStats.getNumRows()); > } > {code} > In the first join we have rowCountParents with {store_sales=120464862, > date_dim=36524} which is correct. > For the second join result rowCountParents ends up with {store=212, > store_sales=120464862, date_dim=120464862} where it should be {store=212, > store_sales=120464862, date_dim=36524}. > The result of this is that computeNewRowCount ends up multiplying row count > of store_sales x store_sales which makes the number of rows really high and > eventually over flow. > Plan snippet : > {code} > Map 1 > Map Operator Tree: > TableScan > alias: store_sales > filterExpr: (((ss_sold_date_sk is not null and ss_store_sk > is not null) and ss_item_sk is not null) and ss_sold_date BETWEEN > '1999-06-01' AND '2000-05-31') (type: boolean) > Statistics: Num rows: 110339135 Data size: 4817453454 Basic > stats: COMPLETE Column stats: COMPLETE > Filter Operator > predicate: ((ss_sold_date_sk is not null and ss_store_sk > is not null) and ss_item_sk is not null) (type: boolean) > Statistics: Num rows: 107740258 Data size: 2124353556 > Basic stats: COMPLETE Column stats: COMPLETE > Map Join Operator > condition map: > Inner Join 0 to 1 > condition expressions: > 0 {ss_sold_date_sk} {ss_item_sk} {ss_store_sk} > {ss_quantity} {ss_sales_price} {ss_sold_date} > 1 {d_date_sk} {d_month_seq} {d_year} {d_moy} {d_qoy} > keys: > 0 ss_sold_date_sk (type: int) > 1 d_date_sk (type: int) > outputColumnNames: _col0, _col2, _col7, _col10, _col13, > _col23, _col27, _col30, _col33, _col35, _col37 > input vertices: > 1 Map 6 > Statistics: Num rows: 120464862 Data size: 26984129088 > Basic stats: COMPLETE Column stats: COMPLETE > Map Join Operator > condition map: > Inner Join 0 to 1 > condition expressions: > 0 {_col0} {_col2} {_col7} {_col10} {_col13} > {_col23} {_col27} {_col30} {_col33} {_col35} {_col37} > 1 {s_store_sk} {s_store_id} > keys: > 0 _col7 (type: int) > 1 s_store_sk (type: int) > outputColumnNames: _col0, _col2, _col7, _col10, > _col13, _col23, _col27, _col30, _col33, _col35, _col37, _col58, _col59 > input vertices: > 1 Map 5 > Statistics: Num rows: 17886616227069518 Data size: > 5866810122478801920 Basic stats: COMPLETE Column stats: COMPLETE > Map Join Operator > condition map: > Inner Join 0 to 1 > condition expressions: > 0 {_col0} {_col2} {_col7} {_col10} {_col13} > {_col23} {_col27} {_col30} {_col33} {_col35} {_col37} {_col58} {_col59} > 1 {i_item_sk} {i_brand} {i_class} {i_category} > {i_product_name} > keys: > 0 _col2 (type: int) > 1 i_item_sk (type: int) > outputColumnNames: _col0, _col2, _col7, _col10, > _col13, _col23, _col27, _col30, _col33, _col35, _col37, _col58, _col59, > _col90, _col98, _col100, _col102, _col111 > input vertices: > 1 Map 7 > Statistics: Num rows: -9223372036854775808 Data > size: 0 Basic stats: NONE Column stats: COMPLETE > Filter Operator > predicate: (((((_col0 = _col27) and (_col2 = > _col90)) and (_col7 = _col58)) and _col30 BETWEEN 1193 AND 1204) and _col23 > BETWEEN '1999-06-01' AND '2000-05-31') (type: boolean) > Statistics: Num rows: -9223372036854775808 Data > size: 0 Basic stats: NONE Column stats: COMPLETE > Select Operator > expressions: _col102 (type: string), _col100 > (type: string), _col98 (type: string), _col111 (type: string), _col33 (type: > int), _col37 (type: int), _col35 (type: int), _col59 (type: string), _col13 > (type: float), _col10 (type: int) > outputColumnNames: _col102, _col100, _col98, > _col111, _col33, _col37, _col35, _col59, _col13, _col10 > Statistics: Num rows: -9223372036854775808 Data > size: 0 Basic stats: NONE Column stats: COMPLETE > Group By Operator > aggregations: sum(COALESCE((_col13 * > _col10),0)) > keys: _col102 (type: string), _col100 (type: > string), _col98 (type: string), _col111 (type: string), _col33 (type: int), > _col37 (type: int), _col35 (type: int), _col59 (type: string), '0' (type: > string) > mode: hash > outputColumnNames: _col0, _col1, _col2, > _col3, _col4, _col5, _col6, _col7, _col8, _col9 > Statistics: Num rows: -9223372036854775808 > Data size: 0 Basic stats: NONE Column stats: COMPLETE > Reduce Output Operator > key expressions: _col0 (type: string), > _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 > (type: int), _col5 (type: int), _col6 (type: int), _col7 (type: string), > _col8 (type: string) > sort order: +++++++++ > Map-reduce partition columns: _col0 (type: > string), _col1 (type: string), _col2 (type: string), _col3 (type: string), > _col4 (type: int), _col5 (type: int), _col6 (type: int), _col7 (type: > string), _col8 (type: string) > Statistics: Num rows: -9223372036854775808 > Data size: 0 Basic stats: NONE Column stats: COMPLETE > value expressions: _col9 (type: double) > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)