AI智能总结
顾宇飞yufei. gu @ snowflak. com © 2024 雪花公司保留所有权利 造成by: org. apache. icebug. exceptions. NotFoundException: 无法打开文件的输入流: s3: / / some / path / to / table / metadata / 13648 -45c53fb2 - 5124 - 4541 - ace3 -c63ed91e1d26. metadata. json 议程 • 为何选择REST Catalog?• 最新功能与未来方向• 日益增长的生态系统• 服务器实现:Apache Polaris(孵化中) 仅存储 l表仍然有效寻址不良: 使用命名空间和表的路径 l发动机l缺乏数据治理 , 例如 , 数据沿袭l性能问题没有缓存 , 重复读取查询和元数据的文件l兼容性问题 : 老客户与新客户 传统冰山目录 • 提供基本的数据治理CATALOG特征:- 引擎生成 metadata.json 文件- 引擎通过冲突解决(锁定表)进行重试- 性能顾虑:无缓存发动机• 兼容性问题 : 老客户与新客户 提交 更好地解决冲突 数据治理 冰山 REST 目录 • 将客户端职责转移到服务器 • 一个简单的想法来改变我们完全使用冰山表的方式 REST 目录 • 将客户责任转移到服务器 服务器端处理提交和重试。无需表级锁定。更快更可靠。服务器端写入metadata.json文件,不存在兼容性问题。 • 改进提交时的决策 更好地解决冲突 o• DDL vs DML , 当它与不相关的 DDL 冲突时不添加失败 • 压缩 vs 摄取多表事务 o • 更轻松的客户端实施 较少的责任意味着更简单的客户,如计算引擎,其他系统;更好地支持多种语言的客户,如Python、Rust、Go。 最近的功能 • 服务器端规划• Sever capability• 查看支持 未来方向 • 服务器端元数据表• 细粒度提交发动机• Credential Refresh, Credential Vending• 简化 LoadTable 跨引擎读写 Apache Iceberg 的开源 REST 协议,支持多个引擎进行读写操作:Apache Flink™、Apache Spark™、Trino 以及更多其他引擎。 • 表 / 视图 API • OAuth2 • 多表事务 集中化,安全和访问 •••定义委托人 / 用户和 Apache 中的角色北极星在上管理 RBAC用户的 Iceberg 表或角色管理安全性存储层自动售货范围引擎的凭据查询执行期间 在任何地方运行, 没有锁定 • 在容器(例如 Docker , Kubernetes) 中部署自己的基础设施 • 灵活切换基础架构并保留 RBAC、命名空间和表定义 实体层次结构 • Catalogs are INTERNAL (read/ write) or EXTERNAL (read - only for now) • 命名空间可以嵌套任意深 权限模型 委托人 : 应用程序或用户的身份 目录角色 : 实体上的权限分组 主要角色 : 主要角色和目录角色之间的连接 TryApache北极星在刚刚5分钟数 Git 克隆并在本地运行北极星git clone git @ github. com: apache / polaris. git. / gradlew runApp DEMO 在另一个终端中连接 Polaris 和 Spark SQL. / regtests / run _ spark _ sql. sh • 使用 Spark SQL 尝试 Polaris 运行 Spark SQL 命令 :创建数据库 db1; 显示所有数据库; 创建表 db1.table1 (id int,name string); 插入数据到 db1.table1: (1, 'a'); 选择 db1.table1 中的所有数据; 插入数据到 db1.table1: (2, 'b'); 调用 polaris.system.expire_snapshots('db1.table1', 时间戳 '2024-10-10'); 运行 PyIceberg CLI pyIceberg列表 pyIceberg 列表 db1 pyIceberg 描述 db1. t1 pyIceberg 文件 db1. t1 DEMO • 尝试使用 PyIceberg的北极星 > cat .pyiceberg.yamlcatalog:default:uri: http://localhost:8181/api/catalogwarehouse: manual_sparktoken:principal: rootrealm: default-realm 创建外部目录 你:属性(“type” = “iceberg”,“iceberg.catalog.type” = “rest”,“iceberg.catalog.uri” = “http://polaris.metastore.svc.cluster.local:8181/api/catalog”,“iceberg.catalog.credential” = “xxxx:xxxxxxxx”,“iceberg.catalog.scope” = “PRINCIPAL_ROLE:ALL”,“iceberg.catalog.warehouse” =quickstart _ catalog" ); DEMO • 尝试使用 StarRocks的北极星 •设置目录极化;•显示数据库•使用 db1;•从 db1. table1 中选择 count (*); 下一步是什么 ? 社区驱动的路线图 由 Notification API 支持的目录同步外部目录 - > 北极星 - > 外部目录 #85),More存储选项,e.g.,HDFS (问题S3兼容storages支持表类型其他than冰山,e.g.,Hive表via联邦More治理特点,e.g.,列掩蔽,加密,data谱系 高级冰山目录功能提交冲突解决服务器端规划适用于 HMS 用户的迁移工具 加入社区 ! •完美的时间加入 多样化的专业知识: PPMC 包括来自 Snowflake 、 o Dremio 、 Google 、 Microsoft 、 AWS 和 Confluent 等领先组织的成员。成为创新的一部分: 为具有强大社区的前沿项目做出贡献。 o •Get涉及 加入社区: 在开发列表和聊天通道上与我们互动。 o贡献到代码库: o • 添加新功能 • 错误修复 • 文档增强 分享反馈: 您的经验和建议对我们很有价值。 Resources