特性与限制
登录后可跨设备保存划线和私人笔记登录
功能
同步表格式元数据(TableFormatSync)
Apache XTable™ (Incubating) 使用户能够将元数据从一种表格式转换为另一种表格式。
Apache XTable™ (Incubating) 提供两种同步模式:"增量"(incremental)和"全量"(full)。增量模式更为轻量,性能更好,尤其是在大型表上。如果出现任何导致增量模式无法正常工作的情况,工具会回退到全量同步模式。
此同步为用户提供以下能力:
同步数据文件及其列级统计信息和分区元数据
源端的 Schema 变更能反映到目标表的元数据中
目标表格式的元数据维护。
同步外部目录中的表格式元数据(CatalogSync)
除了同步表格式元数据之外,Apache XTable™ (Incubating) 现已允许用户持续、增量地同步多个外部目录中表的元数据。这消除了在多个目录中手动注册表的步骤,从而减少摩擦,并通过避免目录锁定来提升灵活性。目前支持的两个目录是 HMS 和 AWS Glue,对其他目录(Unity、Apache Polaris、Apache Gravitino、DataHub)的支持即将推出。
限制与兼容性说明
通用
- 目前仅支持表的 Copy-on-Write 或 Read-Optimized 视图。这意味着只会同步底层的 parquet 文件,而 Hudi 的日志文件以及 Delta 和 Iceberg 的删除向量不会被同步捕获。
Hudi
读取 Hudi 目标表时需要 Hudi 0.14.0 或更高版本。用户还需要在读取数据时按需启用
- 元数据表(
hoodie.metadata.enable=true)以及 - Hive 风格分区(
hoodie.datasource.write.hive_style_partitioning=true)。
- 元数据表(
从 Hudi 同步到 Iceberg 时,请务必启用
parquet.avro.write-old-list-structure=false,以确保与列表类型的正确兼容。当使用 Hudi 作为源、Iceberg 作为目标时,可能需要在 parquet Schema 中设置字段 ID。要启用此功能,请按照此处的说明操作。
Delta
- 当使用 Delta 作为 Iceberg 目标表的数据源时,你可能需要在 Parquet schema 中设置字段 ID。要启用此功能,请按照此处的说明启用列映射。
- 当 Delta 作为数据源时,生成列(Generated Columns)不会同步到目标 schema。对于基于生成列分区的表,仅提供有限的支持。例如,我们支持将时间戳转换为
yyyy-MM-dd格式的日期函数。如果你认为某些场景应当得到支持,请提交 GitHub issue 或 pull request。
Parquet
- 不支持 Parquet 源目录中跨文件的 schema 演进。XTable 会从文件系统修改时间最新的文件的 footer 中推导表 schema;它不会合并或全面校验所有文件之间的 schema。如果文件的 schema 不一致,同步可能会使用无法代表所有文件的 schema,或者在处理这些文件时失败。复制或恢复文件也可能改变其修改时间,从而改变 XTable 所选择的 schema。
- 仅存在于目录路径中的 Hive 风格分区列不受支持。当配置了分区提取时,XTable 会针对所选文件的 schema 解析每个源字段。如果某个分区列仅存在于目录路径中(例如
region=eu/),XTable 无法合成该字段或推断其类型,同步将会失败。
评论
登录后参与评论
正在加载评论…
KnowForge