Optimizing the Hive Group By Statement
Scenario
Optimize the Group by statement to accelerate the command execution and query speed.
During the Group by operation, Map performs grouping and distributes the groups to Reduce, and then Reduce performs grouping again. Group by optimization can be performed by enabling Map aggregation to reduce Map output data volume.
Procedure
On a Hive client, set the following parameter:
set hive.map.aggr=true;
Precautions
Group By Data Skew
Group by have data skew problems. When hive.groupby.skewindata is set to true, the created query plan has two MapReduce jobs. The Map output result of the first job is randomly distributed to Reduce tasks, and each Reduce task performs aggregation operations and generates output result. Such processing may distribute the same Group By Key to different Reduce tasks for load balancing purpose. According to the preprocessing result, the second Job distributes Group By Key to Reduce to complete the final aggregation operation.
Count Distinct Aggregation Problem
When the aggregation function count distinct is used in deduplication counting, serious Reduce data skew occurs if the processed value is empty. The empty value can be processed independently. If count distinct is used, exclude the empty value using the where clause and increase the last count distinct result by 1. If there are other computing operations, process the empty value independently and then combine the value with other computing results.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.