数据仓库服务 GAUSSDB(DWS)-管理OBS数据源:使用OBS数据源

时间:2024-09-13 09:51:44

使用OBS数据源

GaussDB (DWS)使用外表方式访问OBS上的数据。委托方式与非委托方式,在外表上体现出来的差异仅在于指定了不同的SERVER。

对于非委托方式,控制台提供的SERVER包含access_key和secret_access_key参数,分别对应OBS访问协议的AK和SK值。

对于委托方式,控制台提供的SERVER包含access_key、secret_access_key和security_token参数,分别对应OBS访问协议的临时AK、临时SK和 统一身份认证 服务 IAM 中临时安全凭证的SecurityToken值。

在创建好OBS委托和OBS数据源之后,用户从控制台获得相应的包含委托信息的SERVER,假设OBS数据源名称为obs_server。用户创建和使用外表与非委托方式无差异。关于如何使用OBS数据源,具体请参见从OBS导入数据

如下示例为某普通用户jim通过外表读取OBS上的数据。

  1. 参见以上步骤创建OBS数据源,名称为obs_server。
  2. 使用系统管理员dbadmin连接数据库,创建普通用户,并授权该普通用户使用OBS server和OBS外表权限。 其中{Password}替换为用户实际密码,obs_server替换成实际的OBS数据源名称。
    1
    2
    3
    CREATE USER jim PASSWORD '{Password}';
    ALTER USER jim USEFT;
    GRANT USAGE ON FOREIGN SERVER obs_server TO jim;
    
  3. 使用普通用户jim连接数据库,建立OBS外表customer_address,不包含分区列。
    以下命令中,obs_server替换为上面实际创建的OBS数据源名称。目录/user/obs/region_orc11_64stripe1/替换为实际数据文件存放的OBS目录,user表示用户的OBS桶名称。
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    CREATE FOREIGN TABLE customer_address
    (
        ca_address_sk             integer               not null,
        ca_address_id             char(16)              not null,
        ca_street_number          char(10)                      ,   
        ca_street_name            varchar(60)                   ,   
        ca_street_type            char(15)                      ,   
        ca_suite_number           char(10)                      ,   
        ca_city                   varchar(60)                   ,   
        ca_county                 varchar(30)                   ,   
        ca_state                  char(2)                       ,   
        ca_zip                    char(10)                      ,   
        ca_country                varchar(20)                   ,   
        ca_gmt_offset             decimal(36,33)                  ,   
        ca_location_type          char(20)    
    ) 
    SERVER obs_server OPTIONS (              
        FOLDERNAME '/user/obs/region_orc11_64stripe1/',
        FORMAT 'ORC',
        ENCODING 'utf8',
        TOTALROWS  '20'
    )
    DISTRIBUTE BY roundrobin;
    
  4. 通过外表查询OBS上的数据。
    1
    2
    3
    4
    5
    SELECT COUNT(*) FROM customer_address;
    count
    -------
    20
    (1row)
    
support.huaweicloud.com/mgtg-dws/dws_01_1602.html