A partir da versão V3.0.38 do Hologres, você pode consultar tabelas Delta do MaxCompute diretamente no Hologres, sem mover dados. A tabela Delta é um formato de tabela do MaxCompute para dados incrementais. Ela permite importações de dados em nível de minuto, usa AliORC como formato de arquivo subjacente, oferece suporte à semântica UPSERT e permite leitura e escrita de dados incrementais no formato Change Data Capture (CDC). Para obter mais informações sobre os conceitos de tabela Delta, consulte Termos.
Limitações
|
Capacidade |
Suporte |
|
Ler o snapshot mais recente de uma tabela Delta |
Suportado |
|
Gravar dados do Hologres de volta em uma tabela Delta |
Não suportado |
Pré-requisitos
Antes de começar, verifique se você tem:
Uma instância ativa do Hologres. Consulte Adquirir uma instância do Hologres.
Um projeto ativo do MaxCompute. Consulte Ativar o MaxCompute.
As permissões necessárias no projeto e nas tabelas do MaxCompute. Consulte Gerencie permissões de usuário usando comandos.
Etapa 1: Crie uma tabela Delta no MaxCompute
Crie uma tabela Delta no MaxCompute usando um dos métodos a seguir:
No DataWorks: anexe uma source de dados do MaxCompute e crie a tabela pelo console do DataWorks.
Com o cliente local do MaxCompute: execute o comando SQL diretamente.
O exemplo a seguir cria uma tabela Delta particionada chamada mf_dt:
CREATE TABLE IF NOT EXISTS mf_dt (
pk BIGINT NOT NULL PRIMARY KEY,
val BIGINT NOT NULL
)
PARTITIONED BY (dd STRING, hh STRING)
TBLPROPERTIES ("transactional"="true");
A propriedade "transactional"="true" marca a tabela como uma tabela Delta.
Etapa 2: Grave dados na tabela Delta
O MaxCompute oferece dois métodos para carregar dados em uma tabela Delta:
Em lote: use INSERT INTO ou INSERT OVERWRITE. Consulte Inserir ou sobrescrever dados.
Quase em tempo real: use o Flink para transmitir dados em streaming. Consulte Usar o Flink para gravar dados no MaxCompute.
O exemplo a seguir usa inserções em lote para carregar dados na tabela mf_dt:
-- Append rows to the dd='01', hh='01' partition
INSERT INTO TABLE mf_dt PARTITION (dd='01', hh='01')
VALUES (3, 30), (4, 4), (5, 5);
-- Overwrite the dd='01', hh='01' partition with new data
INSERT OVERWRITE TABLE mf_dt PARTITION (dd='01', hh='01')
VALUES (1, 1), (2, 2), (3, 3);
Etapa 3: Mapeie o projeto do MaxCompute no Hologres
Crie um mapeamento de source de dados externa no Hologres para permitir a descoberta e consulta das tabelas do MaxCompute. Dois métodos de mapeamento estão disponíveis:
Banco de dados externo: mapeia todas as tabelas de um projeto do MaxCompute com um único comando. Consulte CREATE EXTERNAL DATABASE.
Tabela externa: mapeia schemas e tabelas individualmente para controle granular. Consulte IMPORT FOREIGN SCHEMA e CREATE FOREIGN TABLE.
O exemplo a seguir cria um mapeamento de banco de dados externo para um projeto do MaxCompute:
CREATE EXTERNAL DATABASE ext_database_mc WITH
metastore_type 'maxcompute'
mc_project 'mc_3_layer_project'
comment 'mc three layer project';
Após criar o mapeamento, verifique se os schemas e tabelas são detectáveis:
-- List all schemas in the external database
SELECT * FROM hologres.hg_external_schemas('ext_database_mc');
-- List all tables in the default schema
SELECT * FROM hologres.hg_external_tables('ext_database_mc', 'default');
Etapa 4: Consulte a tabela Delta
Antes de consultar uma tabela Delta, defina o seguinte parâmetro GUC no nível da sessão:
SET hg_experimental_external_catalog_routing = 'odps:common_table';
Em seguida, consulte a tabela usando o nome em três partes external_database.schema.table:
SELECT * FROM ext_database_mc.mc_schema_name.mf_dt;
Próximos passos
Para atualizar ou renovar os metadados do banco de dados externo após alterações de schema no MaxCompute, consulte CREATE EXTERNAL DATABASE.
Para controlar o acesso no nível da tabela, use tabelas externas em vez de um banco de dados externo. Consulte CREATE FOREIGN TABLE.
Para gerenciar permissões de usuário no MaxCompute, consulte Gerencie permissões de usuário usando comandos.