[ 
https://issues.apache.org/jira/browse/HIVE-1361?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ning Zhang updated HIVE-1361:
-----------------------------

    Attachment: HIVE-1361.patch
                HIVE-1361.java_only.patch

Uploading a full version (HIVE-1361.patch) and a Java code only version 
(HIVE-1361.java_only.patch). 

This patch is based on Ahmed's previous patch and implements the following 
feature:
  1) automatically gather stats (number of rows currently) whenever an INSERT 
OVERWRITE TABLE is issued. Each mapper/reducer push their partial stats to 
either MySQL/Derby through JDBC or HBase. The INSERT OVERWRITE statement could 
be anything include dynamic partition insert, multi-table inserts and inserting 
to bucketized partitions. A StatsTask is responsible for aggregating partial 
stats at the end of the query and update the metastore.
  2) The stats of a table/partition can be exposed to the user by 'DESC 
EXTENDED' to the table/partition. They are stored as the storage parameters 
(numRows, nuFiles, numPartitions). 
  3) Introducing a new command 'ANALYZE TABLE [PARTITION (PARTITION SPEC)] 
COMPUTE STATISTICS' to scan the table/partition and gather stats in a similar 
fashion as INSERT OVERWRITE command except that the plan has only 1 MR job 
consisting a TableScanOperator and a StatsTask. Partition spec could be full 
partition spec or partial partition spec similar to what dynamic partition 
insert uses. This allows the user to analyze a subset/all partitions of a 
table. The resulting stats are stored in the same parameter in the meatstore.

Tested locally (unit tests) for JDBC:derby, hbase and on a cluster with 
JDBC:MySQL. 

Will run the full unit tests again. 

> table/partition level statistics
> --------------------------------
>
>                 Key: HIVE-1361
>                 URL: https://issues.apache.org/jira/browse/HIVE-1361
>             Project: Hadoop Hive
>          Issue Type: Sub-task
>    Affects Versions: 0.6.0
>            Reporter: Ning Zhang
>            Assignee: Ahmed M Aly
>         Attachments: HIVE-1361.java_only.patch, HIVE-1361.patch, stats0.patch
>
>
> At the first step, we gather table-level stats for non-partitioned table and 
> partition-level stats for partitioned table. Future work could extend the 
> table level stats to partitioned table as well. 
> There are 3 major milestones in this subtask: 
>  1) extend the insert statement to gather table/partition level stats 
> on-the-fly.
>  2) extend metastore API to support storing and retrieving stats for a 
> particular table/partition. 
>  3) add an ANALYZE TABLE [PARTITION] statement in Hive QL to gather stats for 
> existing tables/partitions. 
> The proposed stats are:
> Partition-level stats: 
>   - number of rows
>   - total size in bytes
>   - number of files
>   - max, min, average row sizes
>   - max, min, average file sizes
> Table-level stats in addition to partition level stats:
>   - number of partitions

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to