MaxCompute加速

HologresMaxCompute数据源底层无缝打通,深度融合,可双向直读对方存储,一键映射对方元数据,大大提升数据访问效率。本文为您介绍Hologres加速读写MaxCompute数据的相关能力及使用限制。

背景信息

  • 大数据计算服务(MaxCompute)是一种快速、完全托管的EB级数据仓库,致力于批量结构化数据的存储和计算,提供海量数据仓库的解决方案及分析建模服务。详情请参见什么是MaxCompute

  • Hologres是阿里巴巴自主研发的一站式实时数据仓库引擎(Real-Time Data Warehouse),支持海量数据的实时写入、实时更新、实时处理和实时分析。该引擎与MaxCompute原生深度集成,支持通过创建外部数据库和外部表的方式实现MaxCompute元数据的映射及查询加速,无需导入数据,即可通过一份存储快速获取查询结果并提供对外服务。此外,Hologres采用标准PostgreSQL协议,能够无缝对接PostgreSQL生态系统中的所有主流BI工具,详情请参见BI分析及可视化

  • Hologres V3.1版本起,Hologres直读MaxCompute数据已全面升级为2.0版本。该版本基于MaxCompute C++ Native SDK重构了底层直读方式,进一步提升了Hologres访问MaxCompute数据源的性能和用户体验。直读方式相较于基于开放存储StorageAPI方式,因直读盘古存储,MaxCompute侧没有额外的计算成本开销,没有限流,且在读取性能上,有两倍以上的性能优势。

    说明

    使用新链路访问MaxCompute Table需要添加GUC ,建议Session级别开启,在查询SQL前一起执行SET hg_experimental_external_catalog_routing = 'odps:common_table';命令。

场景介绍

使用外表加速查询MaxCompute数据

在离线实时一体化方案中,最关键的是数据交换的简化,最好无需移动数据,一份存储即可支持离线与实时两种计算方式。外部表查询有效地解决了这一问题。

您可通过CREATE EXTERNAL DATABASE的方式整库映射MaxCompute内部Project下的Schema和表,也可以通过IMPORT FOREIGN SCHEMA方式批量创建外部表,同时对于仅需要加速查询少量MaxCompute表或者某张表中部分字段的场景,我们也提供了CREATE FOREIGN TABLE的方式,您可以根据业务特性和场景,选择合适的加速方式。

说明

Hologres V3.0 版本开始,通过外部表查询MaxCompute数据取消了一次查询扫描数据量不超过200 GB、分区数不超过512个的限制,方便您更好地使用该服务。同时,放宽限制的大查询会消耗更多的Hologres实例资源,请您做好资源隔离,详情请参见计算组实例快速入门,或者对于偶发的大查询可以使用Serverless模式,详情请参见Serverless Computing

MaxCompute数据导入Hologres

为了获取更好的查询性能,您也可以将数据导入Hologres,再进行查询。该方式可充分利用Hologres的索引能力和存储优化来进一步加速查询,来实现BI实时分析、高并发点查、多表复杂关联查询等场景,详情请参见MaxCompute数据导入Hologres

Hologres数据导出至MaxCompute

在实际业务场景中,我们通常需要将Hologres实时写入的数据与经过聚合分析后的结果回写至MaxCompute,用来实现历史数据归档存储、冷热数据分层管理以及离线数仓数据回补等场景,您可通过INSERT INTOINSERT OVERWRITE方式回写数据至MaxCompute。详情请参见导出至MaxCompute

功能详情

Hologres加速MaxCompute外部表支持的具体能力如下:

Hologres版本号

支持的能力

描述

V3.1

Hologres直读MaxCompute数据已全面升级为2.0版本。该版本基于MaxCompute C++ Native SDK重构了底层直读方式,进一步提升了Hologres访问MaxCompute数据源的性能和用户体验。

与通过开放存储StorageAPI的读取方式相比,2.0版本的直读机制可直读盘古存储,MaxCompute端无需额外的计算成本开销,且不存在限流现象。此外,在读取性能方面,直读方式具有超过有两倍的性能优势。

支持直读MaxCompute Delta Table数据,当前仅支持全量访问Delta Table最新Snapshot。

