文档首页/ 数据仓库服务 DWS/ 最佳实践/ 导入导出/ 从MRS Hive导入表数据到DWS集群
更新时间:2025-08-22 GMT+08:00
分享

从MRS Hive导入表数据到DWS集群

本实践通过建立HDFS外表实现DWS远端访问或读取MRS数据源。其实现原理是DWS通过外部服务器(Foreign Server)外表(Foreign Table)进行数据传输,实践过程主要模拟将MRS Hive中存储的ORC格式的表数据,通过创建跨源Foreign Server和Foreign Table,实现数据从Hive写入DWS的过程。

外部服务器是数据库中配置的一个虚拟对象,用于定义连接到外部数据源的参数(如地址、协议、认证信息等)。通过外部服务器,本地数据库可以直接查询、插入外部数据,就像操作本地表一样(语法类似,但可能受性能或功能限制)。

外表是数据库中的一种虚拟表,其数据实际存储在数据库系统之外(如文件系统、其他数据库、云存储等),但通过表结构(元数据)的定义和访问接口,使得用户可以直接用标准 SQL 查询这些外部数据,无需将其导入数据库。

基于对接的数据源类型,DWS外表可分为HDFS外表OBS外表两类,分别支持从HDFS分布式文件系统和OBS对象存储服务中读取数据。

本实践预计时长:1小时,基本流程如下:

  1. 步骤一:购买MRS集群并准备MRS的ORC表数据源,创建MRS分析集群,通过将本地txt数据文件上传至OBS桶,再通过OBS桶导入Hive,并由txt存储表导入ORC存储表。
  2. 步骤二:创建MRS数据源连接,在DWS控制台创建MRS数据源,系统默认生成名称为mrs的外部服务器Foreign Server。
  3. 步骤三:创建外表:创建HDFS外表,用于访问MRS端的数据。
  4. 步骤四:执行数据导入:通过HDFS外表导入DWS本地表。

视频介绍

准备环境

已创建DWS集群,需确保MRS和DWS集群在同一个区域、可用区、同一VPC子网内,确保集群网络互通。

