incubator-xtable

incubator-xtable

实现数据湖互操作性的跨表格式转换工具

Apache XTable™ (Incubating)是一款开源的跨表格式转换工具,支持Apache Hudi、Apache Iceberg和Delta Lake等主流表格式。它采用通用表示模型,简化数据湖操作,允许用户以单一格式写入数据,同时利用其他格式的集成功能。XTable™支持自定义转换器和目录配置,为数据处理系统和查询引擎提供全面互操作性,提高数据湖管理效率。

Apache XTable数据格式转换数据湖开源跨表转换器Github开源项目
<!-- - 根据 Apache 软件基金会 (ASF) 的一个或多个贡献者许可协议授权。 - 有关版权所有权的更多信息,请参阅随本作品分发的 NOTICE 文件。 - ASF 根据 Apache 许可证 2.0 版("许可证")向您授予本文件的使用许可; - 除非符合许可证的规定,否则您不得使用本文件。 - 您可以在以下位置获取许可证的副本: - - http://www.apache.org/licenses/LICENSE-2.0 - - 除非适用法律要求或书面同意,否则根据许可证分发的软件是按"原样"分发的, - 不附带任何明示或暗示的担保或条件。 - 有关许可证下的特定语言管理权限和限制,请参阅许可证。 -->

Apache XTable™(孵化中)

Maven CI 构建

Apache XTable™(孵化中)是一个跨表格式转换器,可促进数据处理系统和查询引擎之间的全方位互操作性。目前,Apache XTable™ 支持广泛采用的开源表格式,如 Apache Hudi、Apache Iceberg 和 Delta Lake。

Apache XTable™ 通过利用通用的表示模型简化了数据湖操作。这使用户能够以一种格式写入数据,同时仍然受益于其他格式中可用的集成和功能。例如,Apache XTable™ 使现有的 Hudi 用户能够无缝地使用 Databricks 的 Photon 引擎或使用 Snowflake 查询 Iceberg 表。从一种格式转换到另一种格式很简单,只需实现几个接口,我们相信这将促进未来支持的源格式和目标格式的扩展。

构建项目和运行测试

  1. 使用 Java 11 构建项目。如果您使用的是其他 Java 版本,可以使用 jenv 在本地使用多个 Java 版本。
  2. 使用 mvn clean package 构建项目。使用 mvn clean package -DskipTests 可在构建时跳过测试。
  3. 使用 mvn clean testmvn test 运行所有单元测试。如果您只需要运行特定的测试,可以使用类似 mvn test -Dtest=TestDeltaSync -pl xtable-core 的命令。
  4. 同样,使用 mvn clean verifymvn verify 运行集成测试。

代码风格指南

  1. 我们使用 Maven Spotless 插件Google Java 格式 来规范代码风格。
  2. 使用 mvn spotless:check 查找代码风格违规,使用 mvn spotless:apply 修复它们。代码风格检查默认与编译阶段绑定,因此代码风格违规会导致构建失败。

运行打包好的 jar 文件

  1. 获取预构建的打包 jar 文件或使用 mvn install -DskipTests 创建 jar 文件
  2. 创建一个符合以下格式的 yaml 文件:
