blob: 4ff986406c4bba9b9ae4a113dc658bb7096daf20 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>FileRewriter</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.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.6.1.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="FileRewriter";
}
}
catch(err) {
}
//-->
var data = {"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";
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.actions</a></div>
<h2 title="Interface FileRewriter" class="title">Interface FileRewriter&lt;T extends <a href="../ContentScanTask.html" title="interface in org.apache.iceberg">ContentScanTask</a>&lt;F&gt;,&#8203;F extends <a href="../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><code><a href="SizeBasedDataRewriter.html" title="class in org.apache.iceberg.actions">SizeBasedDataRewriter</a></code>, <code><a href="SizeBasedFileRewriter.html" title="class in org.apache.iceberg.actions">SizeBasedFileRewriter</a></code>, <code><a href="SizeBasedPositionDeletesRewriter.html" title="class in org.apache.iceberg.actions">SizeBasedPositionDeletesRewriter</a></code></dd>
</dl>
<hr>
<pre>public interface <span class="typeNameLabel">FileRewriter&lt;T extends <a href="../ContentScanTask.html" title="interface in org.apache.iceberg">ContentScanTask</a>&lt;F&gt;,&#8203;F extends <a href="../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 =========== -->
<section>
<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><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="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>default java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#description()">description</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns a description for this rewriter.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#init(java.util.Map)">init</a></span>&#8203;(java.util.Map&lt;java.lang.String,&#8203;java.lang.String&gt;&nbsp;options)</code></th>
<td class="colLast">
<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="FileRewriter.html" title="type parameter in FileRewriter">T</a>&gt;&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#planFileGroups(java.lang.Iterable)">planFileGroups</a></span>&#8203;(java.lang.Iterable&lt;<a href="FileRewriter.html" title="type parameter in FileRewriter">T</a>&gt;&nbsp;tasks)</code></th>
<td class="colLast">
<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="FileRewriter.html" title="type parameter in FileRewriter">F</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#rewrite(java.util.List)">rewrite</a></span>&#8203;(java.util.List&lt;<a href="FileRewriter.html" title="type parameter in FileRewriter">T</a>&gt;&nbsp;group)</code></th>
<td class="colLast">
<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>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validOptions()">validOptions</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns a set of supported options for this rewriter.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="description()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>description</h4>
<pre class="methodSignature">default&nbsp;java.lang.String&nbsp;description()</pre>
<div class="block">Returns a description for this rewriter.</div>
</li>
</ul>
<a id="validOptions()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validOptions</h4>
<pre class="methodSignature">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 id="init(java.util.Map)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>init</h4>
<pre class="methodSignature">void&nbsp;init&#8203;(java.util.Map&lt;java.lang.String,&#8203;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 id="planFileGroups(java.lang.Iterable)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>planFileGroups</h4>
<pre class="methodSignature">java.lang.Iterable&lt;java.util.List&lt;<a href="FileRewriter.html" title="type parameter in FileRewriter">T</a>&gt;&gt;&nbsp;planFileGroups&#8203;(java.lang.Iterable&lt;<a href="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 id="rewrite(java.util.List)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>rewrite</h4>
<pre class="methodSignature">java.util.Set&lt;<a href="FileRewriter.html" title="type parameter in FileRewriter">F</a>&gt;&nbsp;rewrite&#8203;(java.util.List&lt;<a href="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>
</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>