步骤一:购买MRS集群并准备MRS的ORC表数据源

  1. 购买一个MRS分析集群。关键参数表1配置,其他未提及参数请使用默认值或参见购买MRS集群配置。

    集群创建约15分钟,可继续进行下面操作。
    表1 MRS集群关键参数

    关键参数

    取值

    区域

    华北-北京四

    计费模式

    按需计费

    集群类型

    分析集群

    版本类型

    普通版

    集群版本

    MRS 1.9.2(主推)

    注意:
    • DWS 8.1.1.300及以上版本集群,支持连接1.6.*、1.7.*、1.8.*、1.9.*、2.0.*、3.0.*、3.1.*及以上版本(“*”代表的是数字)的MRS集群。
    • DWS 8.1.1.300以下版本集群,支持连接1.6.*、1.7.*、1.8.*、1.9.*、2.0.*版本(“*”代表的是数字)的MRS集群。

    元数据

    本地元数据

    可用区

    可用区1

    CPU架构

    x86

    Kerberos认证

    关闭

    登录方式

    密码

  2. 本地PC新建一个product_info.txt,并拷贝以下数据,保存到本地。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    100,XHDK-A-1293-#fJ3,2017-09-01,A,2017 Autumn New Shirt Women,red,M,328,2017-09-04,715,good
    205,KDKE-B-9947-#kL5,2017-09-01,A,2017 Autumn New Knitwear Women,pink,L,584,2017-09-05,406,very good!
    300,JODL-X-1937-#pV7,2017-09-01,A,2017 autumn new T-shirt men,red,XL,1245,2017-09-03,502,Bad.
    310,QQPX-R-3956-#aD8,2017-09-02,B,2017 autumn new jacket women,red,L,411,2017-09-05,436,It's really super nice
    150,ABEF-C-1820-#mC6,2017-09-03,B,2017 Autumn New Jeans Women,blue,M,1223,2017-09-06,1200,The seller's packaging is exquisite
    200,BCQP-E-2365-#qE4,2017-09-04,B,2017 autumn new casual pants men,black,L,997,2017-09-10,301,The clothes are of good quality.
    250,EABE-D-1476-#oB1,2017-09-10,A,2017 autumn new dress women,black,S,841,2017-09-15,299,Follow the store for a long time.
    108,CDXK-F-1527-#pL2,2017-09-11,A,2017 autumn new dress women,red,M,85,2017-09-14,22,It's really amazing to buy
    450,MMCE-H-4728-#nP9,2017-09-11,A,2017 autumn new jacket women,white,M,114,2017-09-14,22,Open the package and the clothes have no odor
    260,OCDA-G-2817-#bD3,2017-09-12,B,2017 autumn new woolen coat women,red,L,2004,2017-09-15,826,Very favorite clothes
    980,ZKDS-J-5490-#cW4,2017-09-13,B,2017 Autumn New Women's Cotton Clothing,red,M,112,2017-09-16,219,The clothes are small
    98,FKQB-I-2564-#dA5,2017-09-15,B,2017 autumn new shoes men,green,M,4345,2017-09-18,5473,The clothes are thick and it's better this winter.
    150,DMQY-K-6579-#eS6,2017-09-21,A,2017 autumn new underwear men,yellow,37,2840,2017-09-25,5831,This price is very cost effective
    200,GKLW-l-2897-#wQ7,2017-09-22,A,2017 Autumn New Jeans Men,blue,39,5879,2017-09-25,7200,The clothes are very comfortable to wear
    300,HWEC-L-2531-#xP8,2017-09-23,A,2017 autumn new shoes women,brown,M,403,2017-09-26,607,good
    100,IQPD-M-3214-#yQ1,2017-09-24,B,2017 Autumn New Wide Leg Pants Women,black,M,3045,2017-09-27,5021,very good.
    350,LPEC-N-4572-#zX2,2017-09-25,B,2017 Autumn New Underwear Women,red,M,239,2017-09-28,407,The seller's service is very good
    110,NQAB-O-3768-#sM3,2017-09-26,B,2017 autumn new underwear women,red,S,6089,2017-09-29,7021,The color is very good 
    210,HWNB-P-7879-#tN4,2017-09-27,B,2017 autumn new underwear women,red,L,3201,2017-09-30,4059,I like it very much and the quality is good.
    230,JKHU-Q-8865-#uO5,2017-09-29,C,2017 Autumn New Clothes with Chiffon Shirt,black,M,2056,2017-10-02,3842,very good
    

  3. 登录OBS控制台,单击“创建桶”,填写以下关键参数,其它参数默认即可,单击“立即创建”。

    表2 桶参数

    参数项

    取值

    区域

    华北-北京四

    数据冗余存储策略

    单AZ存储

    桶名称

    mrs-datasource

    默认存储类别

    标准存储

    桶策略

    私有

    默认加密

    关闭

    归档数据直读

    关闭

    标签

    -

  4. 等待桶创建好,单击桶名称,选择“对象 > 上传对象”,将product_info.txt上传至OBS桶。
  5. 切换回MRS控制台,单击创建好的MRS集群名称,进入“概览”,单击“IAM用户同步”所在行的“同步”,等待约1分钟同步完成。
  6. 单击“节点管理”,单击任意一台master节点,进入该节点页面,切换到“弹性公网IP”,单击“绑定弹性公网IP”,勾选已有弹性IP并单击“确定”,如果没有,请创建。记录此公网IP。
  7. 确认主master节点。

    1. 使用SSH工具以root用户登录以上节点,切换到omm用户。

      su - omm

    2. 执行以下命令查询主master节点。

      sh ${BIGDATA_HOME}/om-0.0.1/sbin/status-oms.sh

      回显信息中“HAActive”参数值为“active”的节点为主master节点。

      • 如果当前登录节点是主节点,则执行9
      • 如果当前登录节点不是主节点,则执行8

  8. 重新退出,再以root用户登录主节点,并切换到omm用户。

    su - omm

  9. 执行以下步骤进入Hive客户端所在目录。

    cd /opt/client

  10. 在Hive上创建存储类型为TEXTFILE的表product_info。

    1. 在/opt/client路径下,导入环境变量。

      source bigdata_env

    2. 登录Hive客户端。

      beeline

    3. 依次执行以下SQL语句创建demo数据库及表product_info。
      1
      CREATE DATABASE demo;
      
      1
      USE demo;
      
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      DROP TABLE product_info;
      
      CREATE TABLE product_info 
      (    
          product_price                int            ,
          product_id                   char(30)       ,
          product_time                 date           ,
          product_level                char(10)       ,
          product_name                 varchar(200)   ,
          product_type1                varchar(20)    ,
          product_type2                char(10)       ,
          product_monthly_sales_cnt    int            ,
          product_comment_time         date           ,
          product_comment_num          int        ,
          product_comment_content      varchar(200)                   
      ) 
      row format delimited fields terminated by ',' 
      stored as TEXTFILE;
      

  11. 将product_info.txt数据文件导入Hive。

    1. 切回到MRS集群,单击“文件管理”,单击“导入数据”。
      • OBS路径:选择上面创建好的OBS桶名,找到product_info.txt文件,单击“是”。
      • HDFS路径:选择/user/hive/warehouse/demo.db/product_info/,单击“是”。
    1. 单击“确定”,等待导入成功,此时product_info的表数据已导入成功。

  12. 创建ORC表,并将数据导入ORC表。

    1. 回到已连接Hive客户端的SQL界面,执行以下SQL语句创建ORC表。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      DROP TABLE product_info_orc;
      
      CREATE TABLE product_info_orc
      (    
          product_price                int            ,
          product_id                   char(30)       ,
          product_time                 date           ,
          product_level                char(10)       ,
          product_name                 varchar(200)   ,
          product_type1                varchar(20)    ,
          product_type2                char(10)       ,
          product_monthly_sales_cnt    int            ,
          product_comment_time         date           ,
          product_comment_num          int            ,
          product_comment_content      varchar(200)                   
      ) 
      row format delimited fields terminated by ',' 
      stored as orc;
      
    2. 将product_info表的数据插入到Hive ORC表product_info_orc中
      1
      INSERT INTO product_info_orc select * from product_info;
      
    3. 查询ORC表数据导入成功。
      1
      SELECT * FROM product_info_orc;
      

