hive-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hive QA (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HIVE-7991) Incorrect calculation of number of rows in JoinStatsRule.process results in overflow
Date Sat, 06 Sep 2014 09:47:28 GMT

    [ https://issues.apache.org/jira/browse/HIVE-7991?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14124407#comment-14124407
] 

Hive QA commented on HIVE-7991:
-------------------------------



{color:red}Overall{color}: -1 at least one tests failed

Here are the results of testing the latest attachment:
https://issues.apache.org/jira/secure/attachment/12666876/HIVE-7991.1.patch

{color:red}ERROR:{color} -1 due to 4 failed/errored test(s), 6171 tests executed
*Failed tests:*
{noformat}
org.apache.hadoop.hive.cli.TestCliDriver.testCliDriver_union20
org.apache.hadoop.hive.ql.txn.compactor.TestCompactor.testStatsAfterCompactionPartTbl
org.apache.hive.hcatalog.pig.TestHCatLoader.testReadDataPrimitiveTypes
org.apache.hive.jdbc.miniHS2.TestHiveServer2.testConnection
{noformat}

Test results: http://ec2-174-129-184-35.compute-1.amazonaws.com/jenkins/job/PreCommit-HIVE-TRUNK-Build/665/testReport
Console output: http://ec2-174-129-184-35.compute-1.amazonaws.com/jenkins/job/PreCommit-HIVE-TRUNK-Build/665/console
Test logs: http://ec2-174-129-184-35.compute-1.amazonaws.com/logs/PreCommit-HIVE-TRUNK-Build-665/

Messages:
{noformat}
Executing org.apache.hive.ptest.execution.PrepPhase
Executing org.apache.hive.ptest.execution.ExecutionPhase
Executing org.apache.hive.ptest.execution.ReportingPhase
Tests exited with: TestsFailedException: 4 tests failed
{noformat}

This message is automatically generated.

ATTACHMENT ID: 12666876

> 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: Sub-task
>          Components: Statistics
>    Affects Versions: 0.13.1
>            Reporter: Mostafa Mokhtar
>            Assignee: Prasanth J
>            Priority: Minor
>         Attachments: HIVE-7991.1.patch
>
>
> 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)

Mime
View raw message