先以RewriteDataFilesSparkAction为例

三个预备动作,再Client中执行?不满足就停止?

  1. 规划文件
  2. 过滤文件
  3. 生成文件组

  4. 执行重写逻辑 rewriteFiles�通过SparkSession�#�format(“iceberg”)�去重写一个新文件

Spark存储过程拼接点
RewriteDataFilesSparkAction�#execute
会通过#planFileGroups�给每个分区的文件分组

以BinPack举例
BinPackStrategy�#selectFilesToRewrite�
BinPackStrategy#planFileGroups�

单个文件扫描

DataTableScan�#planFiles� 规划文件
一个文件对应一个 FileScanTask�

Iceberg与Spark拼接点
public class IcebergSource implements DataSourceRegister, SupportsCatalogOptions �

Scala/Java代码执行入口

SparkActions