Todos os produtos
Search
Central de documentação

Hologres:Acesso a dados do OSS com Hive Metastore (beta)

Última atualização: Jun 28, 2026

A partir da versão V2.2, o Hologres oferece suporte ao Hive Metastore (HMS) como fonte de metadados para data lakes construídos no Object Storage Service (OSS). Se o seu data lake for executado em um cluster E-MapReduce (EMR) com OSS ou OSS-HDFS como camada de armazenamento, conecte o Hologres ao HMS para consultar dados do OSS diretamente via SQL, sem necessidade de migrar ou copiar dados.

Pré-requisitos

Antes de começar, verifique se você possui:

  • O serviço OSS ativado. Consulte Início rápido do console.

  • Um cluster de data lake do EMR com dados de teste carregados. Consulte Acessar o OSS-HDFS no EMR Hive ou Spark e Criar um cluster. O cluster deve atender a todas as condições abaixo:

    • Hive versão 3.1.3 ou posterior

    • Autenticação Kerberos desativada

    • Metadata definido como Self-managed RDS ou Built-in MySQL

  • Uma instância do Hologres com aceleração de data lake ativada e um banco de dados criado. Consulte Comprar uma instância do Hologres e Criar um banco de dados.

    Para ativar a aceleração de data lake, acesse o console do Hologres. Na coluna Actions da instância desejada, clique em Lake Acceleration e confirme.
  • Uma conexão de rede entre o Hologres e o cluster EMR. Como o Hologres é implantado em uma rede clássica e o EMR opera em uma Virtual Private Cloud (VPC), é necessário um endpoint reverso para que os dois serviços se comuniquem. Envie uma solicitação de conexão de rede. A equipe de suporte do Hologres orientará você nas etapas a seguir:

    1. Faça login no console da VPC e crie um endpoint reverso. Consulte Acessar serviços da Alibaba Cloud.

    2. No parâmetro Type, selecione Other Endpoint Services e insira o nome do serviço de endpoint correspondente à região onde seu cluster EMR está localizado:

      Região

      Nome do serviço de endpoint

      China (Beijing)

      com.aliyuncs.privatelink.cn-beijing.epsrv-2zeokrydzjd6kx3cbwmb

      China (Shanghai)

      com.aliyuncs.privatelink.cn-shanghai.epsrv-uf61fvlfwta7f7dv9n3x

      China (Zhangjiakou)

      com.aliyuncs.privatelink.cn-zhangjiakou.epsrv-8vbno4k4wwvys0eg2swp

    Caso sua região não esteja listada, a equipe do Hologres criará um serviço de endpoint e fornecerá o nome após o envio da solicitação. A conexão utiliza um endereço IP. Se o endereço IP do cluster EMR mudar, reconfigure a conexão.

Limitações

  • Instâncias secundárias do Hologres somente leitura não oferecem suporte à aceleração de data lake.

  • Os comandos UPDATE, DELETE e TRUNCATE não são suportados em tabelas externas.

  • O recurso Auto Load (mapeamento em lote de tabelas externas a partir do HMS) não é suportado.

  • Clusters EMR com autenticação Kerberos ativada não são suportados.

Conectar o Hologres ao HMS

Etapa 1: Criar a extensão

Execute o seguinte comando SQL para instalar o foreign data wrapper (FDW) hive_fdw. Esta operação requer permissões de superusuário e precisa ser executada apenas uma vez por banco de dados.

CREATE EXTENSION IF NOT EXISTS hive_fdw;

Etapa 2: Criar um servidor externo

Crie um servidor externo que aponte para sua instância do HMS e para o armazenamento OSS.

Antes de executar o comando, reúna os seguintes valores:

  • Endereço IP do HMS: No console do E-MapReduce, clique em Node Management referente ao seu cluster. Na aba Node Management, localize o Internal IP do nó mestre.

  • Endpoint do OSS: No console do OSS, abra a página de visão geral do bucket e verifique a área Access Ports.

CREATE SERVER IF NOT EXISTS <server_name> FOREIGN DATA WRAPPER hive_fdw
OPTIONS (
  hive_metastore_uris 'thrift://<hms_ip>:<port>',
  oss_endpoint '<oss_endpoint>'
);

Parâmetro

Obrigatório

Descrição

