-
Notifications
You must be signed in to change notification settings - Fork 80
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix!: ensure Iceberg layouts own the SeekableChannelsProvider (#6371)
This greatly improves the efficiency of Iceberg reading. Previously, it was creating a `SeekableChannelsProvider` per URI, and now only one is created once per layout (/ Table). To aid in this update, objects that were previously created on-demand in `IcebergBaseLayout` are now created once upon construction. To enable this, it was noted that only the URI scheme is relevant for discrimination, and not actually the full URI to the data files. Thus, we can use the URI scheme as provided via `org.apache.iceberg.Table#location` to do any up-front loading. The various interfaces that take a URI have been update to take a URI scheme instead. While this change could technically have been made in a non-breaking fashion by delegating existing URI methods to URI scheme methods, the existence of the URI methods encourages the wrong mental model and is easy to misuse, so they have been removed. One of the `ParquetTableLocationKey` constructors has been deprecated, marked for removal. A more appropriate constructor has been added. BREAKING CHANGE: - `SeekableChannelsProviderLoader.fromServiceLoader` has been removed, replaced with `SeekableChannelsProviderLoader.load`. - `DataInstructionsProviderLoader.fromServiceLoader` has been removed, replaced with `DataInstructionsProviderLoader.load`. - `SeekableChannelsProviderPlugin` methods have been changed, now use a `String` for the URI scheme instead of a `URI`. - `DataInstructionsProviderPlugin.createInstructions` method has been changed, now uses a `String` for the URI scheme instead of a `URI`. - `IcebergTableParquetLocationKey` has added a new `SeekableChannelsProvider` parameter.
- Loading branch information
1 parent
02127ae
commit 38a3aa8
Showing
18 changed files
with
195 additions
and
161 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Oops, something went wrong.