sourceFormat: HUDI targetFormats: - DELTA - ICEBERG datasets: - tableBasePath: s3://tpc-ds-datasets/1GB/hudi/call_center tableDataPath: s3://tpc-ds-datasets/1GB/hudi/call_center/data tableName: call_center namespace: my.db - tableBasePath: s3://tpc-ds-datasets/1GB/hudi/catalog_sales tableName: catalog_sales partitionSpec: cs_sold_date_sk:VALUE - tableBasePath: s3://hudi/multi-partition-dataset tableName: multi_partition_dataset partitionSpec: time_millis:DAY:yyyy-MM-dd,type:VALUE - tableBasePath: abfs://container@storage.dfs.core.windows.net/multi-partition-dataset tableName: multi_partition_dataset
  • sourceFormat 是你想要转换的源表格式
  • targetFormats 是你想从源表创建的格式列表
  • tableBasePath 是表的基础路径
  • tableDataPath 是一个可选字段,指定数据文件的路径。如果未指定,将使用 tableBasePath。对于 Iceberg 源表,你需要指定 /data 路径。
  • namespace 是一个可选字段,指定表的命名空间,在同步到目录时使用。
  • partitionSpec 是一个允许我们推断分区值的规范。这仅适用于 Hudi 源表。如果表未分区,请留空。如果已分区,你可以指定一个以逗号分隔的列表,格式为 路径:类型:格式
    • 路径 是指向分区字段的点分隔路径
    • 类型 描述了如何从列值生成分区值
      • VALUE:字段值到分区值的恒等转换
      • YEAR:数据按表示日期的字段分区,使用年份粒度
      • MONTH:与 YEAR 相同,但使用月份粒度
      • DAY:与 YEAR 相同,但使用天粒度
      • HOUR:与 YEAR 相同,但使用小时粒度
    • 格式:如果你的分区类型是 YEARMONTHDAYHOUR,请指定日期字符串在文件路径中出现的格式
  1. 表格式转换器的默认实现可以通过指定以下格式的转换器配置 yaml 文件来替换为自定义实现:
# conversionSourceProviderClass:表格式转换器工厂的类名,用于从该格式的表中读取。所有用户配置, # 包括 hadoop 配置和转换器特定配置,都将可用于工厂实例化转换器。 # conversionTargetProviderClass:表格式转换器工厂的类名,用于写入该格式的表。 # configuration:特定于此转换器的配置值映射。 tableFormatConverters: HUDI: conversionSourceProviderClass: org.apache.xtable.hudi.HudiConversionSourceProvider DELTA: conversionTargetProviderClass: org.apache.xtable.delta.DeltaConversionTarget configuration: spark.master: local[2] spark.app.name: xtable
  1. 读取和更新 Iceberg 表时可以使用目录。可以在 yaml 文件中指定目录,并通过 --icebergCatalogConfig 选项传入。目录配置文件的格式如下:
catalogImpl: io.my.CatalogImpl catalogName: name catalogOptions: # 所有其他选项都通过映射传递 key1: value1 key2: value2
  1. 使用以下命令运行:java -jar xtable-utilities/target/xtable-utilities-0.1.0-SNAPSHOT-bundled.jar --datasetConfig my_config.yaml [--hadoopConfig hdfs-site.xml] [--convertersConfig converters.yaml] [--icebergCatalogConfig catalog.yaml] 打包的 jar 文件包含 AWS、Azure 和 GCP 的 Hadoop 依赖项。配置转换器的示例 Hadoop 配置可以在 xtable-hadoop-defaults.xml 文件中找到。 自定义 Hadoop 配置可以通过 --hadoopConfig [custom-hadoop-config-file] 选项传入。 自定义 Hadoop 配置文件中的配置将覆盖默认的 Hadoop 配置。有关自定义 Hadoop 配置文件的示例,请参见 hadoop.xml

使用 Docker 运行

  1. 使用 docker build . -t xtable 构建 Docker 镜像
  2. 在容器上挂载配置文件并运行容器:
docker run \
  -v ./xtable/config.yml:/xtable/config.yml \
  -v ./xtable/core-site.xml:/xtable/core-site.xml \
  -v ./xtable/catalog.yml:/xtable/catalog.yml \
  xtable \
  --datasetConfig /xtable/config.yml --hadoopConfig /xtable/core-site.xml --icebergCatalogConfig xtable/catalog.yml

贡献

设置

要在 IntelliJ 上设置仓库,请打开项目并在 File->ProjectStructure 中将 Java 版本更改为 Java 11 img.png

如果你发现了bug,或者有想要贡献给项目的好想法,请在这里提交 GitHub issue

添加新的目标格式

添加新的目标格式需要开发者实现 ConversionTarget。一旦你实现了该接口,你就可以将其集成到 ConversionController 中。如果你认为其他人可能会发现该目标有用,请提交 Pull Request 将其添加到项目中。

同步过程概述

img.png

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具使用教程AI营销产品酷表ChatExcelAI智能客服
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

数据安全AI助手热门AI工具AI辅助写作AI论文工具论文写作智能生成大纲
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

热门AI工具AI办公办公工具智能排版AI生成PPT博思AIPPT海量精品模板AI创作
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多