Hologres外部项目

MaxCompute推出外部项目,通过映射Hologres Database实现元数据与数据的实时访问,支持对Hologres的查询和数据插入。访问Hologres时透传当前任务执行者身份,由Hologres认证鉴权。该方式支持在Database级别整体映实时数仓,实现实时分析与离线计算的一体化协同。

操作步骤

步骤一:授权

使用【任务执行者身份】认证和鉴权,参考HologresSTS模式服务关联角色授权

RAM用户授权

如果操作用户是RAM用户,请确保已绑定如下权限策略。添加权限参考为RAM用户授权

  • AliyunMaxComputeFullAccess:用来完成创建外部数据源和外部项目操作。

  • AliyunHologresReadOnlyAccess:用来完成创建Hologres外部项目操作。

权限说明

  • 管控面权限:即通过MaxCompute控制台操作时需要校验的权限,主要发生在“创建MC的外表项目,绑定一个Hologres实例”过程中。

    这部分权限由RAM访问控制管理,需要由主账号登录RAM访问控制台配置相关操作,RAM用户授权

  • 数据面权限:即登录创建好的外部项目后,读写Hologres表时需要校验的权限,主要发生在“创建/维护/使用被绑定的Hologres实例中的Schema/Table以及其他资源的过程,一般在MCSQL中执行” 。

    这部分权限由Hologres控制台管理,需要由主账号登录Hologres控制台配置相关操作,RAM用户授权

步骤二:创建Hologres外部数据源

  1. 开通Hologres服务,且MaxComputeHologres必须部署在同一地域。

  2. 登录MaxCompute控制台,在左上角选择地域。

  3. 在左侧导航栏,选择管理配置 > 外部数据源 。

  4. 外部数据源页面,单击创建外部数据源

  5. 在弹出的新增外部数据源对话框,根据界面提示配置相关参数。参数说明如下:

    参数

    是否必填

    说明

    外部数据源类型

    必填

    选择Hologres

    外部数据源名称

    必填

    可自定义命名。命名规则如下:

    • 以字母开头,且只能包含小写字母、下划线和数字。

    • 不能超过128个字符。

    例如paimon_dlf

    外部数据源描述

    选填

    根据需要填写。

    连接方式

    必填

    默认为经典网络访问(内网)

    InstanceID

    必填

    选择当前地域下需要连接的Hologres实例。

    Host

    必填

    系统默认生成。

    Port

    必填

    系统默认生成。

    DBNAME

    必填

    连接的Hologres数据库名称。

    认证和鉴权

    必填

    • RAM角色

    • 任务执行者身份:Hologres外部项目所需外部数据源需要配置为任务执行者身份的认证模式。

    RoleARN

    必填

    RAM角色的ARN信息。

    1. 登录RAM控制台

    2. 在左侧导航栏选择身份管理 > 角色

    3. 基础信息区域,可以获取ARN信息。

    示例:acs:ram::124****:role/aliyunodpsdefaultrole

    关联服务角色

    必填

    若选择任务执行者身份关联服务角色acs:ram::124****:role/aliyunserviceroleformaxcomputeidentitymgmt

    外部数据源补充属性

    选填

    特殊声明的外部数据源补充属性。指定后,使用此外部数据源的任务可以按照参数定义的行为访问源系统。

    说明

    支持的具体参数请关注后续官网文档更新说明,具体参数将随产品能力演进逐步放开。

  6. 单击确认,完成外部数据源的创建。

  7. 外部数据源页面,单击目标数据源对应的操作详情,可查看数据源详细信息。

步骤三:创建Hologres外部项目

  1. 登录MaxCompute控制台,在左上角选择地域。

  2. 在左侧导航栏,选择管理配置 > 项目管理

  3. 外部项目页签,单击新建项目

  4. 在弹出的新增项目对话框,根据界面提示文案配置项目信息,单击确认完成项目创建。

    参数

    是否必填

    说明

    项目类型

    必填

    默认为外部项目。

    地域

    必填

    默认为当前地域,此处无法修改。

    项目名称(全网唯一)

    必填

    字母开头,包含字母、数字及下划线(_),长度在3-28个字符。

    MaxCompute外部数据源类型

    选填

    选择Hologres。

    MaxCompute外部数据源

    选填

    • 选择已有:会出现已经创建过的外部数据源。

    • 新建外部数据源:即可新建并使用新的外部数据源。

    MaxCompute外部数据源名称

    必填

    • 选择已有:在下拉列表中选择已经创建好的外部数据源名称。

    • 新建外部数据源:则会使用新建的外部数据源名称。

    计算资源付费类型

    必填

    包年包月按量付费

    默认Quota

    必填

    选择已有Quota.

    描述

    选填

    自定义项目描述。

步骤四:使用SQL访问数据源系统

  1. 选择连接工具登录外部项目。

  2. 列出外部项目中的schema。

    -- 打开session级别支持schema语法开关。
    SET odps.namespace.schema=true;
    SHOW schemas;
    
    -- 示例返回结果。 
    ID = 20250922****g27aqqcnyn2
    hg_internal
    hg_recyclebin
    public
    
    
    OK
  3. 在外部项目中列出schema下的表。

    -- schema_name为外部项目中show出来的Schema名称。
    USE schema <schema_name>;
    SHOW tables;
  4. 在外部项目中新建schema。

    -- 本示例中schema_nameschema_demo_test。
    CREATE schema <schema_name>;
  5. 使用新建的schema。

    USE schema <schema_name>;
  6. 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        | 李四        | 
      +------------+------------+
  7. 使用已有的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数据库的操作权限。

解决方案

  1. 登录Hologres控制台,在左上角选择地域。

  2. 在左侧导航栏单击实例列表,在实例列表详情页,单击目标实例ID进入详情页,然后单击登录实例

  3. 在顶部导航栏单击安全中心,在左侧导航栏单击用户管理,在用户管理详情页,单击右上角新增用户,在弹出的对话框中添加该RAM用户。

  4. 在顶部导航栏单击安全中心,在左侧导航栏单击DB授权,选择用户授权,给RAM用户授权数据库的操作权限。请根据实际情况授予RAM用户权限,相关权限点详情见RAM用户权限授权快速入门