MaxCompute推出外部项目,通过映射Hologres Database实现元数据与数据的实时访问,支持对Hologres的查询和数据插入。访问Hologres时透传当前任务执行者身份,由Hologres认证鉴权。该方式支持在Database级别整体映实时数仓,实现实时分析与离线计算的一体化协同。
操作步骤
步骤一:授权
方式一:若使用【阿里云RAM角色】认证和鉴权,参考Hologres的STS模式普通角色授权。
方式二:若使用【任务执行者身份】认证和鉴权,参考Hologres的STS模式服务关联角色授权。
为RAM用户授权
如果操作用户是RAM用户,请确保已绑定如下权限策略。添加权限参考为为RAM用户授权。
AliyunMaxComputeFullAccess:用来完成创建外部数据源和外部项目操作。
AliyunHologresReadOnlyAccess:用来完成创建Hologres外部项目操作。
权限说明
管控面权限:即通过MaxCompute控制台操作时需要校验的权限,主要发生在“创建MC的外表项目,绑定一个Hologres实例”过程中。
数据面权限:即登录创建好的外部项目后,读写Hologres表时需要校验的权限,主要发生在“创建/维护/使用被绑定的Hologres实例中的Schema/Table以及其他资源的过程,一般在MC的SQL中执行” 。
这部分权限Hologres控制台管理,需要由主账号登录Hologres控制台配置相关操作,为RAM用户授权。
步骤二:创建Hologres外部数据源
开通Hologres服务,且MaxCompute和Hologres必须部署在同一地域。
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择管理配置 > 外部数据源。
在外部数据源页面,单击创建外部数据源。
在新增外部数据源对话框,根据界面提示配置相关参数。参数说明如下:
参数
是否必填
说明
外部数据源类型
必填
选择Hologres。
外部数据源名称
必填
可自定义命名。命名规则如下:
以字母开头,且只能包含小写字母、下划线和数字。
不能超过128个字符。
外部数据源描述
选填
根据需要填写。
连接方式
必填
默认为经典网络访问(内网)。
InstanceID
必填
选择当前地域下需要连接的Hologres实例。
Host
必填
系统默认生成。
Port
必填
系统默认生成。
DBNAME
必填
连接的Hologres数据库名称。
认证和鉴权
必填
阿里云RAM角色或任务执行者身份。
选择阿里云RAM角色,需填写RoleARN,格式为
acs:ram::<uid>:role/{role_name}
,可以在RAM访问控制页面,单击目标RAM角色名称后,在基本信息区域获取。选择任务执行者身份,会自动生成关联服务角色。
外部数据源补充属性
选填
为外部数据源特殊声明的属性,指定后,使用此外部数据源的任务可以按照参数定义的行为访问源系统。
说明支持的具体参数请关注后续官网文档更新说明,具体参数将随产品能力演进逐步放开。
单击确认,完成外部数据源的创建。
在外部数据源页面,单击数据源操作列的详情可查看数据源详细信息。
步骤三:创建Hologres外部项目
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择管理配置 > 项目管理。
在项目管理页面,单击外部项目页签,然后单击新建项目。
在新增项目对话框,根据界面提示配置参数。参数说明如下:
参数
是否必填
说明
项目类型
必填
默认为外部项目。
地域
必填
默认为当前地域,此处无法修改。
项目名称(全网唯一)
必填
可自定义命名。命名规则如下:
以字母开头,包含字母数字及下划线(_)。
长度在3-28个字符。
MaxCompute外部数据源类型
选填
选择Hologres。
MaxCompute外部数据源
选填
选择已有:会出现已经创建过的外部数据源。
新建外部数据源:即可新建并使用新的外部数据源。
MaxCompute外部数据源名称
必填
选择已有:在下拉列表中选择已经创建好的外部数据源名称。
新建外部数据源:则会使用新建的外部数据源名称。
连接方式
必填
默认为经典网络访问(内网)。
InstanceID
必填
默认生成。
Host
必填
默认生成。
Port
必填
默认为80。
DBNAME
必填
默认生成。与创建外部数据源时填写信息一致。
认证和鉴权
必填
默认生成。与创建外部数据源时填写信息一致。
关联服务角色
必填
默认生成。与创建外部数据源时填写信息一致。
计算资源付费类型
必填
包年包月或按量付费。
默认Quota
必填
选择已有Quota.
描述
选填
自定义项目描述。
单击确认,完成项目创建。
步骤四:使用SQL访问数据源系统
选择连接工具登录外部项目。
MaxCompute控制台SQL分析
模块
说明
环境要求
推荐使用最新版谷歌浏览器。
操作入口
登录MaxCompute控制台,在左侧导航栏选择 。
操作指引
DataWorks数据开发方式
模块
说明
环境要求
推荐使用最新版谷歌浏览器。
操作指引
列出外部项目中的schema。
-- 打开session级别支持schema语法开关。 SET odps.namespace.schema=true; SHOW schemas; -- 示例返回结果。 ID = 20250922****g27aqqcnyn2 hg_internal hg_recyclebin public OK
在外部项目中列出schema下的表。
-- schema_name为外部项目中show出来的Schema名称。 USE schema <schema_name>; SHOW tables;
在外部项目中新建schema。
-- 本示例中schema_name为schema_demo_test。 CREATE schema <schema_name>;
使用新建的schema。
USE schema <schema_name>;
在schema中新建表并插入数据。
命令格式:
-- 新建表。 CREATE TABLE [IF NOT EXISTS] <table_name> ( <col_name> <data_type>, ... ) [COMMENT <table_comment>] [PARTITIONED BY (<col_name> <data_type>, ...)] ; -- 插入数据,不支持执行INSERT OVERWRITE操作。 INSERT INTO <table_name> [PARTITION (<pt_spec>)] [(<col_name> [,<col_name> ...)]] <select_statement> FROM <from_statement>
使用示例:
CREATE TABLE schema_table(id int,name string); INSERT INTO schema_table VALUES (101,'张三'),(102,'李四'); -- 查询表schema_table。 SELECT * FROM schema_table; -- 返回结果。 +------------+------------+ | id | name | +------------+------------+ | 101 | 张三 | | 102 | 李四 | +------------+------------+
使用已有的schema:public。
use schema public; show tables; -- 返回结果示例。 ID = 20250922065846301g50iovzbx8g 1221220769279014 test1 OK -- 读取表。 SELECT * FROM test1; -- 返回结果如下。 +------------+------------+ | id | name | +------------+------------+ | 101 | 张三 | | 102 | 李四 | +------------+------------+ -- 写入表并查询写入是否成功。 INSERT INTO test1 VALUES (103,'测试'); SELECT * FROM test1; -- 返回结果如下。 +------------+------------+ | id | name | +------------+------------+ | 102 | 李四 | | 103 | 测试 | | 101 | 张三 | +------------+------------+
常见报错
问题一:RAM用户使用任务执行者身份执行show schemas报错
问题描述:RAM用户使用任务执行者身份执行show schemas时提示错误:password authentication failed for user "mcslr$STS.NZTtDfsd2VBifvYMSzXEDgBLf
根本原因:当前的执行者身份为RAM用户,该用户没有Hologres数据库的操作权限。
解决方案:
登录Hologres控制台,在左侧导航栏单击实例列表,在实例列表详情页,单击目标实例ID,在右上角单击登录实例。
在顶部导航栏单击安全中心,左侧导航栏单击用户管理,在用户管理详情页,单击右上角新增用户,在弹出的对话框中添加该RAM用户。
在顶部导航栏单击安全中心,左侧导航栏单击DB授权,选择用户授权,给RAM用户授权数据库的操作权限。请根据实际情况授予RAM用户权限,相关权限点详情见RAM用户权限授权快速入门。