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获取。
Recap有recap.converters和recap.clients包。
从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()
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创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。


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


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


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


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


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


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


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


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


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