Exemplo

server_name

Sim

Nome personalizado para o servidor externo.

hive_server

hive_metastore_uris

Sim

URI do Hive Metastore. Formato: thrift://<IP>:<port>. A porta padrão é 9083.

thrift://172.16.0.250:9083

oss_endpoint

Sim

Endpoint do OSS. Para OSS nativo, utilize o endpoint interno para obter melhor desempenho. Para OSS-HDFS, apenas o endpoint interno é suportado.

Veja os exemplos abaixo

Para oss_endpoint, escolha a opção adequada ao seu tipo de armazenamento:

  • OSS Nativo: Utilize o endpoint interno.

    oss-cn-shanghai-internal.aliyuncs.com
  • OSS-HDFS: Apenas o acesso pela rede interna é suportado.

    <bucket_name>.cn-beijing.oss-dls.aliyuncs.com

Etapa 3: (Opcional) Criar um mapeamento de usuário

O mapeamento de usuário controla quais contas do Hologres podem acessar dados externos por meio de um servidor externo. Por exemplo, o proprietário de um servidor externo pode conceder a um usuário do Resource Access Management (RAM) acesso aos dados do OSS.

Para detalhes sobre a sintaxe do CREATE USER MAPPING, consulte a documentação do PostgreSQL.

-- Grant the current user access to the foreign server
CREATE USER MAPPING FOR current_user SERVER <server_name> OPTIONS (
  dlf_access_id  '<AccessKey_ID>',
  dlf_access_key '<AccessKey_Secret>',
  oss_access_id  '<AccessKey_ID>',
  oss_access_key '<AccessKey_Secret>'
);

-- Grant a RAM user (123xxx) access to the foreign server
CREATE USER MAPPING FOR "p4_123xxx" SERVER <server_name> OPTIONS (
  dlf_access_id  '<AccessKey_ID>',
  dlf_access_key '<AccessKey_Secret>',
  oss_access_id  '<AccessKey_ID>',
  oss_access_key '<AccessKey_Secret>'
);

-- Remove user mappings
DROP USER MAPPING FOR CURRENT_USER SERVER <server_name>;
DROP USER MAPPING FOR "p4_123xxx" SERVER <server_name>;

Etapa 4: Criar uma tabela externa

O Hologres oferece dois comandos para criar tabelas externas:

Comando

Mais indicado para

CREATE FOREIGN TABLE

Pequena quantidade de tabelas, ou quando é necessário mapear um subconjunto de colunas ou atribuir um nome personalizado à tabela.

IMPORT FOREIGN SCHEMA

Mapeamento em lote de múltiplas tabelas de um schema externo.

O Hologres oferece suporte a tabelas particionadas no OSS. Os tipos de chave de partição suportados são TEXT, VARCHAR e INT.
Ao utilizar CREATE FOREIGN TABLE : defina os campos de partição como colunas regulares, pois este comando mapeia o schema sem armazenar dados.
Ao utilizar IMPORT FOREIGN SCHEMA : o sistema mapeia os campos automaticamente.
Se o nome de uma tabela externa entrar em conflito com uma tabela interna existente no Hologres, o comando IMPORT FOREIGN SCHEMA ignorará essa tabela. Utilize CREATE FOREIGN TABLE para mapeá-la com um nome diferente.
-- Create a single foreign table
CREATE FOREIGN TABLE <holo_schema_name>.<table_name>
(
  column_name data_type
  [, ...]
)
SERVER <hive_server_name>
OPTIONS (
  schema_name '<ext_db_name>',
  table_name  '<ext_table_name>'
);

-- Import multiple foreign tables in batch
IMPORT FOREIGN SCHEMA <ext_db_name>
[
  { LIMIT TO | EXCEPT }
  ( table_name [, ...] )
]
FROM SERVER <hive_server_name>
INTO <holo_schema_name>
OPTIONS (
  if_table_exist        'update',
  if_unsupported_type   'error'
);

Etapa 5: Consultar a tabela externa

Após criar a tabela externa, consulte-a diretamente para ler os dados do OSS.

Tabela não particionada:

SELECT * FROM <holo_schema>.<hive_table>;

Tabela particionada:

SELECT * FROM <holo_schema>.<hive_partition_table>
WHERE <partition_key> = '<partition_value>';