blob: 14c30dfab44009a9ecf72df5fc4bd7c87a9a0967 [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>FileRewriter</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="FileRewriter";
}
}
catch(err) {
}
//-->
var methods = {"i0":18,"i1":6,"i2":6,"i3":6,"i4":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],16:["t5","Default 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/ExpireSnapshots.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/MigrateTable.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/FileRewriter.html" target="_top">Frames</a></li>
<li><a href="FileRewriter.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>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 FileRewriter" class="title">Interface FileRewriter&lt;T extends <a href="../../../../org/apache/iceberg/ContentScanTask.html" title="interface in org.apache.iceberg">ContentScanTask</a>&lt;F&gt;,F extends <a href="../../../../org/apache/iceberg/ContentFile.html" title="interface in org.apache.iceberg">ContentFile</a>&lt;F&gt;&gt;</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - the Java type of tasks to read content files</dd>
<dd><code>F</code> - the Java type of content files</dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../org/apache/iceberg/actions/SizeBasedDataRewriter.html" title="class in org.apache.iceberg.actions">SizeBasedDataRewriter</a>, <a href="../../../../org/apache/iceberg/actions/SizeBasedFileRewriter.html" title="class in org.apache.iceberg.actions">SizeBasedFileRewriter</a>, <a href="../../../../org/apache/iceberg/actions/SizeBasedPositionDeletesRewriter.html" title="class in org.apache.iceberg.actions">SizeBasedPositionDeletesRewriter</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">FileRewriter&lt;T extends <a href="../../../../org/apache/iceberg/ContentScanTask.html" title="interface in org.apache.iceberg">ContentScanTask</a>&lt;F&gt;,F extends <a href="../../../../org/apache/iceberg/ContentFile.html" title="interface in org.apache.iceberg">ContentFile</a>&lt;F&gt;&gt;</span></pre>
<div class="block">A class for rewriting content files.
<p>The entire rewrite operation is broken down into pieces based on partitioning, and size-based
groups within a partition. These subunits of the rewrite are referred to as file groups. A file
group will be processed by a single framework "action". For example, in Spark this means that
each group would be rewritten in its own Spark job.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== 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><span id="t5" class="tableTab"><span><a href="javascript:show(16);">Default 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>default java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/iceberg/actions/FileRewriter.html#description--">description</a></span>()</code>
<div class="block">Returns a description for this rewriter.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/iceberg/actions/FileRewriter.html#init-java.util.Map-">init</a></span>(java.util.Map&lt;java.lang.String,java.lang.String&gt;&nbsp;options)</code>
<div class="block">Initializes this rewriter using provided options.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>java.lang.Iterable&lt;java.util.List&lt;<a href="../../../../org/apache/iceberg/actions/FileRewriter.html" title="type parameter in FileRewriter">T</a>&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/iceberg/actions/FileRewriter.html#planFileGroups-java.lang.Iterable-">planFileGroups</a></span>(java.lang.Iterable&lt;<a href="../../../../org/apache/iceberg/actions/FileRewriter.html" title="type parameter in FileRewriter">T</a>&gt;&nbsp;tasks)</code>
<div class="block">Selects files which this rewriter believes are valid targets to be rewritten based on their
scan tasks and groups those scan tasks into file groups.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>java.util.Set&lt;<a href="../../../../org/apache/iceberg/actions/FileRewriter.html" title="type parameter in FileRewriter">F</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/iceberg/actions/FileRewriter.html#rewrite-java.util.List-">rewrite</a></span>(java.util.List&lt;<a href="../../../../org/apache/iceberg/actions/FileRewriter.html" title="type parameter in FileRewriter">T</a>&gt;&nbsp;group)</code>
<div class="block">Rewrite a group of files represented by the given list of scan tasks.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>java.util.Set&lt;java.lang.String&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/iceberg/actions/FileRewriter.html#validOptions--">validOptions</a></span>()</code>
<div class="block">Returns a set of supported options for this rewriter.</div>
</td>
</tr>
</table>
</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="description--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>description</h4>
<pre>default&nbsp;java.lang.String&nbsp;description()</pre>
<div class="block">Returns a description for this rewriter.</div>
</li>
</ul>
<a name="validOptions--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validOptions</h4>
<pre>java.util.Set&lt;java.lang.String&gt;&nbsp;validOptions()</pre>
<div class="block">Returns a set of supported options for this rewriter. Only options specified in this list will
be accepted at runtime. Any other options will be rejected.</div>
</li>
</ul>
<a name="init-java.util.Map-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>init</h4>
<pre>void&nbsp;init(java.util.Map&lt;java.lang.String,java.lang.String&gt;&nbsp;options)</pre>
<div class="block">Initializes this rewriter using provided options.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>options</code> - options to initialize this rewriter</dd>
</dl>
</li>
</ul>
<a name="planFileGroups-java.lang.Iterable-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>planFileGroups</h4>
<pre>java.lang.Iterable&lt;java.util.List&lt;<a href="../../../../org/apache/iceberg/actions/FileRewriter.html" title="type parameter in FileRewriter">T</a>&gt;&gt;&nbsp;planFileGroups(java.lang.Iterable&lt;<a href="../../../../org/apache/iceberg/actions/FileRewriter.html" title="type parameter in FileRewriter">T</a>&gt;&nbsp;tasks)</pre>
<div class="block">Selects files which this rewriter believes are valid targets to be rewritten based on their
scan tasks and groups those scan tasks into file groups. The file groups are then rewritten in
a single executable unit, such as a Spark job.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>tasks</code> - an iterable of scan task for files in a partition</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>groups of scan tasks for files to be rewritten in a single executable unit</dd>
</dl>
</li>
</ul>
<a name="rewrite-java.util.List-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>rewrite</h4>
<pre>java.util.Set&lt;<a href="../../../../org/apache/iceberg/actions/FileRewriter.html" title="type parameter in FileRewriter">F</a>&gt;&nbsp;rewrite(java.util.List&lt;<a href="../../../../org/apache/iceberg/actions/FileRewriter.html" title="type parameter in FileRewriter">T</a>&gt;&nbsp;group)</pre>
<div class="block">Rewrite a group of files represented by the given list of scan tasks.
<p>The implementation is supposed to be engine-specific (e.g. Spark, Flink, Trino).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>group</code> - a group of scan tasks for files to be rewritten together</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a set of newly written files</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/ExpireSnapshots.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/MigrateTable.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/FileRewriter.html" target="_top">Frames</a></li>
<li><a href="FileRewriter.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>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>