Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda> GaussDB(DWS)> Melhores práticas> Importação e exportação> Tutorial: exibir ou importar dados de Hive do MRS
Atualizado em 2024-05-09 GMT+08:00

Tutorial: exibir ou importar dados de Hive do MRS

Neste tutorial, uma tabela estrangeira HDFS é criada para permitir que o GaussDB(DWS) acesse remotamente ou leia fontes de dados do MRS.

Preparação do ambiente

Crie um cluster de GaussDB(DWS). Verifique se os clusters do MRS e do GaussDB(DWS) estão na mesma região, AZ e sub-rede da VPC e se os clusters podem se comunicar uns com os outros.

Procedimento

Esta prática leva cerca de 1 hora. O processo básico é o seguinte:

  1. Crie um cluster de análise do MRS (selecione Hive, Spark e Tez).
  2. Você pode fazer upload de um arquivo de dados TXT local para um bucket do OBS, importar o arquivo para o Hive por meio do bucket do OBS e importar o arquivo da tabela de armazenamento TXT para a tabela de armazenamento ORC.
  3. Crie uma conexão de fonte de dados do MRS.
  4. Crie um servidor estrangeiro.
  5. Crie uma tabela estrangeira,
  6. Importe a tabela local do DWS através de uma tabela estrangeira.

Criar um cluster do MRS

  1. Faça logon no consolo da Huawei Cloud, escolha Analytics > MapReduce Service e clique em Buy Cluster. Clique na guia Custom Config, configure os parâmetros do software e clique em Next.

    Tabela 1 Configuração de software

    Parâmetro

    Valor

    Region

    CN-Hong Kong

    Cluster Name

    mrs_01

    Version

    Normal

    Cluster Version

    MRS 1.9.2 (recomendado)

    NOTA:
    • Para clusters da versão 8.1.1.300 e posteriores, os clusters do MRS suportam as versões *, 1.7.*, 1.8.*, 1.9.*, 2.0.*, 3.0.*, 3.1.* e posteriores (* indica um número).
    • Para clusters anteriores à versão 8.1.1.300, os clusters do MRS suportam as versões 1.6.*, 1.7.*, 1.8.*, 1.9.* e 2.0.* (* indica um número).

    Cluster Type

    Analysis Cluster

    Metadata

    Local

  2. Configure os parâmetros de hardware e clique em Next.

    Tabela 2 Configuração de hardware

    Parâmetro

    Valor

    Billing Mode

    Pay-per-use

    AZ

    AZ2

    VPC

    vpc-01

    Subnet

    subnet-01

    Security Group

    Auto create

    EIP

    10.x.x.x

    Enterprise Project

    default

    Master

    2

    Analysis Core

    3

    Analysis Task

    0

  3. Quando você tiver concluído as configurações avançadas com base na tabela a seguir, clique em Buy Now e aguarde cerca de 15 minutos. O cluster foi criado com êxito.

    Tabela 3 Configuração avançada

    Parâmetro

    Valor

    Tag

    test01

    Hostname Prefix

    (Opcional) Prefixo para o nome de um ECS ou BMS no cluster.

    Auto Scaling

    Mantenha o valor padrão.

    Bootstrap Action

    Mantenha o valor padrão. O MRS 3.x não suporta este parâmetro.

    Agency

    Mantenha o valor padrão.

    Data Disk Encryption

    Esta função está desativada por padrão. Mantenha o valor padrão.

    Alarm

    Mantenha o valor padrão.

    Rule Name

    Mantenha o valor padrão.

    Topic Name

    Selecione um tópico.

    Kerberos Authentication

    Este parâmetro é ativado por padrão.

    Username

    admin

    Password

    Essa senha é usada para efetuar logon na página de gerenciamento de cluster.

    Confirm Password

    Digite a senha do usuário admin novamente.

    Login Mode

    Password

    Username

    root

    Password

    Essa senha é usada para efetuar logon remotamente no ECS.

    Confirm Password

    Digite a senha do usuário root novamente.

    Secure Communications

    Selecione Enable.

