<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.12) on Wed Aug 18 10:34:26 PDT 2021 -->
<title>RewriteManifests</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2021-08-18">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="RewriteManifests";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":6,"i1":6,"i2":6,"i3":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";
var pathtoroot = "../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../index.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" id="allclasses_navbar_top">
<li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&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 id="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.iceberg</a></div>
<h2 title="Interface RewriteManifests" class="title">Interface RewriteManifests</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><code><a href="PendingUpdate.html" title="interface in org.apache.iceberg">PendingUpdate</a>&lt;<a href="Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;</code>, <code><a href="SnapshotUpdate.html" title="interface in org.apache.iceberg">SnapshotUpdate</a>&lt;<a href="RewriteManifests.html" title="interface in org.apache.iceberg">RewriteManifests</a>&gt;</code></dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="BaseRewriteManifests.html" title="class in org.apache.iceberg">BaseRewriteManifests</a></code></dd>
</dl>
<hr>
<pre>public interface <span class="typeNameLabel">RewriteManifests</span>
extends <a href="SnapshotUpdate.html" title="interface in org.apache.iceberg">SnapshotUpdate</a>&lt;<a href="RewriteManifests.html" title="interface in org.apache.iceberg">RewriteManifests</a>&gt;</pre>
<div class="block">API for rewriting manifests for a table.
 <p>
 This API accumulates manifest files, produces a new <a href="Snapshot.html" title="interface in org.apache.iceberg"><code>Snapshot</code></a> of the table
 described only by the manifest files that were added, and commits that snapshot as the
 current.
 <p>
 This API can be used to rewrite matching manifests according to a clustering function as well as
 to replace specific manifests. Manifests that are deleted or added directly are ignored during
 the rewrite process. The set of active files in replaced manifests must be the same as in new manifests.
 <p>
 When committing, these changes will be applied to the latest table snapshot. Commit conflicts
 will be resolved by applying the changes to the new latest snapshot and reattempting the commit.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<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="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="RewriteManifests.html" title="interface in org.apache.iceberg">RewriteManifests</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addManifest(org.apache.iceberg.ManifestFile)">addManifest</a></span>&#8203;(<a href="ManifestFile.html" title="interface in org.apache.iceberg">ManifestFile</a>&nbsp;manifest)</code></th>
<td class="colLast">
<div class="block">Adds a <a href="ManifestFile.html" title="interface in org.apache.iceberg"><code>manifest file</code></a> to the table.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="RewriteManifests.html" title="interface in org.apache.iceberg">RewriteManifests</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#clusterBy(java.util.function.Function)">clusterBy</a></span>&#8203;(java.util.function.Function&lt;<a href="DataFile.html" title="interface in org.apache.iceberg">DataFile</a>,&#8203;java.lang.Object&gt;&nbsp;func)</code></th>
<td class="colLast">
<div class="block">Groups an existing <a href="DataFile.html" title="interface in org.apache.iceberg"><code>DataFile</code></a> by a cluster key produced by a function.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="RewriteManifests.html" title="interface in org.apache.iceberg">RewriteManifests</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deleteManifest(org.apache.iceberg.ManifestFile)">deleteManifest</a></span>&#8203;(<a href="ManifestFile.html" title="interface in org.apache.iceberg">ManifestFile</a>&nbsp;manifest)</code></th>
<td class="colLast">
<div class="block">Deletes a <a href="ManifestFile.html" title="interface in org.apache.iceberg"><code>manifest file</code></a> from the table.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="RewriteManifests.html" title="interface in org.apache.iceberg">RewriteManifests</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#rewriteIf(java.util.function.Predicate)">rewriteIf</a></span>&#8203;(java.util.function.Predicate&lt;<a href="ManifestFile.html" title="interface in org.apache.iceberg">ManifestFile</a>&gt;&nbsp;predicate)</code></th>
<td class="colLast">
<div class="block">Determines which existing <a href="ManifestFile.html" title="interface in org.apache.iceberg"><code>ManifestFile</code></a> for the table should be rewritten.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.iceberg.PendingUpdate">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.iceberg.<a href="PendingUpdate.html" title="interface in org.apache.iceberg">PendingUpdate</a></h3>
<code><a href="PendingUpdate.html#apply()">apply</a>, <a href="PendingUpdate.html#commit()">commit</a>, <a href="PendingUpdate.html#updateEvent()">updateEvent</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.iceberg.SnapshotUpdate">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.iceberg.<a href="SnapshotUpdate.html" title="interface in org.apache.iceberg">SnapshotUpdate</a></h3>
<code><a href="SnapshotUpdate.html#deleteWith(java.util.function.Consumer)">deleteWith</a>, <a href="SnapshotUpdate.html#set(java.lang.String,java.lang.String)">set</a>, <a href="SnapshotUpdate.html#stageOnly()">stageOnly</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a id="clusterBy(java.util.function.Function)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>clusterBy</h4>
<pre class="methodSignature"><a href="RewriteManifests.html" title="interface in org.apache.iceberg">RewriteManifests</a>&nbsp;clusterBy&#8203;(java.util.function.Function&lt;<a href="DataFile.html" title="interface in org.apache.iceberg">DataFile</a>,&#8203;java.lang.Object&gt;&nbsp;func)</pre>
<div class="block">Groups an existing <a href="DataFile.html" title="interface in org.apache.iceberg"><code>DataFile</code></a> 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). Manifests deleted via <a href="#deleteManifest(org.apache.iceberg.ManifestFile)"><code>deleteManifest(ManifestFile)</code></a> or
 added via <a href="#addManifest(org.apache.iceberg.ManifestFile)"><code>addManifest(ManifestFile)</code></a> are ignored during the rewrite process.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>func</code> - Function used to cluster data files to manifests.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a id="rewriteIf(java.util.function.Predicate)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rewriteIf</h4>
