[CARBONDATA-4251][CARBONDATA-4253] Optimize Clean Files Performance
authormarchpure <marchpure@126.com>
Mon, 26 Jul 2021 02:54:43 +0000 (10:54 +0800)
committerIndhumathi27 <indhumathim27@gmail.com>
Wed, 28 Jul 2021 05:09:16 +0000 (10:39 +0530)
commit9aaeba5af810b51d1958b2c20de2e32993ff7e10
treef76333193486e7fc140018784e7ac87a061a16c2
parent0337c3268cb49a9a6d9283d25259350d7d6319a1
[CARBONDATA-4251][CARBONDATA-4253] Optimize Clean Files Performance

Why is this PR needed?
 1) When execute cleanfile command, it cleans up all the carbonindex and
    carbonmergeindex that once existed, even though carbonindex files have been
    merged into carbonergeindex and deleted. When there are tens of thousands
    of carbonindex that once existed after the completion of the compaction,
    the clean file command will take serveral hours to clean index files which
    actually doesn't exist. We just need to clean up the existing
    files, carbonmergeindex or carbonindex files
 2) The rename command will list partitions of the table, but the partitions
    information is not actually used. If the table has hundreds of thousands
    partitions, the performance of rename table will degrade a lot

What changes were proposed in this PR?
 1) There is a variable indexOrMergeFiles, which means all existing indexfiles,
    CLEAN FILE commmand will delete all existing files instead of delete all
    files in 'indexFilesMap', which is actually all '.carbonindex' files once
    exists. Clean 'indexOrMergeFiles' helps to improve CLEAN FILES performance a lot.
 2) The rename command will list partitions for the table, but the partitions
    information is not actually used. If the table has hundreds of thousands
    partitions, the performance of rename table will degrade a lot

This closes #4183
core/src/main/java/org/apache/carbondata/core/metadata/SegmentFileStore.java
integration/spark/src/main/scala/org/apache/spark/sql/execution/command/schema/CarbonAlterTableRenameCommand.scala
integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/cleanfiles/TestCleanFileCommand.scala