Preparar a fonte de dados da tabela ORC do MRS

  1. Crie um arquivo product_info.txt no PC local, copie os seguintes dados para o arquivo e salve o arquivo no PC local.

     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
    

  2. Efetue logon no console do OBS, clique em Create Bucket, configure os seguintes parâmetros e clique em Create Now.

    Tabela 4 Parâmetros do bucket

    Parâmetro

    Valor

    Region

    CN-Hong Kong

    Data Redundancy Policy

    Single-AZ Storage

    Bucket Name

    mrs-datasource

    Default Storage Class

    Standard

    Bucket Policy

    Private

    Default Encryption

    Disable

    Direct Reading

    Disable

    Enterprise Project

    default

    Tags

    -

  3. Depois que o bucket for criado, clique no nome do bucket e escolha Object > Upload Object para fazer upload do arquivo product_info.txt para o bucket do OBS.
  4. Volte para o console do MRS e clique no nome do cluster do MRS criado. Na página Dashboard, clique no botão Synchronize ao lado de IAM User Sync. A sincronização leva cerca de 5 minutos.
  5. Clique em Nodes e clique em um nó principal. Na página exibida, alterne para a guia EIPs, clique em Bind EIP, selecione um EIP existente e clique em OK. Se nenhum EIP estiver disponível, crie um. Registre o EIP.
  6. Baixe o cliente.

    1. Volte para a página de cluster do MRS. Clique no nome do cluster. Na página de guia Dashboard da página de detalhes do cluster, clique em Access Manager. Se uma mensagem for exibida indicando que o EIP precisa ser vinculado, vincule um EIP primeiro.
    2. Na caixa de diálogoAccess MRS Manager, clique em OK. Você será redirecionado para a página de logon do MRS Manager. Digite o nome de usuário admin e sua senha para fazer logon no MRS Manager. A senha é aquela que você digitou ao criar o cluster do MRS.
    3. Escolha Cluster > Name of the desired cluster > Dashboard > More > Download Client. A caixa de diálogo Download Cluster Client é exibida.

      Para obter o cliente de uma versão anterior, escolha Services > Download Client e defina Select Client Type como Configuration Files Only.

  7. Determine o nó principal ativo.

    1. Use o SSH para fazer logon no nó anterior como usuário root. Execute o seguinte comando para alternar para o usuário omm:

      su - omm

    2. Execute o seguinte comando para consultar o nó principal ativo. Na saída do comando, o nó cujo valor de HAActive está active é o nó principal ativo.

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

  8. Efetue logon no nó principal ativo como usuário root e atualize a configuração do cliente do nó de gerenciamento ativo.

    cd /opt/client

    sh refreshConfig.sh /opt/client Full_path_of_client_configuration_file_package

    Neste tutorial, execute o seguinte comando:

    sh refreshConfig.sh /opt/client /tmp/MRS-client/MRS_Services_Client.tar

  9. Alterne para o usuário omm e vá para o diretório onde o cliente de Hive está localizado.

    su - omm

    cd /opt/client

  10. Crie a tabela product_info cujo formato de armazenamento é TEXTFILE no Hive.

    1. Importe variáveis de ambiente para o diretório /opt/client.

      source bigdata_env

    2. Efetue logon no cliente de Hive.

      beeline

    3. Execute os seguintes comandos SQL em seqüência para criar um banco de dados de demonstração e a tabela 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. Importe o arquivo product_info.txt para o Hive.

    1. Volte para o cluster MRS, clique em Files > Import Data.
    2. OBS Path: localize o arquivo product_info.txt no bucket do OBS criado e clique em Yes.
    3. HDFS Path: selecione /user/hive/warehouse/demo.db/product_info/ e clique em Yes.
    4. Clique em OK para importar os dados da tabela product_info.

  12. Crie uma tabela ORC e importe dados para a tabela.

    1. Execute os seguintes comandos SQL para criar uma tabela 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. Insira dados na tabela product_info na tabela ORC do Hive product_info_orc.
      1
      insert into product_info_orc select * from product_info;
      
    3. Consulte se a importação de dados foi bem-sucedida.
      1
      select * from product_info_orc;
      

Criar uma conexão de fonte de dados do MRS

  1. Faça logon no console do GaussDB(DWS) e clique no cluster de armazém de dados criado. Verifique se os clusters do GaussDB(DWS) e MRS estão na mesma região, AZ e sub-rede da VPC.
  2. Clique na guia MRS Data Source e clique em Create MRS Cluster Connection.
  3. Selecione a origem de dados mrs_01 criada na etapa anterior, insira o nome da conta do MRS admin e sua senha e clique em OK.

