iceberg snapshots快照删除接口源码分析

iceberg快照删除的ExpireSnapshots的接口的代码及注释。该接口用于从表中删除旧的快照,提供了一系列方法来控制过期快照的删除行为。通过调用不同的方法,可以设置要过期的快照ID、过期时间戳以及保留最近祖先快照的数量等。此外,还可以传递替代的删除实现和执行删除的ExecutorService。最后,可以使用cleanExpiredFiles方法设置是否清理底层清单文件和数据文件

package org.apache.iceberg;

import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.function.Consumer;

/**
 * 用于从表中删除旧快照的API。
 *
 * 此API累积快照删除并将新列表提交到表中。
 * 此API不允许删除当前快照。  提交时,这些更改将应用于最新的表元数据。提交冲突将通过将更改应用于新的最新元数据并重新尝试提交来解   * 决。 有效快照不再使用的清单文件将被删除。过期的快照删除的数据文件将被删除。
 * deleteWith(Consumer)可用于传递一个替代的删除方法。 apply()返回将要删除的快照的列表
 */
public interface ExpireSnapshots extends PendingUpdate<List<Snapshot>> {

  /**
   * 过期指定id标识的{@link Snapshot}。
   *
   * @param snapshotId 要过期的快照的长整型id
   * @return 用于方法链式调用的对象本身
   */
  ExpireSnapshots expireSnapshotId(long snapshotId);

  /**
   * 过期早于给定时间戳的所有快照。
   *
   * @param timestampMillis 长整型时间戳,由{@link System#currentTimeMillis()}返回
   * @return 用于方法链式调用的对象本身
   */
  ExpireSnapshots expireOlderThan(long timestampMillis);

  /**
   * 保留当前快照的最近祖先快照。
   *
   * <p>如果一个快照由于比过期时间戳更早而被过期,但是它是当前状态的{@code numSnapshots}个最近祖先之一,那么它将被保留。这不会导致以id明确标识的快照过期。
   *
   * <p>如果快照在并发添加时可能保留多于{@code numSnapshots}个祖先。如果当前表状态没有那么多快照,则可能保留少于{@code numSnapshots}个祖先。
   *
   * @param numSnapshots 要保留的快照数量
   * @return 用于方法链式调用的对象本身
   */
  ExpireSnapshots retainLast(int numSnapshots);

  /**
   * 传递替代的删除实现,将用于清单文件和数据文件。
   *
   * <p>不再被有效快照使用的清单文件将被删除。已过期的快照删除的数据文件也将被删除。
   *
   * <p>如果不调用此方法,仍然会删除不必要的清单文件和数据文件。
   *
   * @param deleteFunc 将被调用以删除清单文件和数据文件的函数
   * @return 用于方法链式调用的对象本身
   */
  ExpireSnapshots deleteWith(Consumer<String> deleteFunc);

  /**
   * 传递替代的执行删除的ExecutorService。
   *
   * <p>不再被有效快照使用的清单文件将被删除。已过期的快照删除的数据文件也将被删除。
   *
   * <p>如果不调用此方法,仍然会使用单线程的ExecutorService删除不必要的清单文件和数据文件。
   *
   * @param executorService 用于并行化删除清单文件和数据文件任务的ExecutorService
   * @return 用于方法链式调用的对象本身
   */
  ExpireSnapshots executeDeleteWith(ExecutorService executorService);

  /**
   * 传递替代的计划ExecutorService。如果不调用此方法,将使用默认的工作线程池。
   *
   * @param executorService 用于计划的ExecutorService
   * @return 用于方法链式调用的对象本身
   */
  ExpireSnapshots planWith(ExecutorService executorService);

  /**
   * 允许在不清理底层清单文件或数据文件的情况下过期快照。
   *
   * <p>允许控制删除可能更高效地使用分布式框架通过操作API删除的数据和清单文件。
   *
   * @param clean 设置为false将跳过删除过期的清单文件和文件
   * @return 用于方法链式调用的对象本身
   */
  ExpireSnapshots cleanExpiredFiles(boolean clean);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigDataMLApplication

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值