Este tópico descreve como usar uma tabela externa para consultar dados criptografados do MaxCompute.
Escolha um método
O Hologres oferece dois métodos para consultar dados criptografados do MaxCompute. Escolha o método adequado conforme a versão da sua instância:
|
Versão do Hologres |
Método |
Criptografia compatível |
Configuração necessária |
|
V3.2 e posteriores |
Common Table (recomendado) |
Chave padrão e chave KMS |
Simplificada — o Hologres gerencia a descriptografia de forma transparente |
|
Anteriores à V3.2 |
Tabela externa legada |
Apenas chave KMS |
Função RAM + alteração do mecanismo de consulta |
Método Common Table (V3.2 e posteriores)
A partir da V3.2, o Hologres permite consultar dados do MaxCompute criptografados com a chave padrão ou com uma chave do Key Management Service (KMS) por meio de Common Tables, com configuração simplificada.
Para usar esse método, ative o roteamento de Common Table no escopo apropriado ao seu caso de uso:
-
Nível de sessão — Vigente apenas na sessão atual. Execute esta instrução junto com a consulta ou instrução DML.
SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe'; -
Nível de banco de dados — Vigente em todas as conexões ao banco de dados especificado.
ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe'; -
Nível de instância — Vigente em todos os bancos de dados da instância.
ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';
Para mais informações, consulte Common Table.
Método legado (anterior à V3.2)
Esse método aplica-se a instâncias do Hologres com versões anteriores à V3.2. Há suporte apenas para dados do MaxCompute criptografados com KMS — não há suporte para dados criptografados com a chave padrão do DataWorks.
Limitações
Versão mínima: Hologres V1.1. Se a instância executar uma versão anterior, atualize-a primeiro. Consulte Atualizar uma instância.
Configuração de backend: Necessária para instâncias com versões anteriores à V1.3.31. Dispensável na V1.3.31 e posteriores. Atualize para a V1.3.31 ou superior para ignorar esta etapa.
Criptografia compatível: Dados criptografados com KMS usando materiais de chave gerados pelo KMS ou importados. Não há suporte para a chave padrão do DataWorks.
Cache de chave KMS: Por padrão, o Hologres armazena em cache as informações da chave KMS por 24 horas durante a descriptografia dos dados.
Mecanismo de consulta: O Hologres Query Engine (HQE) não acessa dados criptografados do MaxCompute. Alterne para o Seahawks Query Engine (SQE) no nível do banco de dados.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma instância do Hologres com a versão V1.1 ou posterior
Permissões RAM suficientes para criar políticas e funções
Configure acesso a dados criptografados
O método legado requer quatro etapas: crie uma política RAM, crie uma função RAM, alternar o mecanismo de consulta e consultar os dados.
Etapa 1: Crie uma política personalizada
-
Faça logon no console RAM. No painel de navegação à esquerda, escolha Permissions > Policies. Na página Policies, clique em Create Policy.

-
Na página Create Policy, clique em JSON. No editor de código, insira a seguinte política e defina Name como
AliyunHologresEncryptionDefaultRolePolicy.
Essa política concede ao Hologres as permissões KMS necessárias para obter e descriptografar chaves de dados ao consultar dados criptografados do MaxCompute.
{ "Version": "1", "Statement": [ { "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey" ], "Resource": "acs:kms:*:*:*/*", "Effect": "Allow" } ] } Clique em OK. A política personalizada será criada.
Etapa 2: Crie uma função RAM e conceder permissões
O Hologres precisa de uma função RAM para chamar APIs do KMS em seu nome. Crie a função e anexe a política criada na etapa 1.
Faça logon no console RAM. No painel de navegação à esquerda, escolha Identities > Roles.
Na página Roles, clique em Create Role. Defina Principal Type como Cloud Service e Principal Name como Hologres.
-
Clique em OK. Na caixa de diálogo, insira
AliyunHologresEncryptionDefaultRoleno campo Role Name e clique em OK.
Na página de detalhes da função, clique em Grant Permission.
-
No painel Grant Permission, defina Resource Scope como Account. Em Policy, selecione
AliyunHologresEncryptionDefaultRolePolicy.
Clique em OK. Na página de detalhes da função, clique na aba Trust Policy para verificar a política de confiança.
Etapa 3: Alternar o mecanismo de consulta para SQE
O HQE não acessa dados criptografados do MaxCompute. Execute a seguinte instrução para alterar o mecanismo de consulta de tabelas externas do banco de dados para SQE:
ALTER DATABASE <dbname> SET hg_experimental_enable_access_odps_orc_via_holo = false;
A alteração entra em vigor após a criação de uma nova conexão. Para verificar a configuração, execute:
SHOW hg_experimental_enable_access_odps_orc_via_holo;
Se a saída for false, a configuração estará ativa.
Etapa 4: Consultar dados criptografados
Após concluir as etapas anteriores, consulte os dados criptografados do MaxCompute da mesma forma que consulta dados regulares do MaxCompute. Consulte Acelerar consultas em dados do MaxCompute usando tabelas externas.
Solução de problemas
Erro ao consultar dados:
ERROR: status { code: SERVER_INTERNAL_ERROR message: "hos_exception: IO error: Failed to execute pangu open normal file pangu://xxx:xxx/product/odps/xxx/data/xxxx/xxx/xxx, errorcode: 9, errorcode_description: invalid argument, err_msg: PanguParameterInvalidException
Esse erro ocorre quando o HQE tenta acessar dados criptografados do MaxCompute. Alterne o mecanismo de consulta do banco de dados para SQE:
ALTER DATABASE <DB_Name> SET hg_experimental_enable_access_odps_orc_via_holo = false;
Reconecte-se para aplicar a alteração e verifique se ela entrou em vigor:
SHOW hg_experimental_enable_access_odps_orc_via_holo;
Se a saída for false, execute a consulta novamente.