Criar um servidor estrangeiro

  1. Use o Data Studio para conectar-se ao cluster do GaussDB(DWS) criado.
  2. Crie um usuário dbuser que tenha permissão para criar bancos de dados.

    1
    CREATE USER dbuser WITH CREATEDB PASSWORD 'password';
    

  1. Mude para o usuário dbuser.

    1
    SET ROLE dbuser PASSWORD 'password';
    

  1. Crie um banco de dados mydatabase.

    1
    CREATE DATABASE mydatabase;
    

  1. Execute as seguintes etapas para alternar para o banco de dados mydatabase:

    1. Na janela Object Browser do cliente do Data Studio, clique com o botão direito do mouse na conexão de banco de dados e selecione Refresh no menu de atalho. O novo banco de dados é exibido.
    2. Clique com o botão direito do mouse no nome do banco de dados mydatabase e selecione Connect to DB no menu de atalho.
    3. Clique com o botão direito do mouse no nome do banco de dados mydatabase e selecione Open Terminal no menu de atalho. A janela de comando SQL para conexão com um banco de dados é exibida. Execute os seguintes passos na janela.

  2. Conceda a permissão para criar servidores externos ao usuário dbuser. Em 8.1.1 e versões posteriores, você também precisa conceder a permissão para usar o modo público.

    1
    2
    GRANT ALL ON FOREIGN DATA WRAPPER hdfs_fdw TO dbuser;
    In GRANT ALL ON SCHEMA public TO dbuser; //8.1.1 and later versions, common users do not have permission on the public mode and need to grant permission. In versions earlier than 8.1.1, you do not need to perform this operation.
    

    O nome do FOREIGN DATA WRAPPER deve ser hdfs_fdw. dbuser indica o nome de usuário de CREATE SERVER.

  3. Conceda ao usuário dbuser a permissão para usar tabelas estrangeiras.

    1
    ALTER USER dbuser USEFT;
    

  4. Alterne para o banco de dados Postgres e consulte o servidor estrangeiro criado automaticamente pelo sistema após a criação da fonte de dados do MRS.

    1
    SELECT * FROM pg_foreign_server;
    

    Informação semelhante à seguinte é exibida:

    1
    2
    3
    4
    5
    6
                         srvname                      | srvowner | srvfdw | srvtype | srvversion | srvacl |                                                     srvoptions
    --------------------------------------------------+----------+--------+---------+------------+--------+---------------------------------------------------------------------------------------------------------------------
     gsmpp_server                                     |       10 |  13673 |         |            |        |
     gsmpp_errorinfo_server                           |       10 |  13678 |         |            |        |
     hdfs_server_8f79ada0_d998_4026_9020_80d6de2692ca |    16476 |  13685 |         |            |        | {"address=192.168.1.245:9820,192.168.1.218:9820",hdfscfgpath=/MRS/8f79ada0-d998-4026-9020-80d6de2692ca,type=hdfs}
    (3 rows)
    

  5. Mudar para a base de dados mydatabase e mudar para o usuário dbuser.

    1
    SET ROLE dbuser PASSWORD 'password';
    

  6. Crie um servidor estrangeiro.

    O nome do servidor, o endereço e o caminho de configuração devem ser os mesmos em 8.

    1
    2
    3
    4
    5
    6
    7
    CREATE SERVER hdfs_server_8f79ada0_d998_4026_9020_80d6de2692ca FOREIGN DATA WRAPPER HDFS_FDW 
    OPTIONS 
    (
    address '192.168.1.245:9820,192.168.1.218:9820',   //The intranet IP addresses of the active and standby master nodes on the MRS management plane, which can be used to communicate with GaussDB(DWS).
    hdfscfgpath '/MRS/8f79ada0-d998-4026-9020-80d6de2692ca',
    type 'hdfs'
    );
    

  7. Veja o servidor estrangeiro.

    1
    SELECT * FROM pg_foreign_server WHERE srvname='hdfs_server_8f79ada0_d998_4026_9020_80d6de2692ca';
    

    O servidor é criado com êxito se forem apresentadas informações semelhantes às seguintes:

    1
    2
    3
    4
                         srvname                      | srvowner | srvfdw | srvtype | srvversion | srvacl |                                                     srvoptions
    --------------------------------------------------+----------+--------+---------+------------+--------+---------------------------------------------------------------------------------------------------------------------
     hdfs_server_8f79ada0_d998_4026_9020_80d6de2692ca |    16476 |  13685 |         |            |        | {"address=192.168.1.245:9820,192.168.1.218:9820",hdfscfgpath=/MRS/8f79ada0-d998-4026-9020-80d6de2692ca,type=hdfs}
    (1 row)
    

Criar uma tabela estrangeira

  1. Obtenha o caminho do arquivo product_info_orc do Hive.

    1. Efetue logon no console do MRS.
    2. Escolha Cluster > Active Cluster e clique no nome do cluster a ser consultado para entrar na página que exibe as informações básicas do cluster.
    3. Clique em Files e clique em HDFS File List.
    4. Vá para o diretório de armazenamento dos dados a serem importados para o cluster do GaussDB(DWS) e registre o caminho.
      Figura 1 Verificar o caminho de armazenamento de dados no MRS

  2. Crie uma tabela estrangeira. Defina SERVER como o nome do servidor externo criado em 10 e foldername como o caminho obtido em 1.

     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 hdfs_server_8f79ada0_d998_4026_9020_80d6de2692ca 
    OPTIONS (
    format 'orc', 
    encoding 'utf8',
    foldername '/user/hive/warehouse/demo.db/product_info_orc/'
    ) 
    DISTRIBUTE BY ROUNDROBIN;
    

Importação de dados

  1. Crie uma tabela local para importação de dados.

     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. Importe dados para a tabela de destino a partir da tabela estrangeira.

    1
    INSERT INTO product_info SELECT * FROM foreign_product_info;
    

  3. Consulte o resultado da importação.

    1
    SELECT * FROM product_info;