public class BaseRewriteManifests extends java.lang.Object implements RewriteManifests
Modifier and Type | Method and Description |
---|---|
Snapshot |
apply()
Apply the pending changes and return the uncommitted changes for validation.
|
java.util.List<ManifestFile> |
apply(TableMetadata base)
Apply the update's changes to the base table metadata and return the new manifest list.
|
protected void |
cleanAll() |
protected void |
cleanUncommitted(java.util.Set<ManifestFile> committed)
Clean up any uncommitted manifests that were created.
|
RewriteManifests |
clusterBy(java.util.function.Function<DataFile,java.lang.Object> func)
Groups an existing
DataFile by a cluster key produced by a function. |
void |
commit()
Apply the pending changes and commit.
|
protected void |
deleteFile(java.lang.String path) |
ThisT |
deleteWith(java.util.function.Consumer<java.lang.String> deleteCallback)
Set a callback to delete files instead of the table's default.
|
protected OutputFile |
manifestListPath() |
protected OutputFile |
manifestPath(int manifestNumber) |
protected java.lang.String |
operation()
A string that describes the action that produced the new snapshot.
|
RewriteManifests |
rewriteIf(java.util.function.Predicate<ManifestFile> pred)
Determines which existing
ManifestFile for the table should be rewritten. |
protected RewriteManifests |
self() |
RewriteManifests |
set(java.lang.String property,
java.lang.String value)
Set a summary property in the snapshot produced by this update.
|
protected long |
snapshotId() |
ThisT |
stageOnly()
Called to stage a snapshot in table metadata, but not update the current snapshot id.
|
protected java.util.Map<java.lang.String,java.lang.String> |
summary() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
deleteWith, stageOnly
apply, commit
protected RewriteManifests self()
protected java.lang.String operation()
public RewriteManifests set(java.lang.String property, java.lang.String value)
SnapshotUpdate
set
in interface SnapshotUpdate<RewriteManifests>
property
- a String property namevalue
- a String property valueprotected java.util.Map<java.lang.String,java.lang.String> summary()
public RewriteManifests clusterBy(java.util.function.Function<DataFile,java.lang.Object> func)
RewriteManifests
DataFile
by a cluster key produced by a function. The cluster key
will determine which data file will be associated with a particular manifest. All data files
with the same cluster key will be written to the same manifest (unless the file is large and
split into multiple files).clusterBy
in interface RewriteManifests
func
- Function used to cluster data files to manifests.public RewriteManifests rewriteIf(java.util.function.Predicate<ManifestFile> pred)
RewriteManifests
ManifestFile
for the table should be rewritten. Manifests
that do not match the predicate are kept as-is. If this is not called and no predicate is set, then
all manifests will be rewritten.rewriteIf
in interface RewriteManifests
pred
- Predicate used to determine which manifests to rewrite. If true then the manifest
file will be included for rewrite. If false then then manifest is kept as-is.public java.util.List<ManifestFile> apply(TableMetadata base)
base
- the base table metadata to apply changes toprotected void cleanUncommitted(java.util.Set<ManifestFile> committed)
Manifests may not be committed if apply is called more because a commit conflict has occurred. Implementations may keep around manifests because the same changes will be made by both apply calls. This method instructs the implementation to clean up those manifests and passes the paths of the manifests that were actually committed.
committed
- a set of manifest paths that were actually committedpublic ThisT stageOnly()
SnapshotUpdate
stageOnly
in interface SnapshotUpdate<ThisT>
public ThisT deleteWith(java.util.function.Consumer<java.lang.String> deleteCallback)
SnapshotUpdate
deleteWith
in interface SnapshotUpdate<ThisT>
deleteCallback
- a String consumer used to delete locations.public Snapshot apply()
PendingUpdate
This does not result in a permanent update.
apply
in interface PendingUpdate<Snapshot>
PendingUpdate.commit()
public void commit()
PendingUpdate
Changes are committed by calling the underlying table's commit method.
Once the commit is successful, the updated table will be refreshed.
commit
in interface PendingUpdate<Snapshot>
protected void cleanAll()
protected void deleteFile(java.lang.String path)
protected OutputFile manifestListPath()
protected OutputFile manifestPath(int manifestNumber)
protected long snapshotId()