步骤二:创建MRS数据源连接

  1. 登录DWS控制台,左侧选择“专属集群 > 集群列表”,单击已创建好的DWS集群,确保DWS集群与MRS在同一个区域、可用分区,并且在同一VPC子网下。
  2. 左侧导航选择“数据源 > MRS数据源”,单击“创建MRS数据源连接”。
  3. 填写如下关键参数,其它参数默认即可,单击“确认”。

    表3 创建MRS数据源

    参数项

    取值

    数据源名称

    mrs

    配置方式

    MRS用户

    MRS数据源

    选择前序步骤创建名为的“mrs_01”数据源。

    MRS用户

    admin

    用户密码

    用户自定义的密码

    数据库

    gaussdb

步骤三:创建外表

  1. 连接已创建好的DWS集群。
  2. 查看系统中的外部服务器。

    1
    SELECT * FROM pg_foreign_server;
    

    从查询结果得知,创建完MRS数据源后,系统自动生成一个名称为mrs的外部服务器。

  3. 获取Hive的product_info_orc的文件路径。

    1. 登录MRS控制台
    2. 选择“集群列表 > 现有集群”,单击要查看的集群名称,进入集群基本信息页面。
    3. 单击“文件管理”,选择“HDFS文件列表”。
    4. 进入您要导入到DWS集群的数据的存储目录,并记录其路径。
      图1 在MRS上查看数据存储路径

  4. 创建外表,foldername填写3查到的路径。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    DROP FOREIGN TABLE IF EXISTS foreign_product_info;
    
    CREATE FOREIGN TABLE foreign_product_info
    (
        product_price                integer        ,
        product_id                   char(30)       ,
        product_time                 date           ,
        product_level                char(10)       ,
        product_name                 varchar(200)   ,
        product_type1                varchar(20)    ,
        product_type2                char(10)       ,
        product_monthly_sales_cnt    integer        ,
        product_comment_time         date           ,
        product_comment_num          integer        ,
        product_comment_content      varchar(200)                      
    ) SERVER mrs
    OPTIONS (
    format 'orc', 
    encoding 'utf8',
    foldername '/user/hive/warehouse/demo.db/product_info_orc/'
    ) 
    DISTRIBUTE BY ROUNDROBIN;
    

步骤四:执行数据导入

  1. 创建本地目标表。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    DROP TABLE IF EXISTS product_info;
    CREATE TABLE product_info
    (
        product_price                integer        ,
        product_id                   char(30)       ,
        product_time                 date           ,
        product_level                char(10)       ,
        product_name                 varchar(200)   ,
        product_type1                varchar(20)    ,
        product_type2                char(10)       ,
        product_monthly_sales_cnt    integer        ,
        product_comment_time         date           ,
        product_comment_num          integer        ,
        product_comment_content      varchar(200)                   
    ) 
    with (
    orientation = column,
    compression=middle
    ) 
    DISTRIBUTE BY HASH (product_id);
    

  2. 从外表导入目标表。

    1
    INSERT INTO product_info SELECT * FROM foreign_product_info;
    

  3. 查询导入结果。

    1
    SELECT * FROM product_info;
    

相关文档