<pre class="methodSignature"><a href="RewriteManifests.html" title="interface in org.apache.iceberg">RewriteManifests</a>&nbsp;rewriteIf&#8203;(java.util.function.Predicate&lt;<a href="ManifestFile.html" title="interface in org.apache.iceberg">ManifestFile</a>&gt;&nbsp;predicate)</pre>
<div class="block">Determines which existing <a href="ManifestFile.html" title="interface in org.apache.iceberg"><code>ManifestFile</code></a> 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.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>predicate</code> - 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.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a id="deleteManifest(org.apache.iceberg.ManifestFile)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deleteManifest</h4>
<pre class="methodSignature"><a href="RewriteManifests.html" title="interface in org.apache.iceberg">RewriteManifests</a>&nbsp;deleteManifest&#8203;(<a href="ManifestFile.html" title="interface in org.apache.iceberg">ManifestFile</a>&nbsp;manifest)</pre>
<div class="block">Deletes a <a href="ManifestFile.html" title="interface in org.apache.iceberg"><code>manifest file</code></a> from the table.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>manifest</code> - a manifest to delete</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a id="addManifest(org.apache.iceberg.ManifestFile)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>addManifest</h4>
<pre class="methodSignature"><a href="RewriteManifests.html" title="interface in org.apache.iceberg">RewriteManifests</a>&nbsp;addManifest&#8203;(<a href="ManifestFile.html" title="interface in org.apache.iceberg">ManifestFile</a>&nbsp;manifest)</pre>
<div class="block">Adds a <a href="ManifestFile.html" title="interface in org.apache.iceberg"><code>manifest file</code></a> to the table. The added manifest cannot contain new
 or deleted files.
 <p>
 By default, the manifest will be rewritten to ensure all entries have explicit snapshot IDs.
 In that case, it is always the responsibility of the caller to manage the lifecycle of
 the original manifest.
 <p>
 If manifest entries are allowed to inherit the snapshot ID assigned on commit, the manifest
 should never be deleted manually if the commit succeeds as it will become part of the table
 metadata and will be cleaned up on expiry. If the manifest gets merged with others while
 preparing a new snapshot, it will be deleted automatically if this operation is successful.
 If the commit fails, the manifest will never be deleted and it is up to the caller whether
 to delete or reuse it.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>manifest</code> - a manifest to add</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../index.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" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses.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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&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 id="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>
