[ https://issues.apache.org/jira/browse/HIVE-22255?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16941641#comment-16941641 ]
Peter Vary commented on HIVE-22255: ----------------------------------- [~nareshpr]: Hive full ACID is working with snapshot isolation. Here is an example: * We have {{table1}} and it is compacted. The directory structure is this: {code:java} table1/ table1/base_000001/ table1/base_000001/bucket_00000 {code} * Query A is issued: {{select * from table1}}. The directory structure does not change, and it will read {{table1/base_000001/bucket_00000}} * Later Query B is issues: {{insert overwrite table1 ...}}. It will create the following directory structure: {code:java} table1/ table1/base_000001/ table1/base_000001/bucket_00000 table1/base_000002/ table1/base_000002/bucket_00000 {code} * Query B is finished. It will mark writeId 000002 as a committed * Query C is issued: {{select * from table1}}. The directory structure does not change, and it will read {{table1/base_000002/bucket_00000}} * Query A is still working, an it is still reading {{base_000001}} so it can not be removed * Query A is finished. We can remove the {{base_000001}} directory This means that we can have two base directories at a given time, and we are not allowed to remove them until the last transaction reading the is not finished. > Hive don't trigger Major Compaction automatically if table contains only base > files > ------------------------------------------------------------------------------------ > > Key: HIVE-22255 > URL: https://issues.apache.org/jira/browse/HIVE-22255 > Project: Hive > Issue Type: Bug > Components: Hive, Transactions > Affects Versions: 3.1.2 > Environment: Hive-3.1.1 > Reporter: Rajkumar Singh > Assignee: Rajkumar Singh > Priority: Major > > user may run into the issue if the table consists of all base files but no > delta, then the following condition will yield false and automatic major > compaction will be skipped. > [https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Initiator.java#L313] > > Steps to Reproduce: > # create Acid table > {code:java} > // create table myacid(id int); > {code} > # Run multiple insert table > {code:java} > // insert overwrite table myacid values(1);insert overwrite table myacid > values(2),(3),(4){code} > # DFS ls output > {code:java} > // dfs -ls -R /warehouse/tablespace/managed/hive/myacid; > +----------------------------------------------------+ > | DFS Output | > +----------------------------------------------------+ > | drwxrwx---+ - hive hadoop 0 2019-09-27 16:42 > /warehouse/tablespace/managed/hive/myacid/base_0000001 | > | -rw-rw----+ 3 hive hadoop 1 2019-09-27 16:42 > /warehouse/tablespace/managed/hive/myacid/base_0000001/_orc_acid_version | > | -rw-rw----+ 3 hive hadoop 610 2019-09-27 16:42 > /warehouse/tablespace/managed/hive/myacid/base_0000001/bucket_00000 | > | drwxrwx---+ - hive hadoop 0 2019-09-27 16:43 > /warehouse/tablespace/managed/hive/myacid/base_0000002 | > | -rw-rw----+ 3 hive hadoop 1 2019-09-27 16:43 > /warehouse/tablespace/managed/hive/myacid/base_0000002/_orc_acid_version | > | -rw-rw----+ 3 hive hadoop 633 2019-09-27 16:43 > /warehouse/tablespace/managed/hive/myacid/base_0000002/bucket_00000 | > +----------------------------------------------------+{code} > > you will see that Major compaction will not be trigger until you run alter > table compact MAJOR. -- This message was sent by Atlassian Jira (v8.3.4#803005)