Support consuming tier overrides for realtime consuming segments#18474
Closed
xiangfu0 wants to merge 1 commit into
Closed
Support consuming tier overrides for realtime consuming segments#18474xiangfu0 wants to merge 1 commit into
xiangfu0 wants to merge 1 commit into
Conversation
f379368 to
8f5b053
Compare
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #18474 +/- ##
============================================
+ Coverage 63.68% 63.71% +0.02%
Complexity 1684 1684
============================================
Files 3262 3265 +3
Lines 199826 200080 +254
Branches 31031 31087 +56
============================================
+ Hits 127264 127481 +217
- Misses 62414 62430 +16
- Partials 10148 10169 +21
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
8f5b053 to
10ee317
Compare
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.
Summary
tierOverwritessupport for mutable realtime consuming segments by applyingtierOverwrites.consumingwhen buildingRealtimeSegmentConfig.consumingas a synthetic mutable-consuming tier only when the table does not already define a real storage tier with that name, preserving existing storage-tier behavior.tableIndexConfig.tierOverwrites.consumingkeys that do not flow through mutable index loading.User Manual
Configure the committed segment shape as usual, then add
tierOverwrites.consumingwhere the mutable consuming segment should differ.Example: keep
userIdRAW and without an inverted index after commit, but use dictionary encoding plus an inverted index while the segment is consuming:{ "tableIndexConfig": { "noDictionaryColumns": ["userId"], "tierOverwrites": { "consuming": { "noDictionaryColumns": [] } } }, "fieldConfigList": [ { "name": "userId", "encodingType": "RAW", "tierOverwrites": { "consuming": { "encodingType": "DICTIONARY", "indexes": { "inverted": { "enabled": true } } } } } ] }Query example that can benefit while rows are still in consuming segments:
Notes:
tierConfigsentry namedconsumingfor this feature.consumingas a real storage tier name, Pinot keeps existing storage-tier semantics and does not treattierOverwrites.consumingas the synthetic mutable-consuming override for that table.tableIndexConfig.noDictionaryColumnsornoDictionaryConfig, clear that setting undertableIndexConfig.tierOverwrites.consumingso the consuming view can enable dictionary.tableIndexConfig.tierOverwrites.consumingis limited to index-loading settings such as dictionary, inverted, range, JSON, Bloom filter, and dictionary optimization options. Row-shape or ingestion settings such asaggregateMetricsandsegmentPartitionConfigare rejected for the synthetic consuming tier.A complete sample config and walkthrough are included under
pinot-tools/src/main/resources/examples/stream/consumingSegmentTierOverride/.Validation
./mvnw -pl pinot-segment-local -am -Dtest=TableConfigConsumingSegmentTierOverrideTest,TableConfigUtilsTest,IndexLoadingConfigTest -Dsurefire.failIfNoSpecifiedTests=false test./mvnw -pl pinot-common -am -Dtest=TableConfigSerDeUtilsTest -Dsurefire.failIfNoSpecifiedTests=false test./mvnw -pl pinot-integration-tests -am -Dskip.npm=true -Dtest=ConsumingSegmentTierOverrideRealtimeTest -Dsurefire.failIfNoSpecifiedTests=false test./mvnw spotless:apply -pl pinot-common,pinot-core,pinot-segment-local,pinot-spi,pinot-integration-tests,pinot-tools./mvnw license:format -pl pinot-common,pinot-core,pinot-segment-local,pinot-spi,pinot-integration-tests,pinot-tools./mvnw checkstyle:check -pl pinot-common,pinot-core,pinot-segment-local,pinot-spi,pinot-integration-tests,pinot-tools./mvnw license:check -pl pinot-common,pinot-core,pinot-segment-local,pinot-spi,pinot-integration-tests,pinot-toolsgit diff --cached --check