Tutorial: exportar dados do ORC para MRS
GaussDB(DWS) permite exportar dados do ORC para MRS usando uma tabela estrangeira de HDFS. Você pode especificar o modo de exportação e o formato de dados de exportação na tabela estrangeira. Os dados são exportados do GaussDB(DWS) em paralelo usando vários DNs e armazenados no HDFS. Desta forma, o desempenho geral das exportações é melhorado.
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.
Criar um cluster do MRS
- Faça logon no console 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
Exemplo de valor
Region
CN-Hong Kong
Cluster Name
mrs_01
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
Cluster de análise
- Configure os parâmetros de hardware e clique em Next.
Tabela 2 Configuração de hardware Parâmetro
Exemplo de 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
- Configure as configurações avançadas com base na tabela a seguir, clique em Buy Now e aguarde cerca de 15 minutos para que a criação do cluster seja concluída.
Tabela 3 Configurações avançadas Parâmetro
Exemplo de 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.
User Name
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
User Name
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.
Criar uma conexão de fonte de dados do MRS
- 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.
- Clique na guia MRS Data Source e clique em Create MRS Cluster Connection.
- 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
- Use o Data Studio para conectar-se ao cluster do GaussDB(DWS) criado.
- Crie um usuário dbuser que tenha permissão para criar bancos de dados.
1
CREATE USER dbuser WITH CREATEDB PASSWORD 'password';
- Mude para o usuário dbuser.
1
SET ROLE dbuser PASSWORD 'password';
- Crie um banco de dados mydatabase.
1
CREATE DATABASE mydatabase;
- Execute as seguintes etapas para alternar para o banco de dados mydatabase:
- 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. Em seguida, o novo banco de dados é exibido.
- Clique com o botão direito do mouse no nome do banco de dados mydatabase e selecione Connect to DB no menu de atalho.
- 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.
- 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.
- Conceda ao usuário dbuser a permissão para usar tabelas estrangeiras.
1
ALTER USER dbuser USEFT;
- 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)
- Mudar para a base de dados mydatabase e mudar para o usuário dbuser.
1
SET ROLE dbuser PASSWORD 'password';
- 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' );
- 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
Crie uma tabela estrangeira do OBS que não contenha colunas de partição. O servidor externo associado à tabela é hdfs_server, o formato do arquivo no HDFS correspondente à tabela é ORC e o caminho de armazenamento de dados no OBS é /user/hive/warehouse/product_info_orc/.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
DROP FOREIGN TABLE IF EXISTS product_info_output_ext; CREATE FOREIGN TABLE product_info_output_ext ( 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', foldername '/user/hive/warehouse/product_info_orc/', compression 'snappy', version '0.12' ) Write Only; |
Exportação de dados
Crie uma tabela comum product_info_output.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
DROP TABLE product_info_output; CREATE TABLE product_info_output ( 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) ) with (orientation = column,compression=middle) distribute by hash (product_name); |
1
|
INSERT INTO product_info_output_ext SELECT * FROM product_info_output; |
Se forem exibidas informações semelhantes às seguintes, os dados forem criados.
1
|
INSERT 0 10 |
Exibir o resultado da exportação
- Vá para a lista de clusters do MRS. Clique em um nome de cluster para ir para a página de detalhes do cluster.
- Clique em Files e clique em HDFS File List. Verifique o arquivo ORC exportado no diretório user/hive/warehouse/product_info_orc.
Os dados de ORC exportados do GaussDB(DWS) estão em conformidade com as seguintes regras:
- Dados exportados para MRS (HDFS): quando os dados são exportados de um DN, os dados são armazenados no HDFS no formato de segmento. O arquivo é nomeado no formato de mpp_DatabaseName_SchemaName_TableName_NodeName_n.orc.
- É aconselhável exportar dados de diferentes clusters ou bancos de dados para diferentes caminhos. O tamanho máximo de um arquivo ORC é 128 MB e o de um arquivo de faixas é 64 MB.
- Após a conclusão da exportação, o arquivo _SUCCESS é gerado.