MaxCompute推出外部项目,通过映射Hologres Database实现元数据与数据的实时访问,支持对Hologres的查询和数据插入。访问Hologres时透传当前任务执行者身份,由Hologres认证鉴权。该方式支持在Database级别整体映实时数仓,实现实时分析与离线计算的一体化协同。
操作步骤
步骤一:授权
使用【任务执行者身份】认证和鉴权,参考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个字符。
例如
paimon_dlf。外部数据源描述
选填
根据需要填写。
连接方式
必填
默认为经典网络访问(内网)。
InstanceID
必填
选择当前地域下需要连接的Hologres实例。
Host
必填
系统默认生成。
Port
必填
系统默认生成。
DBNAME
必填
连接的Hologres数据库名称。
认证和鉴权
必填
云RAM角色
任务执行者身份:Hologres外部项目所需外部数据源需要配置为任务执行者身份的认证模式。
RoleARN
必填
RAM角色的ARN信息。
登录RAM控制台。
在左侧导航栏选择。
在基础信息区域,可以获取ARN信息。
示例:
acs:ram::124****:role/aliyunodpsdefaultrole。关联服务角色
必填
若选择任务执行者身份,关联服务角色为
acs:ram::124****:role/aliyunserviceroleformaxcomputeidentitymgmt。外部数据源补充属性
选填
特殊声明的外部数据源补充属性。指定后,使用此外部数据源的任务可以按照参数定义的行为访问源系统。
说明支持的具体参数请关注后续官网文档更新说明,具体参数将随产品能力演进逐步放开。
单击确认,完成外部数据源的创建。
在外部数据源页面,单击目标数据源对应的操作的详情,可查看数据源详细信息。
步骤三:创建Hologres外部项目
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择。
在外部项目页签,单击新建项目。
在弹出的新增项目对话框,根据界面提示文案配置项目信息,单击确认完成项目创建。
参数
是否必填
说明
项目类型
必填
默认为外部项目。
地域
必填
默认为当前地域,此处无法修改。
项目名称(全网唯一)
必填
字母开头,包含字母、数字及下划线(_),长度在3-28个字符。
MaxCompute外部数据源类型
选填
选择Hologres。
MaxCompute外部数据源
选填
选择已有:会出现已经创建过的外部数据源。
新建外部数据源:即可新建并使用新的外部数据源。
MaxCompute外部数据源名称
必填
选择已有:在下拉列表中选择已经创建好的外部数据源名称。
新建外部数据源:则会使用新建的外部数据源名称。
计算资源付费类型
必填
包年包月或按量付费。
默认Quota
必填
选择已有Quota.
描述
选填
自定义项目描述。
步骤四:使用SQL访问数据源系统
选择连接工具登录外部项目。
列出外部项目中的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用户权限授权快速入门。