blob: 9ad1a41c7c49963e5106b438401cec8b80c02c18 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>ExpireSnapshots</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ExpireSnapshots";
}
}
catch(err) {
}
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/iceberg/actions/DeleteReachableFiles.Result.html" title="interface in org.apache.iceberg.actions"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.Result.html" title="interface in org.apache.iceberg.actions"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/iceberg/actions/ExpireSnapshots.html" target="_top">Frames</a></li>
<li><a href="ExpireSnapshots.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.iceberg.actions</div>
<h2 title="Interface ExpireSnapshots" class="title">Interface ExpireSnapshots</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><a href="../../../../org/apache/iceberg/actions/Action.html" title="interface in org.apache.iceberg.actions">Action</a>&lt;<a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a>,<a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.Result.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots.Result</a>&gt;</dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../org/apache/iceberg/spark/actions/ExpireSnapshotsSparkAction.html" title="class in org.apache.iceberg.spark.actions">ExpireSnapshotsSparkAction</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">ExpireSnapshots</span>
extends <a href="../../../../org/apache/iceberg/actions/Action.html" title="interface in org.apache.iceberg.actions">Action</a>&lt;<a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a>,<a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.Result.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots.Result</a>&gt;</pre>
<div class="block">An action that expires snapshots in a table.
<p>Similar to <a href="../../../../org/apache/iceberg/ExpireSnapshots.html" title="interface in org.apache.iceberg"><code>ExpireSnapshots</code></a> but may use a query engine to distribute
parts of the work.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Interface and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static interface&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.Result.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots.Result</a></span></code>
<div class="block">The action result that contains a summary of the execution.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html#deleteWith-java.util.function.Consumer-">deleteWith</a></span>(java.util.function.Consumer&lt;java.lang.String&gt;&nbsp;deleteFunc)</code>
<div class="block">Passes an alternative delete implementation that will be used for manifests, data and delete
files.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html#executeDeleteWith-java.util.concurrent.ExecutorService-">executeDeleteWith</a></span>(java.util.concurrent.ExecutorService&nbsp;executorService)</code>
<div class="block">Passes an alternative executor service that will be used for files removal.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html#expireOlderThan-long-">expireOlderThan</a></span>(long&nbsp;timestampMillis)</code>
<div class="block">Expires all snapshots older than the given timestamp.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html#expireSnapshotId-long-">expireSnapshotId</a></span>(long&nbsp;snapshotId)</code>
<div class="block">Expires a specific <a href="../../../../org/apache/iceberg/Snapshot.html" title="interface in org.apache.iceberg"><code>Snapshot</code></a> identified by id.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html#retainLast-int-">retainLast</a></span>(int&nbsp;numSnapshots)</code>
<div class="block">Retains the most recent ancestors of the current snapshot.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.iceberg.actions.Action">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.iceberg.actions.<a href="../../../../org/apache/iceberg/actions/Action.html" title="interface in org.apache.iceberg.actions">Action</a></h3>
<code><a href="../../../../org/apache/iceberg/actions/Action.html#execute--">execute</a>, <a href="../../../../org/apache/iceberg/actions/Action.html#option-java.lang.String-java.lang.String-">option</a>, <a href="../../../../org/apache/iceberg/actions/Action.html#options-java.util.Map-">options</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="expireSnapshotId-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>expireSnapshotId</h4>
<pre><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a>&nbsp;expireSnapshotId(long&nbsp;snapshotId)</pre>
<div class="block">Expires a specific <a href="../../../../org/apache/iceberg/Snapshot.html" title="interface in org.apache.iceberg"><code>Snapshot</code></a> identified by id.
<p>Identical to <a href="../../../../org/apache/iceberg/ExpireSnapshots.html#expireSnapshotId-long-"><code>ExpireSnapshots.expireSnapshotId(long)</code></a></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>snapshotId</code> - id of the snapshot to expire</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a name="expireOlderThan-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>expireOlderThan</h4>
<pre><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a>&nbsp;expireOlderThan(long&nbsp;timestampMillis)</pre>
<div class="block">Expires all snapshots older than the given timestamp.
<p>Identical to <a href="../../../../org/apache/iceberg/ExpireSnapshots.html#expireOlderThan-long-"><code>ExpireSnapshots.expireOlderThan(long)</code></a></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>timestampMillis</code> - a long timestamp, as returned by <code>System.currentTimeMillis()</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a name="retainLast-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>retainLast</h4>
<pre><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a>&nbsp;retainLast(int&nbsp;numSnapshots)</pre>
<div class="block">Retains the most recent ancestors of the current snapshot.
<p>If a snapshot would be expired because it is older than the expiration timestamp, but is one
of the <code>numSnapshots</code> most recent ancestors of the current state, it will be retained.
This will not cause snapshots explicitly identified by id from expiring.
<p>Identical to <a href="../../../../org/apache/iceberg/ExpireSnapshots.html#retainLast-int-"><code>ExpireSnapshots.retainLast(int)</code></a></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>numSnapshots</code> - the number of snapshots to retain</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a name="deleteWith-java.util.function.Consumer-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deleteWith</h4>
<pre><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a>&nbsp;deleteWith(java.util.function.Consumer&lt;java.lang.String&gt;&nbsp;deleteFunc)</pre>
<div class="block">Passes an alternative delete implementation that will be used for manifests, data and delete
files.
<p>Manifest files that are no longer used by valid snapshots will be deleted. Content files
that were marked as logically deleted by snapshots that are expired will be deleted as well.
<p>If this method is not called, unnecessary manifests and content files will still be deleted.
<p>Identical to <a href="../../../../org/apache/iceberg/ExpireSnapshots.html#deleteWith-java.util.function.Consumer-"><code>ExpireSnapshots.deleteWith(Consumer)</code></a></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>deleteFunc</code> - a function that will be called to delete manifests and data files</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a name="executeDeleteWith-java.util.concurrent.ExecutorService-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>executeDeleteWith</h4>
<pre><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a>&nbsp;executeDeleteWith(java.util.concurrent.ExecutorService&nbsp;executorService)</pre>
<div class="block">Passes an alternative executor service that will be used for files removal. This service will
only be used if a custom delete function is provided by <a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.html#deleteWith-java.util.function.Consumer-"><code>deleteWith(Consumer)</code></a> or if the
FileIO does not <a href="../../../../org/apache/iceberg/io/SupportsBulkOperations.html" title="interface in org.apache.iceberg.io"><code>support bulk deletes</code></a>. Otherwise, parallelism
should be controlled by the IO specific <a href="../../../../org/apache/iceberg/io/SupportsBulkOperations.html#deleteFiles-java.lang.Iterable-"><code>deleteFiles</code></a> method.
<p>If this method is not called and bulk deletes are not supported, unnecessary manifests and
content files will still be deleted in the current thread.
<p>Identical to <a href="../../../../org/apache/iceberg/ExpireSnapshots.html#executeDeleteWith-java.util.concurrent.ExecutorService-"><code>ExpireSnapshots.executeDeleteWith(ExecutorService)</code></a></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>executorService</code> - the service to use</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/iceberg/actions/DeleteReachableFiles.Result.html" title="interface in org.apache.iceberg.actions"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/iceberg/actions/ExpireSnapshots.Result.html" title="interface in org.apache.iceberg.actions"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/iceberg/actions/ExpireSnapshots.html" target="_top">Frames</a></li>
<li><a href="ExpireSnapshots.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>