vinothchandar opened a new pull request #2398:
URL: https://github.com/apache/hudi/pull/2398


    - Introduced an internal metadata table, that stores file listings.
    - metadata table is kept upto date with
    - Fixed handling of CleanerPlan.
    - [HUDI-842] Reduce parallelism to speed up the test.
    - [HUDI-842] Implementation of CLI commands for metadata operations and 
lookups.
    - [HUDI-842] Extend rollback metadata to include the files which have been 
appended to.
    - [HUDI-842] Support for rollbacks in MOR Table.
    - MarkerBasedRollbackStrategy needs to correctly provide the list of files 
for which rollback blocks were appended.
    - [HUDI-842] Added unit test for rollback of partial commits (inflight but 
not completed yet).
    - [HUDI-842] Handled the error case where metadata update succeeds but 
dataset commit fails.
    - [HUDI-842] Schema evolution strategy for Metadata Table. Each type of 
metadata saved (FilesystemMetadata, ColumnIndexMetadata, etc.) will be a 
separate field with default null. The type of the record will identify the 
valid field. This way, we can grow the schema when new type of information is 
saved within in which still keeping it backward compatible.
    - [HUDI-842] Fix non-partitioned case and speedup initial creation of 
metadata table.Choose only 1 partition for jsc as the number of records is low 
(hundreds to thousands). There is more overhead of creating large number of 
partitions for JavaRDD and it slows down operations like WorkloadProfile.
   For the non-partitioned case, use "." as the name of the partition to 
prevent empty keys in HFile.
    - [HUDI-842] Reworked metrics pusblishing.
    - Code has been split into reader and writer side. HoodieMetadata code to 
be accessed by using HoodieTable.metadata() to get instance of metdata for the 
table.
   Code is serializable to allow executors to use the functionality.
    - [RFC-15] Add metrics to track the time for each file system call.
    - [RFC-15] Added a distributed metrics registry for spark which can be used 
to collect metrics from executors. This helps create a stats dashboard which 
shows the metadata table improvements in real-time for production tables.
    - [HUDI-1321] Created HoodieMetadataConfig to specify configuration for the 
metadata table. This is safer than full-fledged properties for the metadata 
table (like HoodieWriteConfig) as it makes burdensome to tune the metadata. 
With limited configuration, we can control the performance of the metadata 
table closely.
   
   [HUDI-1319][RFC-15] Adding interfaces for HoodieMetadata, 
HoodieMetadataWriter (apache#2266)
    - moved MetadataReader to HoodieBackedTableMetadata, under the 
HoodieTableMetadata interface
    - moved MetadataWriter to HoodieBackedTableMetadataWriter, under the 
HoodieTableMetadataWriter
    - Pulled all the metrics into HoodieMetadataMetrics
    - Writer now wraps the metadata, instead of extending it
    - New enum for MetadataPartitionType
    - Streamlined code flow inside HoodieBackedTableMetadataWriter w.r.t 
initializing metadata state
    - [HUDI-1319] Make async operations work with metadata table (apache#2332)
    - Changes the syncing model to only move over completed instants on data 
timeline
    - Syncing happens postCommit and on writeClient initialization
    - Latest delta commit on the metadata table is sufficient as the watermark 
for data timeline archival
    - Cleaning/Compaction use a suffix to the last instant written to metadata 
table, such that we keep the 1-1
    - .. mapping between data and metadata timelines.
    - Got rid of a lot of the complexity around checking for valid commits 
during open of base/log files
    - Tests now use local FS, to simulate more failure scenarios
    - Some failure scenarios exposed HUDI-1434, which is needed for MOR to work 
correctly
   
   co-authored by: Vinoth Chandar <[email protected]>
   
   ## *Tips*
   - *Thank you very much for contributing to Apache Hudi.*
   - *Please review https://hudi.apache.org/contributing.html before opening a 
pull request.*
   
   ## What is the purpose of the pull request
   
   *(For example: This pull request adds quick-start document.)*
   
   ## Brief change log
   
   *(for example:)*
     - *Modify AnnotationLocation checkstyle rule in checkstyle.xml*
   
   ## Verify this pull request
   
   *(Please pick either of the following options)*
   
   This pull request is a trivial rework / code cleanup without any test 
coverage.
   
   *(or)*
   
   This pull request is already covered by existing tests, such as *(please 
describe tests)*.
   
   (or)
   
   This change added tests and can be verified as follows:
   
   *(example:)*
   
     - *Added integration tests for end-to-end.*
     - *Added HoodieClientWriteTest to verify the change.*
     - *Manually verified the change by running a job locally.*
   
   ## Committer checklist
   
    - [ ] Has a corresponding JIRA in PR title & commit
    
    - [ ] Commit message is descriptive of the change
    
    - [ ] CI is green
   
    - [ ] Necessary doc changes done or have another open PR
          
    - [ ] For large changes, please consider breaking it into sub-tasks under 
an umbrella JIRA.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to