[
https://issues.apache.org/jira/browse/HIVE-7232?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14032106#comment-14032106
]
Navis commented on HIVE-7232:
-----------------------------
Fail of subquery_in.q in HIVE-5771 seemed not caused by HIVE-4867 but strongly
related with it because HIVE-4867 have (intentionally) broken internal
assumption on keys/values of RS. With constant propagation optimizer,
subquery_in.q is making different keys for each aliases of join, which seemed
not valid.
{code}
-- sq_1
Reduce Output Operator
key expressions: _col1 (type: int)
sort order: ++
Map-reduce partition columns: _col1 (type: int)
{code}
and
{code}
-- others
Reduce Output Operator
key expressions: _col0 (type: int), _col1 (type: int)
sort order: ++
Map-reduce partition columns: _col0 (type: int), _col1 (type: int)
{code}
> ReduceSink is emitting NULL keys due to failed keyEval
> ------------------------------------------------------
>
> Key: HIVE-7232
> URL: https://issues.apache.org/jira/browse/HIVE-7232
> Project: Hive
> Issue Type: Bug
> Components: Query Processor
> Affects Versions: 0.14.0
> Reporter: Gopal V
> Assignee: Navis
>
> After HIVE-4867 has been merged in, some queries have exhibited a very weird
> skew towards NULL keys emitted from the ReduceSinkOperator.
> Added extra logging to print expr.column() in ExprNodeColumnEvaluator & in
> reduce sink.
> {code}
> 2014-06-14 00:37:19,186 INFO [TezChild]
> org.apache.hadoop.hive.ql.exec.ReduceSinkOperator:
> numDistributionKeys = 1 {null --> ExprNodeColumnEvaluator(_col10)}
> key_row={"reducesinkkey0":442}
> {code}
> {code}
> HiveKey firstKey = toHiveKey(cachedKeys[0], tag, null);
> int distKeyLength = firstKey.getDistKeyLength();
> if(distKeyLength <= 1) {
> StringBuffer x1 = new StringBuffer();
> x1.append("numDistributionKeys = "+ numDistributionKeys + "\n");
> for (int i = 0; i < numDistributionKeys; i++) {
> x1.append(cachedKeys[0][i] + " --> " + keyEval[i] + "\n");
> }
> x1.append("key_row="+ SerDeUtils.getJSONString(row,
> keyObjectInspector));
> LOG.info("GOPAL: " + x1.toString());
> }
> {code}
> The query is tpc-h query5, with extra NULL checks just to be sure.
> {code}
> ELECT n_name,
> sum(l_extendedprice * (1 - l_discount)) AS revenue
> FROM customer,
> orders,
> lineitem,
> supplier,
> nation,
> region
> WHERE c_custkey = o_custkey
> AND l_orderkey = o_orderkey
> AND l_suppkey = s_suppkey
> AND c_nationkey = s_nationkey
> AND s_nationkey = n_nationkey
> AND n_regionkey = r_regionkey
> AND r_name = 'ASIA'
> AND o_orderdate >= '1994-01-01'
> AND o_orderdate < '1995-01-01'
> and l_orderkey is not null
> and c_custkey is not null
> and l_suppkey is not null
> and c_nationkey is not null
> and s_nationkey is not null
> and n_regionkey is not null
> GROUP BY n_name
> ORDER BY revenue DESC;
> {code}
> The reducer which has the issue has the following plan
> {code}
> Reducer 3
> Reduce Operator Tree:
> Join Operator
> condition map:
> Inner Join 0 to 1
> condition expressions:
> 0 {KEY.reducesinkkey0} {VALUE._col2}
> 1 {VALUE._col0} {KEY.reducesinkkey0} {VALUE._col3}
> outputColumnNames: _col0, _col3, _col10, _col11, _col14
> Statistics: Num rows: 183333344 Data size: 95229140992 Basic
> stats: COMPLETE Column stats: NONE
> Reduce Output Operator
> key expressions: _col10 (type: int)
> sort order: +
> Map-reduce partition columns: _col10 (type: int)
> Statistics: Num rows: 183333344 Data size: 95229140992
> Basic stats: COMPLETE Column stats: NONE
> value expressions: _col0 (type: int), _col3 (type: int),
> _col11 (type: int), _col14 (type: string)
> {code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)