Delta TableMaxCompute推出的增量数据表格式,支持分钟级数据导入,底层使用AliORC作为文件格式,支持UPSERT语义,并能够提供按照CDC(Change Data Capture)格式读写增量数据,详情请参见Hologres访问MaxCompute Delta Table

支持直读MaxCompute动态脱敏数据。

MaxCompute动态脱敏功能,帮助客户在数据访问或展示时实时隐藏或替换敏感数据,以防止敏感数据泄露。详见数据动态脱敏

支持直读MaxCompute Schema Evolution表。

支持的操作类型包括增加列、删除列、修改列类型、调整列顺序。

支持直读访问MaxCompute Cluster Table,包括使用DATETIME、TIMESTAMP、DECIMAL类型作为Cluster列的Range Cluster表。

V3.0.7

支持通过CREATE EXTERNAL DATABASE的方式完整映射MaxCompute Project下的Schema和表。

CREATE EXTERNAL DATABASE 用于在Hologres实例中创建一个外部数据库,来加载外部数据源的元数据到Hologres,方便在一个系统中同时管理内、外部数据,实现湖仓一体架构下统一的元数据管理。详情请参见CREATE EXTERNAL DATABASE

取消外部表查询一次查询扫描数据量不超过200GB、分区数不超过512个的限制。

取消外部表查询限制,便于用户使用Hologres加速查询更大规模MaxCompute数据,同时提供计算组实例、Serverless方式以实现资源隔离,从而避免大查询消耗过多实例资源,影响其他查询和写入作业的执行。

V2.2.1

外部表自动加载支持MaxCompute Schema(三层模型)。

SchemaMaxCompute介于项目和表、资源、函数之间的概念,对表、资源及函数进行进一步归类。外部表自动加载详情请参见外部表自动加载(Auto Load)

外部表自动加载支持元数据自动刷新。

外部表自动加载支持MaxCompute外部表Schema Evolution。

MaxCompute侧执行过删除列、修改列顺序、修改列类型等操作的表。详情请参见外部表自动加载(Auto Load)

支持通过SLR访问MaxCompute数据。

服务关联角色(ServiceLinkedRole,简称SLR)是一种可信实体为阿里云服务的RAM角色,旨在解决跨云服务的授权访问问题,详情请参见Hologres服务关联角色

V2.1

支持对MaxCompute三层模型指定Schema下的表进行数据写入。

SchemaMaxCompute介于项目和表、资源、函数之间的概念,对表、资源及函数进行进一步归类。详情请参见Schema

支持通过HoloWeb可视化访问MaxCompute三层模型指定Schema下的表。

详情请参见基于HoloWeb创建MaxCompute外部表

V2.0

升级MaxCompute加速引擎为HQE,改善兼容性与稳定性。

V1.3

支持通过外部表方式查询MaxComputeTransactional表。

支持读取MaxCompute Schema Evolution状态表。

MaxCompute侧执行过删除列、修改列顺序、修改列类型操作的表。

HologresMaxCompute之间交互支持双签名认证。

详情请参见创建Hologres外部表(双签名模式)

支持访问MaxCompute BYOK方式加密的表。

详情请参见查询MaxCompute加密数据(BYOK模式)

V1.1.43

支持外部表自动加载,实现MaxCompute外部表的按需自动加载以及全量自动加载。

详情请参见外部表自动加载(Auto Load)

注意事项

通过Hologres加速查询MaxCompute数据时,您需要注意如下内容:

  • 由于跨地域查询存在较多网络不可靠因素,查询稳定性无法保障,请确保HologresMaxCompute处于同一地域。

  • Hologres只能加速查询MaxCompute的内部表,不能查询MaxCompute的外部表和VIEW。

  • MaxCompute的分区与Hologres无强映射关系,映射至Hologres之后均为普通字段,但可通过分区条件过滤查询。

  • 暂不支持读取MaxComputeMap、Struct类型的数据。

  • 暂不支持读取MaxCompute侧使用DATETIME、TIMESTAMP、DECIMAL类型作为Cluster列的Range Cluster表数据。

  • 仅支持读取MaxCompute标准存储数据,不支持读取低频存储和长期存储数据。