You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Phabricator (JIRA)" <ji...@apache.org> on 2013/02/21 04:22:14 UTC
[jira] [Updated] (HIVE-4002) Fetch task aggregation for simple
group by query
[ https://issues.apache.org/jira/browse/HIVE-4002?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Phabricator updated HIVE-4002:
------------------------------
Attachment: HIVE-4002.D8739.1.patch
navis requested code review of "HIVE-4002 [jira] Fetch task aggregation for simple group by query".
Reviewers: JIRA
HIVE-4002 Fetch task aggregation for simple group by query
Aggregation queries with no group-by clause (for example, select count from src) executes final aggregation in single reduce task. But it's too small even for single reducer because the most of UDAF generates just single row for map aggregation. If final fetch task can aggregate outputs from map tasks, shuffling time can be removed.
This optimization transforms operator tree something like,
TS-FIL-SEL-GBY1-RS-GBY2-SEL-FS + FETCH-TASK
into
TS-FIL-SEL-GBY1-FS + FETCH-TASK(GBY2-SEL-LS)
With the patch, time taken for auto_join_filters.q test reduced to 6 min (10 min, before).
TEST PLAN
EMPTY
REVISION DETAIL
https://reviews.facebook.net/D8739
AFFECTED FILES
common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java
ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java
ql/src/java/org/apache/hadoop/hive/ql/exec/HashTableSinkOperator.java
ql/src/java/org/apache/hadoop/hive/ql/exec/JoinOperator.java
ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java
ql/src/java/org/apache/hadoop/hive/ql/exec/UDTFOperator.java
ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java
ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchAggregation.java
ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchOptimizer.java
ql/src/java/org/apache/hadoop/hive/ql/parse/ParseContext.java
ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java
ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDescUtils.java
ql/src/test/queries/clientpositive/fetch_aggregation.q
ql/src/test/results/clientpositive/fetch_aggregation.q.out
ql/src/test/results/compiler/plan/groupby1.q.xml
ql/src/test/results/compiler/plan/groupby2.q.xml
ql/src/test/results/compiler/plan/groupby3.q.xml
ql/src/test/results/compiler/plan/groupby5.q.xml
serde/src/java/org/apache/hadoop/hive/serde2/SerDeUtils.java
MANAGE HERALD RULES
https://reviews.facebook.net/herald/view/differential/
WHY DID I GET THIS EMAIL?
https://reviews.facebook.net/herald/transcript/21291/
To: JIRA, navis
> Fetch task aggregation for simple group by query
> ------------------------------------------------
>
> Key: HIVE-4002
> URL: https://issues.apache.org/jira/browse/HIVE-4002
> Project: Hive
> Issue Type: Improvement
> Components: Query Processor
> Reporter: Navis
> Assignee: Navis
> Priority: Minor
> Attachments: HIVE-4002.D8739.1.patch
>
>
> Aggregation queries with no group-by clause (for example, select count(*) from src) executes final aggregation in single reduce task. But it's too small even for single reducer because the most of UDAF generates just single row for map aggregation. If final fetch task can aggregate outputs from map tasks, shuffling time can be removed.
> This optimization transforms operator tree something like,
> TS-FIL-SEL-GBY1-RS-GBY2-SEL-FS + FETCH-TASK
> into
> TS-FIL-SEL-GBY1-FS + FETCH-TASK(GBY2-SEL-LS)
> With the patch, time taken for auto_join_filters.q test reduced to 6 min (10 min, before).
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira