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

qinlihui commented on HIVE-25293:
---------------------------------

[~zhangbutao] Our company uses Hive to store 100,000 tables, and we are 
currently facing performance bottlenecks when querying partitions. Through 
analysis, we have identified the root cause: we use the "cascade" option when 
adding partitions to tables. This causes the column information of each 
partition to be stored separately in the columns_v2 table. For example, if a 
table has 10 fields and 1,000 partitions, adding a new field to this table with 
the "cascade" option will result in an additional 10,000 partition column 
information records (1,000 * 10) being added to the columns_v2 table. We are 
currently unsure whether this scenario is part of Hive's original design or if 
it is a bug.
 
 

> Alter partitioned table with "cascade" option create too many columns records.
> ------------------------------------------------------------------------------
>
>                 Key: HIVE-25293
>                 URL: https://issues.apache.org/jira/browse/HIVE-25293
>             Project: Hive
>          Issue Type: Improvement
>          Components: Metastore
>    Affects Versions: 2.3.3, 3.1.2
>            Reporter: yongtaoliao
>            Assignee: yongtaoliao
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> When alter partitioned table with "cascade" option, all partitions supports 
> to be updated. Currently, a CD_ID will be created for each partition, 
> associated with a set of Columns, which will cause a large amount of 
> redundant data in the metadata database.
> The following DDL statements can reproduce this scenario:
>  
> {code:java}
> create table test_table (f1 int) partitioned by (p string);
> alter table test_table add partition(p='a');
> alter table test_table add partition(p='b');
> alter table test_table add partition(p='c');
> alter table test_table add columns (f2 int) cascade;{code}
> All partitions use the table's `CD_ID` before adding columns, while each 
> partition use their own `CD_ID` after adding columns.
>  
> My proposal is all partitions should use the same `CD_ID` when table was 
> altered with "cascade" option.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to