MaxCompute提供数据湖分析方案,允许用户建立定义外部数据源元数据和数据访问方式的管理对象,并通过外部项目或外部模式映射机制实现直接访问外部数据源Catalog或Database或Schema范围内的全部表的能力。该方案可以打破数据湖与数据仓库割裂的体系,融合数据湖的灵活性、丰富的多引擎生态与数据仓库的企业级能力,助力构建数据湖和数据仓库相融合的数据管理平台(本功能处于公测阶段)。
数据仓库与数据湖
类别 | 能力 |
数据仓库 | 更强调对进入数仓的结构化、半结构化数据的管理和约束,并依赖强管理能力,获得更好的计算性能和更规范化的管理能力。 |
数据湖 | 更强调数据存储的开放性和数据格式的通用性,支持多种引擎按需生产或消费数据,为保障灵活性只提供弱管理能力,可以兼容非结构化数据,并支持后建Schema的使用方式,是一种更灵活的数据管理方式。 |
MaxCompute数据仓库
MaxCompute是基于Serverless架构的云原生数据仓库。可以进行如下操作:
使用MaxCompute进行数据仓库建模。
使用ETL工具将数据加载入有结构定义的模型表中并存储。
使用标准的SQL引擎处理数仓中的海量数据,并通过MaxQA 或 Hologres OLAP引擎分析数据。
MaxCompute在数据湖上的使用场景和联邦场景
在数据湖场景中,数据存在于湖上,并有多种引擎生产或消费这些开放的数据。MaxCompute计算引擎作为湖上引擎的一种,也可以参与数据的加工和使用。此时,MaxCompute需要读取数据湖上游产生的数据,兼容多种主流开源数据格式,在引擎内计算,并持续向工作流下游生产数据。
同时,MaxCompute作为安全、高性能和高性价比、汇聚了高价值数据的数仓,也需要能够从数据湖上获取元数据和数据,进行外部数据的引擎内计算,并与仓内数据做联邦计算提取数据价值,向强管理的数仓汇聚。
除了在数据湖之上,MaxCompute作为数仓也需要获取多种外部数据源的数据,例如Hadoop、Hologres等,与仓内数据做联邦计算。在联邦计算场景下,MaxCompute同样需要支持读取外部系统的元数据和数据。
MaxCompute数据湖分析
MaxCompute数据湖分析基于MaxCompute计算引擎。
支持通过云产品互联网络访问阿里云元数据服务或对象存储服务,如果要访问的数据源在VPC中,则通过专线网络访问VPC中的外部数据源;
允许用户建立定义外部数据源元数据和数据访问方式的管理对象,并通过外部项目或外部模式映射外部数据源的Catalog或Database或Schema层析,实现直接访问外部数据源Catalog或Database或Schema范围内的全部表的能力。

网络连接
详情请参见网络开通流程中Networklink的相关说明。MaxCompute可以通过网络连接访问VPC网络中的数据源,例如EMR实例,RDS实例(准备中)。DLF(Data Lake Formation,数据湖构建)、OSS(对象存储)和Hologres位于云产品互联网络中,MaxCompute无需设置网络连接对象Networklink即可直接访问其中的数据。
外部数据源(Foreign Server)
包含了元数据和数据访问的信息,同时包含访问数据源系统的身份认证信息,位置信息和连接协议说明等。通过外部数据源,MaxCompute才可以连接和使用数据源的元数据和数据。外部数据源是租户面的管理对象,由租户管理员定义。
外部模式(External Schema)
外部模式是MaxCompute数仓项目中一种特殊Schema,如上图所示,可以映射数据源的Database(DLF_lagecy或Hive场景)或Schema(Hologres场景)层级,并可直接访问对端Database或Schema范围内的表和数据。这种并没有在MaxCompute元数据中创建,只是通过外部Schema映射至对端数据源的表被称为联邦外表(Mounted Table)。
联邦外表在MaxCompute内不存储元数据信息,而是由MaxCompute通过外部数据源对象中的元数据服务实时获取。用户查询时无需在数仓中通过DDL语句创建外部表,可直接以项目名称和外部模式名称作为命名空间,引用数据源原表名的方式进行操作。数据源表结构或数据发生变化时,联邦外表能够即时反映数据源表的最新状态。外部Schema映射的数据源层次由外部数据源定义的层次与数据源中表层次之间的系统层次决定。外部数据源定义的层次由认证身份能访问的数据源层次决定。
外部项目(External Project)
在湖仓一体1.0方案中,外部项目是两层模式,和外部模式一样映射一个数据源的Database(DLF_lagecy或Hive场景)或Schema(Hologres场景)层级,且需要依赖一个数仓项目作为任务运行环境才可以读取外部数据并计算。但是以项目层级映射数据源Database或Schema会导致外部项目数量过多,且MaxCompute后续建议构建的项目为三层模式,便于和外部数据源三层的Catalog层析对应,而两层的湖仓一体1.0的外部项目难以和新的三层数仓项目共同使用,所以MaxCompute会逐步收敛湖仓一体1.0的外部项目,存量用户可以将其迁移到外部Schema上。迁移方案详情参见:湖仓一体1.0外部项目迁移为湖仓一体2.0外部模式方案。
在数据湖分析中,新的外部项目直接映射对端三层模式数据源Catalog(DLF场景)或Database(Hologres场景),并直接可见DLF Catalog之下的Database,或Hologres Database之下的Schema ,这层在MaxCompute中也不通过创建而是直接映射而来,称为Mounted Schema,再以联邦外表的方式访问数据源表。
数据源类型 | 外部数据源层次 | 外部Schema映射层次 | 外部项目映射层次 | 湖仓一体1.0外部项目(下线中)映射层次 | 认证方式 |
DLF_legacy+OSS | Region级别DLF服务和OSS服务 | DLF的Catalog.Database | 不支持 | DLF的Catalog.Database | RAMRole |
Hive+HDFS | EMR实例 | Hive的Database | 不支持 | Hive的Database | 免认证方式 |
Hologres | Hologres实例的Database | Schema | - | 不支持 | RAMRole |
- | Database | 不支持 | SLR+当前用户身份认证 | ||
DLF | Region级别DLF服务 | 不支持 | DLF的Catalog | 不支持 | SLR+当前用户身份认证 |
Filesystem Catalog | OSS上Paimon Catalog级别目录 | 不支持 | Paimon Catalog级别目录解析的Catalog | 不支持 | RAMRole |
不同数据源的认证方式有多种类型,MaxCompute会在后续版本逐步提供多种认证方式,例如访问Hologres使用当前用户身份方式、访问Hive使用Kerberos认证方式等。