[DO NOT MERGE] [RFC-15] Temporary PR to aid rebasing process#2395
Closed
vinothchandar wants to merge 45 commits intomasterfrom
Closed
[DO NOT MERGE] [RFC-15] Temporary PR to aid rebasing process#2395vinothchandar wants to merge 45 commits intomasterfrom
vinothchandar wants to merge 45 commits intomasterfrom
Conversation
Notable new classes: HoodieMetadata - The abstract interface through which the Metadata is accessed HoodieMetadataImpl - Implementation of Metadata as per RFC-15 HoodieMetadataIndex - A HoodieIndex specialized for Metadata to speed up record tagging and improve metadata table performance HoodieMetadataPayload - Payload for Metadata Table with custom logic for record merging HoodieMetadataFileSystemView - File System View that uses Metadata Table instead of file listings metadataSchema.txt - The schema being used for metadata table
- Fixed handling of CleanerPlan.
COW table rollback may delete files. MOR table rollbacks may additionally append rollback blocks in LOG files. We track this via HoodieRollbackMetadata and update the metadata with new file size.
MarkerBasedRollbackStrategy needs to correctly provide the list of files for which rollback blocks were appended.
…but not completed yet).
…dataset commit fails. Next rollback will rollback the metadata table.
Config is used when opening the base and log files to decide the default paths for spillable map. So its better to create a default one.
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.
…etadata 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.
Brings in several improvements that help test rfc-15.
…e name of the partition and the latest base file id.
Multiple metrics were being published. Simplified code by removing the usage of internal variables to track metric counts.
…and fixed logs+spellings.
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.
…used to collect metrics from executors. This helps create a stats dashboard which shows the metadata table improvements in real-time for production tables.
… 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.
Logic is explained in the JIRA ticket.
…text. Changed to using memory metrics.
…ead to hung tests.
…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
- 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
…able (#2342) Co-authored-by: Ryan Pifer <ryanpife@amazon.com>
…file system (#2387) Co-authored-by: Ryan Pifer <ryanpife@amazon.com>
…s through Hive/SparkSQL (#2366) Co-authored-by: Ryan Pifer <ryanpife@amazon.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Tips
What is the purpose of the pull request
(For example: This pull request adds quick-start document.)
Brief change log
(for example:)
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:)
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.