Package org.apache.iceberg.actions
Class BaseRewriteDataFilesAction<ThisT>
java.lang.Object
org.apache.iceberg.actions.BaseRewriteDataFilesAction<ThisT>
- All Implemented Interfaces:
Action<ThisT,
,RewriteDataFilesActionResult> SnapshotUpdateAction<ThisT,
RewriteDataFilesActionResult>
- Direct Known Subclasses:
RewriteDataFilesAction
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
caseSensitive
(boolean newCaseSensitive) Is it case sensitiveprotected void
commit
(SnapshotUpdate<?> update) protected EncryptionManager
execute()
Executes this action.protected abstract FileIO
fileIO()
filter
(Expression expr) Pass a row Expression to filter DataFiles to be rewritten.protected String
metadataTableName
(String tableName, MetadataTableType type) protected String
outputSpecId
(int specId) Pass a PartitionSpec id to specify which PartitionSpec should be used in DataFile rewriterewriteDataForTasks
(List<CombinedScanTask> combinedScanTask) protected abstract ThisT
self()
protected PartitionSpec
spec()
splitLookback
(int lookback) Specify the number of "bins" considered when trying to pack the next file split into a task.splitOpenFileCost
(long openFileCost) Specify the minimum file size to count to pack into one "bin".protected Table
table()
targetSizeInBytes
(long targetSize) Specify the target rewrite data file size in bytesuseStartingSequenceNumber
(boolean useStarting) If the compaction should use the sequence number of the snapshot at compaction start time for new data files, instead of using the sequence number of the newly produced snapshot.
-
Constructor Details
-
BaseRewriteDataFilesAction
-
-
Method Details
-
table
-
spec
-
encryptionManager
-
caseSensitive
protected boolean caseSensitive() -
caseSensitive
Is it case sensitive- Parameters:
newCaseSensitive
- caseSensitive- Returns:
- this for method chaining
-
outputSpecId
Pass a PartitionSpec id to specify which PartitionSpec should be used in DataFile rewrite- Parameters:
specId
- PartitionSpec id to rewrite- Returns:
- this for method chaining
-
targetSizeInBytes
Specify the target rewrite data file size in bytes- Parameters:
targetSize
- size in bytes of rewrite data file- Returns:
- this for method chaining
-
splitLookback
Specify the number of "bins" considered when trying to pack the next file split into a task. Increasing this usually makes tasks a bit more even by considering more ways to pack file regions into a single task with extra planning cost.This configuration can reorder the incoming file regions, to preserve order for lower/upper bounds in file metadata, user can use a lookback of 1.
- Parameters:
lookback
- number of "bins" considered when trying to pack the next file split into a task.- Returns:
- this for method chaining
-
splitOpenFileCost
Specify the minimum file size to count to pack into one "bin". If the read file size is smaller than this specified threshold, Iceberg will use this value to do count.this configuration controls the number of files to compact for each task, small value would lead to a high compaction, the default value is 4MB.
- Parameters:
openFileCost
- minimum file size to count to pack into one "bin".- Returns:
- this for method chaining
-
filter
Pass a row Expression to filter DataFiles to be rewritten. Note that all files that may contain data matching the filter may be rewritten.- Parameters:
expr
- Expression to filter out DataFiles- Returns:
- this for method chaining
-
useStartingSequenceNumber
If the compaction should use the sequence number of the snapshot at compaction start time for new data files, instead of using the sequence number of the newly produced snapshot.This avoids commit conflicts with updates that add newer equality deletes at a higher sequence number.
- Parameters:
useStarting
- use starting sequence number if set to true- Returns:
- this for method chaining
-
execute
Description copied from interface:Action
Executes this action.- Returns:
- the result of this action
-
fileIO
-
rewriteDataForTasks
-
self
-
set
- Specified by:
set
in interfaceSnapshotUpdateAction<ThisT,
R>
-
commit
-
metadataTableName
-
metadataTableName
-