blob: 9dcc0658829280268f0cbfc3a9ae07716db82907 [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>BaseExpireSnapshotsSparkAction</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="BaseExpireSnapshotsSparkAction";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete 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/spark/actions/BaseDeleteReachableFilesSparkAction.html" title="class in org.apache.iceberg.spark.actions"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/iceberg/spark/actions/BaseMigrateTableSparkAction.html" title="class in org.apache.iceberg.spark.actions"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html" target="_top">Frames</a></li>
<li><a href="BaseExpireSnapshotsSparkAction.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>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&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><a href="#constructor.detail">Constr</a>&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.spark.actions</div>
<h2 title="Class BaseExpireSnapshotsSparkAction" class="title">Class BaseExpireSnapshotsSparkAction</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.iceberg.spark.actions.BaseExpireSnapshotsSparkAction</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</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;, <a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">BaseExpireSnapshotsSparkAction</span>
extends java.lang.Object
implements <a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a></pre>
<div class="block">An action that performs the same operation as <a href="../../../../../org/apache/iceberg/ExpireSnapshots.html" title="interface in org.apache.iceberg"><code>ExpireSnapshots</code></a> but uses Spark
to determine the delta in files between the pre and post-expiration table metadata. All of the same
restrictions of <a href="../../../../../org/apache/iceberg/ExpireSnapshots.html" title="interface in org.apache.iceberg"><code>ExpireSnapshots</code></a> also apply to this action.
<p>
This action first leverages <a href="../../../../../org/apache/iceberg/ExpireSnapshots.html" title="interface in org.apache.iceberg"><code>ExpireSnapshots</code></a> to expire snapshots and then
uses metadata tables to find files that can be safely deleted. This is done by anti-joining two Datasets
that contain all manifest and data files before and after the expiration. The snapshot expiration
will be fully committed before any deletes are issued.
<p>
This operation performs a shuffle so the parallelism can be controlled through 'spark.sql.shuffle.partitions'.
<p>
Deletes are still performed locally after retrieving the results from the Spark executors.</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>
<ul class="blockList">
<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.iceberg.actions.ExpireSnapshots">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.iceberg.actions.<a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a></h3>
<code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.Result.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots.Result</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#BaseExpireSnapshotsSparkAction-org.apache.spark.sql.SparkSession-org.apache.iceberg.Table-">BaseExpireSnapshotsSparkAction</a></span>(org.apache.spark.sql.SparkSession&nbsp;spark,
<a href="../../../../../org/apache/iceberg/Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</code>&nbsp;</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="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete 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>protected org.apache.spark.sql.Dataset&lt;org.apache.spark.sql.Row&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#buildManifestFileDF-org.apache.iceberg.Table-">buildManifestFileDF</a></span>(<a href="../../../../../org/apache/iceberg/Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</code>&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected org.apache.spark.sql.Dataset&lt;org.apache.spark.sql.Row&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#buildManifestListDF-org.apache.iceberg.Table-">buildManifestListDF</a></span>(<a href="../../../../../org/apache/iceberg/Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</code>&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected org.apache.spark.sql.Dataset&lt;org.apache.spark.sql.Row&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#buildOtherMetadataFileDF-org.apache.iceberg.Table-">buildOtherMetadataFileDF</a></span>(<a href="../../../../../org/apache/iceberg/Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected org.apache.spark.sql.Dataset&lt;org.apache.spark.sql.Row&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#buildValidDataFileDF-org.apache.iceberg.Table-">buildValidDataFileDF</a></span>(<a href="../../../../../org/apache/iceberg/Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</code>&nbsp;</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected org.apache.spark.sql.Dataset&lt;org.apache.spark.sql.Row&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#buildValidMetadataFileDF-org.apache.iceberg.Table-">buildValidMetadataFileDF</a></span>(<a href="../../../../../org/apache/iceberg/Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</code>&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html" title="class in org.apache.iceberg.spark.actions">BaseExpireSnapshotsSparkAction</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#deleteWith-java.util.function.Consumer-">deleteWith</a></span>(java.util.function.Consumer&lt;java.lang.String&gt;&nbsp;newDeleteFunc)</code>
<div class="block">Passes an alternative delete implementation that will be used for manifests and data files.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.Result.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots.Result</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#execute--">execute</a></span>()</code>
<div class="block">Executes this action.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html" title="class in org.apache.iceberg.spark.actions">BaseExpireSnapshotsSparkAction</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.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 manifests and data files deletion.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>org.apache.spark.sql.Dataset&lt;org.apache.spark.sql.Row&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#expire--">expire</a></span>()</code>
<div class="block">Expires snapshots and commits the changes to the table, returning a Dataset of files to delete.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html" title="class in org.apache.iceberg.spark.actions">BaseExpireSnapshotsSparkAction</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.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="i10" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html" title="class in org.apache.iceberg.spark.actions">BaseExpireSnapshotsSparkAction</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.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="i11" class="rowColor">
<td class="colFirst"><code>protected org.apache.spark.sql.Dataset&lt;org.apache.spark.sql.Row&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#loadMetadataTable-org.apache.iceberg.Table-org.apache.iceberg.MetadataTableType-">loadMetadataTable</a></span>(<a href="../../../../../org/apache/iceberg/Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
<a href="../../../../../org/apache/iceberg/MetadataTableType.html" title="enum in org.apache.iceberg">MetadataTableType</a>&nbsp;type)</code>&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../org/apache/iceberg/spark/JobGroupInfo.html" title="class in org.apache.iceberg.spark">JobGroupInfo</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#newJobGroupInfo-java.lang.String-java.lang.String-">newJobGroupInfo</a></span>(java.lang.String&nbsp;groupId,
java.lang.String&nbsp;desc)</code>&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../org/apache/iceberg/Table.html" title="interface in org.apache.iceberg">Table</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#newStaticTable-org.apache.iceberg.TableMetadata-org.apache.iceberg.io.FileIO-">newStaticTable</a></span>(<a href="../../../../../org/apache/iceberg/TableMetadata.html" title="class in org.apache.iceberg">TableMetadata</a>&nbsp;metadata,
<a href="../../../../../org/apache/iceberg/io/FileIO.html" title="interface in org.apache.iceberg.io">FileIO</a>&nbsp;io)</code>&nbsp;</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>ThisT</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#option-java.lang.String-java.lang.String-">option</a></span>(java.lang.String&nbsp;name,
java.lang.String&nbsp;value)</code>
<div class="block">Configures this action with an extra option.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>protected java.util.Map&lt;java.lang.String,java.lang.String&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#options--">options</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>ThisT</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#options-java.util.Map-">options</a></span>(java.util.Map&lt;java.lang.String,java.lang.String&gt;&nbsp;newOptions)</code>
<div class="block">Configures this action with extra options.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html" title="class in org.apache.iceberg.spark.actions">BaseExpireSnapshotsSparkAction</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.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>
<tr id="i18" class="altColor">
<td class="colFirst"><code>protected <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/spark/actions/BaseExpireSnapshotsSparkAction.html#self--">self</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>protected org.apache.spark.sql.SparkSession</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#spark--">spark</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>protected org.apache.spark.api.java.JavaSparkContext</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#sparkContext--">sparkContext</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>protected &lt;T&gt;&nbsp;T</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#withJobGroupInfo-org.apache.iceberg.spark.JobGroupInfo-java.util.function.Supplier-">withJobGroupInfo</a></span>(<a href="../../../../../org/apache/iceberg/spark/JobGroupInfo.html" title="class in org.apache.iceberg.spark">JobGroupInfo</a>&nbsp;info,
java.util.function.Supplier&lt;T&gt;&nbsp;supplier)</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
<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#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">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="BaseExpireSnapshotsSparkAction-org.apache.spark.sql.SparkSession-org.apache.iceberg.Table-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>BaseExpireSnapshotsSparkAction</h4>
<pre>public&nbsp;BaseExpireSnapshotsSparkAction(org.apache.spark.sql.SparkSession&nbsp;spark,
<a href="../../../../../org/apache/iceberg/Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="self--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>self</h4>
<pre>protected&nbsp;<a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a>&nbsp;self()</pre>
</li>
</ul>
<a name="executeDeleteWith-java.util.concurrent.ExecutorService-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>executeDeleteWith</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html" title="class in org.apache.iceberg.spark.actions">BaseExpireSnapshotsSparkAction</a>&nbsp;executeDeleteWith(java.util.concurrent.ExecutorService&nbsp;executorService)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html#executeDeleteWith-java.util.concurrent.ExecutorService-">ExpireSnapshots</a></code></span></div>
<div class="block">Passes an alternative executor service that will be used for manifests and data files deletion.
<p>
If this method is not called, unnecessary manifests and data 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="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html#executeDeleteWith-java.util.concurrent.ExecutorService-">executeDeleteWith</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a></code></dd>
<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>
<a name="expireSnapshotId-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>expireSnapshotId</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html" title="class in org.apache.iceberg.spark.actions">BaseExpireSnapshotsSparkAction</a>&nbsp;expireSnapshotId(long&nbsp;snapshotId)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html#expireSnapshotId-long-">ExpireSnapshots</a></code></span></div>
<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="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html#expireSnapshotId-long-">expireSnapshotId</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a></code></dd>
<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>public&nbsp;<a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html" title="class in org.apache.iceberg.spark.actions">BaseExpireSnapshotsSparkAction</a>&nbsp;expireOlderThan(long&nbsp;timestampMillis)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html#expireOlderThan-long-">ExpireSnapshots</a></code></span></div>
<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="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html#expireOlderThan-long-">expireOlderThan</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a></code></dd>
<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>public&nbsp;<a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html" title="class in org.apache.iceberg.spark.actions">BaseExpireSnapshotsSparkAction</a>&nbsp;retainLast(int&nbsp;numSnapshots)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html#retainLast-int-">ExpireSnapshots</a></code></span></div>
<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="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html#retainLast-int-">retainLast</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a></code></dd>
<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>public&nbsp;<a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html" title="class in org.apache.iceberg.spark.actions">BaseExpireSnapshotsSparkAction</a>&nbsp;deleteWith(java.util.function.Consumer&lt;java.lang.String&gt;&nbsp;newDeleteFunc)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html#deleteWith-java.util.function.Consumer-">ExpireSnapshots</a></code></span></div>
<div class="block">Passes an alternative delete implementation that will be used for manifests and data files.
<p>
Manifest files that are no longer used by valid snapshots will be deleted. Data files that were
deleted by snapshots that are expired will be deleted.
<p>
If this method is not called, unnecessary manifests and data 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="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html#deleteWith-java.util.function.Consumer-">deleteWith</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>newDeleteFunc</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="expire--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>expire</h4>
<pre>public&nbsp;org.apache.spark.sql.Dataset&lt;org.apache.spark.sql.Row&gt;&nbsp;expire()</pre>
<div class="block">Expires snapshots and commits the changes to the table, returning a Dataset of files to delete.
<p>
This does not delete data files. To delete data files, run <a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#execute--"><code>execute()</code></a>.
<p>
This may be called before or after <a href="../../../../../org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html#execute--"><code>execute()</code></a> is called to return the expired file list.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Dataset of files that are no longer referenced by the table</dd>
</dl>
</li>
</ul>
<a name="execute--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>execute</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/iceberg/actions/ExpireSnapshots.Result.html" title="interface in org.apache.iceberg.actions">ExpireSnapshots.Result</a>&nbsp;execute()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/iceberg/actions/Action.html#execute--">Action</a></code></span></div>
<div class="block">Executes this action.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/iceberg/actions/Action.html#execute--">execute</a></code>&nbsp;in interface&nbsp;<code><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;</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the result of this action</dd>
</dl>
</li>
</ul>
<a name="spark--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>spark</h4>
<pre>protected&nbsp;org.apache.spark.sql.SparkSession&nbsp;spark()</pre>
</li>
</ul>
<a name="sparkContext--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sparkContext</h4>
<pre>protected&nbsp;org.apache.spark.api.java.JavaSparkContext&nbsp;sparkContext()</pre>
</li>
</ul>
<a name="option-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>option</h4>
<pre>public&nbsp;ThisT&nbsp;option(java.lang.String&nbsp;name,
java.lang.String&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/iceberg/actions/Action.html#option-java.lang.String-java.lang.String-">Action</a></code></span></div>
<div class="block">Configures this action with an extra option.
<p>
Certain actions allow users to control internal details of their execution via options.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/iceberg/actions/Action.html#option-java.lang.String-java.lang.String-">option</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/iceberg/actions/Action.html" title="interface in org.apache.iceberg.actions">Action</a>&lt;ThisT,R&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - an option name</dd>
<dd><code>value</code> - an option value</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a name="options-java.util.Map-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>options</h4>
<pre>public&nbsp;ThisT&nbsp;options(java.util.Map&lt;java.lang.String,java.lang.String&gt;&nbsp;newOptions)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/iceberg/actions/Action.html#options-java.util.Map-">Action</a></code></span></div>
<div class="block">Configures this action with extra options.
<p>
Certain actions allow users to control internal details of their execution via options.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/iceberg/actions/Action.html#options-java.util.Map-">options</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/iceberg/actions/Action.html" title="interface in org.apache.iceberg.actions">Action</a>&lt;ThisT,R&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>newOptions</code> - a map of extra options</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a name="options--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>options</h4>
<pre>protected&nbsp;java.util.Map&lt;java.lang.String,java.lang.String&gt;&nbsp;options()</pre>
</li>
</ul>
<a name="withJobGroupInfo-org.apache.iceberg.spark.JobGroupInfo-java.util.function.Supplier-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>withJobGroupInfo</h4>
<pre>protected&nbsp;&lt;T&gt;&nbsp;T&nbsp;withJobGroupInfo(<a href="../../../../../org/apache/iceberg/spark/JobGroupInfo.html" title="class in org.apache.iceberg.spark">JobGroupInfo</a>&nbsp;info,
java.util.function.Supplier&lt;T&gt;&nbsp;supplier)</pre>
</li>
</ul>
<a name="newJobGroupInfo-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newJobGroupInfo</h4>
<pre>protected&nbsp;<a href="../../../../../org/apache/iceberg/spark/JobGroupInfo.html" title="class in org.apache.iceberg.spark">JobGroupInfo</a>&nbsp;newJobGroupInfo(java.lang.String&nbsp;groupId,
java.lang.String&nbsp;desc)</pre>
</li>
</ul>
<a name="newStaticTable-org.apache.iceberg.TableMetadata-org.apache.iceberg.io.FileIO-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newStaticTable</h4>
<pre>protected&nbsp;<a href="../../../../../org/apache/iceberg/Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;newStaticTable(<a href="../../../../../org/apache/iceberg/TableMetadata.html" title="class in org.apache.iceberg">TableMetadata</a>&nbsp;metadata,
<a href="../../../../../org/apache/iceberg/io/FileIO.html" title="interface in org.apache.iceberg.io">FileIO</a>&nbsp;io)</pre>
</li>
</ul>
<a name="buildValidDataFileDF-org.apache.iceberg.Table-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>buildValidDataFileDF</h4>
<pre>protected&nbsp;org.apache.spark.sql.Dataset&lt;org.apache.spark.sql.Row&gt;&nbsp;buildValidDataFileDF(<a href="../../../../../org/apache/iceberg/Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</pre>
</li>
</ul>
<a name="buildManifestFileDF-org.apache.iceberg.Table-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>buildManifestFileDF</h4>
<pre>protected&nbsp;org.apache.spark.sql.Dataset&lt;org.apache.spark.sql.Row&gt;&nbsp;buildManifestFileDF(<a href="../../../../../org/apache/iceberg/Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</pre>
</li>
</ul>
<a name="buildManifestListDF-org.apache.iceberg.Table-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>buildManifestListDF</h4>
<pre>protected&nbsp;org.apache.spark.sql.Dataset&lt;org.apache.spark.sql.Row&gt;&nbsp;buildManifestListDF(<a href="../../../../../org/apache/iceberg/Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</pre>
</li>
</ul>
<a name="buildOtherMetadataFileDF-org.apache.iceberg.Table-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>buildOtherMetadataFileDF</h4>
<pre>protected&nbsp;org.apache.spark.sql.Dataset&lt;org.apache.spark.sql.Row&gt;&nbsp;buildOtherMetadataFileDF(<a href="../../../../../org/apache/iceberg/Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</pre>
</li>
</ul>
<a name="buildValidMetadataFileDF-org.apache.iceberg.Table-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>buildValidMetadataFileDF</h4>
<pre>protected&nbsp;org.apache.spark.sql.Dataset&lt;org.apache.spark.sql.Row&gt;&nbsp;buildValidMetadataFileDF(<a href="../../../../../org/apache/iceberg/Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</pre>
</li>
</ul>
<a name="loadMetadataTable-org.apache.iceberg.Table-org.apache.iceberg.MetadataTableType-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>loadMetadataTable</h4>
<pre>protected&nbsp;org.apache.spark.sql.Dataset&lt;org.apache.spark.sql.Row&gt;&nbsp;loadMetadataTable(<a href="../../../../../org/apache/iceberg/Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
<a href="../../../../../org/apache/iceberg/MetadataTableType.html" title="enum in org.apache.iceberg">MetadataTableType</a>&nbsp;type)</pre>
</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/spark/actions/BaseDeleteReachableFilesSparkAction.html" title="class in org.apache.iceberg.spark.actions"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/iceberg/spark/actions/BaseMigrateTableSparkAction.html" title="class in org.apache.iceberg.spark.actions"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.html" target="_top">Frames</a></li>
<li><a href="BaseExpireSnapshotsSparkAction.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>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&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><a href="#constructor.detail">Constr</a>&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>