recap

recap

多源数据模式读写与转换工具

Recap是一个开源数据模式管理工具,支持从多种数据源读取和写入标准格式的数据模式。它兼容Avro、BigQuery、Confluent Schema Registry等格式,提供命令行界面、HTTP/JSON网关和API接口。Recap内置模式注册表功能,可进行模式存储和版本控制。该工具简化了数据集成和模式管理流程,适用于各类数据处理场景。

Recap数据架构API集成数据转换开源项目Github
<div align="center"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/33fdf89c-474c-4bc0-8b73-14237a477bb9.png?raw=true" alt="recap"> </div>

什么是Recap?

Recap以标准格式从Web服务、数据库和模式注册表中读取和写入模式。

⭐️ 如果你喜欢这个项目,请给它一个星标!这有助于项目获得更多关注。

目录

支持的格式

格式读取写入
Avro
BigQuery
Confluent模式注册表
Hive元数据存储
JSON模式
MySQL
PostgreSQL
Protobuf
Snowflake
SQLite

安装

安装Recap及其所有可选依赖项:

pip install 'recap-core[all]'

你也可以选择特定的依赖项:

pip install 'recap-core[avro,kafka]'

查看pyproject.toml获取可选依赖项列表。

使用方法

命令行界面

Recap配备了一个命令行界面,可以列出和读取外部系统的模式。

列出URL的子项:

recap ls postgresql://user:pass@host:port/testdb
[ "pg_toast", "pg_catalog", "public", "information_schema" ]

继续深入:

recap ls postgresql://user:pass@host:port/testdb/public
[ "test_types" ]

以Recap结构形式读取test_types表的模式:

recap schema postgresql://user:pass@host:port/testdb/public/test_types
{ "type": "struct", "fields": [ { "type": "int64", "name": "test_bigint", "optional": true } ] }

网关

Recap配备了一个无状态的HTTP/JSON网关,可以列出和读取数据目录和数据库中的模式。

http://localhost:8000启动服务器:

recap serve

列出PostgreSQL数据库中的模式:

curl http://localhost:8000/gateway/ls/postgresql://user:pass@host:port/testdb
["pg_toast","pg_catalog","public","information_schema"]

读取模式:

curl http://localhost:8000/gateway/schema/postgresql://user:pass@host:port/testdb/public/test_types
{"type":"struct","fields":[{"type":"int64","name":"test_bigint","optional":true}]}

网关实时从外部系统获取模式,并以Recap模式的形式返回。

OpenAPI模式可在http://localhost:8000/docs获取。

注册表

你可以在Recap的模式注册表中存储模式。

http://localhost:8000启动服务器:

recap serve

将模式放入注册表:

curl -X POST \ -H "Content-Type: application/x-recap+json" \ -d '{"type":"struct","fields":[{"type":"int64","name":"test_bigint","optional":true}]}' \ http://localhost:8000/registry/some_schema

从注册表获取模式(及版本):

curl http://localhost:8000/registry/some_schema
[{"type":"struct","fields":[{"type":"int64","name":"test_bigint","optional":true}]},1]

将模式的新版本放入注册表:

curl -X POST \ -H "Content-Type: application/x-recap+json" \ -d '{"type":"struct","fields":[{"type":"int32","name":"test_int","optional":true}]}' \ http://localhost:8000/registry/some_schema

列出架构版本:

curl http://localhost:8000/registry/some_schema/versions
[1,2]

获取架构的特定版本:

curl http://localhost:8000/registry/some_schema/versions/1
[{"type":"struct","fields":[{"type":"int64","name":"test_bigint","optional":true}]},1]

注册表使用fsspec将架构存储在各种文件系统中,如S3、GCS、ABS和本地文件系统。更多详情请参见注册表文档。

OpenAPI架构可在http://localhost:8000/docs获取。

API

Recap有recap.convertersrecap.clients包。

  • 转换器用于将架构转换为Recap架构或从Recap架构转换。
  • 客户端从外部系统(数据库、架构注册表等)读取架构,并使用转换器返回Recap架构。

从PostgreSQL读取架构:

from recap.clients import create_client with create_client("postgresql://user:pass@host:port/testdb") as c: c.schema("testdb", "public", "test_types")

将架构转换为Avro、Protobuf和JSON架构:

from recap.converters.avro import AvroConverter from recap.converters.protobuf import ProtobufConverter from recap.converters.json_schema import JSONSchemaConverter avro_schema = AvroConverter().from_recap(struct) protobuf_schema = ProtobufConverter().from_recap(struct) json_schema = JSONSchemaConverter().from_recap(struct)

将架构从一种格式转换为另一种格式:

from recap.converters.json_schema import JSONSchemaConverter from recap.converters.avro import AvroConverter json_schema = """ { "type": "object", "$id": "https://recap.build/person.schema.json", "properties": { "name": {"type": "string"} } } """ # 使用Recap作为中间格式将JSON架构转换为Avro struct = JSONSchemaConverter().to_recap(json_schema) avro_schema = AvroConverter().from_recap(struct)

在Recap的架构注册表中存储架构:

from recap.storage.registry import RegistryStorage from recap.types import StructType, IntType storage = RegistryStorage("file:///tmp/recap-registry-storage") version = storage.put( "postgresql://localhost:5432/testdb/public/test_table", StructType(fields=[IntType(32)]) ) storage.get("postgresql://localhost:5432/testdb/public/test_table") # 获取架构的所有版本 versions = storage.versions("postgresql://localhost:5432/testdb/public/test_table") # 列出注册表中的所有架构 schemas = storage.ls()

Docker

Recap的网关和注册表也可作为Docker镜像使用:

docker run \ -p 8000:8000 \ -e RECAP_URLS=["postgresql://user:pass@localhost:5432/testdb"]' \ ghcr.io/recap-build/recap:latest

更多详情请参见Recap的Docker文档

架构

有关Recap类型系统的详细信息,请参阅Recap的类型规范

文档

Recap的文档可在recap.build获取。

编辑推荐精选

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

nano-banana纳米香蕉中文站

nano-banana纳米香蕉中文站

国内直接访问,限时3折

输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

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

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

下拉加载更多