Todos os produtos
Search
Central de documentação

ApsaraDB for SelectDB:Fonte de dados Hive

Última atualização: Aug 21, 2026

ApsaraDB for SelectDB oferece suporte a consultas federadas, permitindo integrar rapidamente fontes de dados externas, como data lakes, bancos de dados e arquivos remotos, para simplificar e acelerar a análise de dados. Este tópico descreve como o SelectDB usa um catalog para integrar uma fonte de dados Hive e executar análises federadas nesses dados.

Pré-requisitos

  • Garanta que todos os nós do cluster Hive tenham conectividade de rede com a instância SelectDB.

  • Se o Hive for construído sobre HDFS, garanta que as seguintes portas estejam abertas para transferência de dados entre o Hive e o SelectDB.

    • Porta especificada em hive.metastore.uris. A porta padrão é 9083.

    • Porta especificada em dfs.namenode.rpc-address. A porta padrão é 8020.

    • Porta especificada em dfs.datanode.address. A porta padrão é 9866.

  • Compreenda o conceito de catalog e como executar operações básicas nele. Para mais informações, consulte lakehouse.

Considerações

  • Compatível com as versões 1, 2 e 3 do Hive.

  • Oferece suporte a tabelas gerenciadas, tabelas externas e algumas views do Hive.

  • Permite a descoberta de metadados do Hive, Iceberg e Hudi armazenados em um metastore do Hive.

  • Atualmente, o ApsaraDB for SelectDB suporta apenas operações de leitura em dados de um catalog externo.

Ambiente de exemplo

Este tópico utiliza um sistema Linux como exemplo. No SelectDB, execute uma consulta federada em test_db.test_t em um cluster Hive construído sobre HDFS. Substitua os valores de exemplo pelos correspondentes ao seu sistema e ambiente reais. O ambiente de exemplo é o seguinte:

  • Caso de uso: sem alta disponibilidade (non-HA)

  • Backend de armazenamento do Hive: HDFS

  • Banco de dados de origem: test_db

  • Tabela de origem: test_t

Preparar os dados de origem

  1. Faça login no cluster Hive.

  2. Crie um banco de dados chamado test_db.

    CREATE database if NOT EXISTS test_db;
  3. Crie uma tabela chamada test_t.

    CREATE TABLE IF NOT EXISTS test_t (
        id INT,
        name STRING,
        age INT
    );
  4. Insira dados na tabela.

    -- Insert data
    INSERT INTO TABLE test_t VALUES
    (1, 'Alice', 25),
    (2, 'Bob', 30),
    (3, 'Charlie', 35),
    (4, 'David', 40),
    (5, 'Eve', 45);

Procedimento

Etapa 1: Conectar-se a uma instância

Conecte-se à sua instância SelectDB. Para instruções, consulte Connect to an ApsaraDB for SelectDB instance by using a MySQL client.

Etapa 2: Integrar o Hive

O SelectDB integra fontes de dados externas por meio da criação de um catalog externo. Diferentes casos de uso exigem propriedades distintas para o catalog. Escolha a sintaxe e os valores de parâmetros adequados ao seu ambiente.

Após criar o catalog, o ApsaraDB for SelectDB sincroniza automaticamente bancos de dados e tabelas da fonte de dados. O ApsaraDB for SelectDB mapeia colunas entre diferentes fontes de dados e formatos de tabela. Se você não estiver familiarizado com o mapeamento de tipos entre Hive e SelectDB, consulte Mapeamento de tipos de coluna.

Hive on HDFS

Sintaxe
CREATE CATALOG <catalog_name> PROPERTIES (
    'type'='<type>',
    'hive.metastore.uris' = '<hive.metastore.uris>',
    'hadoop.username' = '<hadoop.username>',
    'dfs.nameservices'='<hadoop.username>',
    'dfs.ha.namenodes.your-nameservice'='<dfs.ha.namenodes.your-nameservice>',
    'dfs.namenode.rpc-address.your-nameservice.nn1'='<dfs.namenode.rpc-address.your-nameservice.nn1>',
    'dfs.namenode.rpc-address.your-nameservice.nn2'='<dfs.namenode.rpc-address.your-nameservice.nn2>',
    'dfs.client.failover.proxy.provider.your-nameservice'='<dfs.client.failover.proxy.provider.your-nameservice>'
);
Parâmetros

Cenário sem alta disponibilidade (Non-HA)

Parâmetro

Obrigatório

Descrição

catalog_name

Sim

Nome do catalog.

type

Sim

Tipo do catalog. Defina este parâmetro como hms.

hive.metastore.uris

Sim

URI do metastore do Hive.

  • Formato: thrift://<endereço IP do metastore do Hive>:<porta>.

  • A porta padrão é 9083.

  • Execute SET hive.metastore.uris na CLI do Hive para obter a URI.

Cenário de alta disponibilidade (HA)

Parâmetro

Obrigatório

Descrição

catalog_name

Sim

Nome do catalog.

type

Sim

Tipo do catalog. Defina este parâmetro como hms.

hive.metastore.uris

Sim

URI do metastore do Hive.

  • Formato: thrift://<endereço IP do metastore do Hive>:<porta>.

  • A porta padrão é 9083.

  • Execute SET hive.metastore.uris na CLI do Hive para obter a URI.

hadoop.username

Não

Nome de usuário para o HDFS.

dfs.nameservices

Não

Nome do Name Service. Este valor deve corresponder ao valor de dfs.nameservices no arquivo de configuração hdfs-site.xml do seu ambiente Hive.

dfs.ha.namenodes.[nameservice ID]

Não

Lista de IDs dos NameNodes. Este valor deve corresponder ao valor equivalente no arquivo de configuração hdfs-site.xml do seu ambiente Hive.

dfs.namenode.rpc-address.[nameservice ID].[name node ID]

Não

Endereço RPC do NameNode. A quantidade de endereços deve ser igual ao número de NameNodes, e os endereços devem ser consistentes com os itens de configuração correspondentes no arquivo hdfs-site.xml do seu ambiente Hive.

dfs.client.failover.proxy.provider.[nameservice ID]

Não

Classe Java usada pelo cliente HDFS para se conectar ao NameNode ativo. Na maioria dos casos, o valor é org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider.

Exemplo de cenário sem alta disponibilidade
CREATE CATALOG hive_catalog PROPERTIES (
    'type'='hms',
    'hive.metastore.uris' = 'thrift://master-1-1.c-7fa25a1a****.cn-hangzhou.emr.aliyuncs.com:9083'
);

Construção do Hive no Alibaba Cloud OSS

Sintaxe

A sintaxe é a mesma utilizada para Hive on HDFS, mas os parâmetros obrigatórios são diferentes.

Parâmetros

Parâmetro

Obrigatório

Descrição

type

Sim

Tipo do catalog. Defina este parâmetro como hms.

hive.metastore.uris

Sim

URI do metastore do Hive.

  • Formato: thrift://<endereço IP do metastore do Hive>:<porta>.

  • A porta padrão é 9083.

  • Execute SET hive.metastore.uris na CLI do Hive para obter a URI.

oss.endpoint

Sim

O endpoint usado para acessar dados do Object Storage Service (OSS). Para informações sobre como obter um endpoint, consulte Regions and endpoints.

oss.access_key

Sim

O AccessKey ID usado para acessar dados do OSS.

oss.secret_key

Sim

O AccessKey secret usado para acessar dados do OSS.

Exemplo

CREATE CATALOG hive_catalog PROPERTIES (
    "type"="hms",
    "hive.metastore.uris" = "thrift://172.0.0.1:9083",
    "oss.endpoint" = "oss-cn-beijing.aliyuncs.com",
    "oss.access_key" = "ak",
    "oss.secret_key" = "sk"
);

Etapa 3: Visualizar catalogs

Execute a seguinte instrução para verificar se o catalog foi criado com sucesso.

SHOW CATALOGS; -- Verify whether the catalog is created successfully.
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| CatalogId    | CatalogName  | Type     | IsCurrent | CreateTime              | LastUpdateTime      | Comment                |
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| 436009309195 | hive_catalog | hms      |           | 2024-07-19 17:09:08.058 | 2024-07-19 18:04:37 |                        |
|            0 | internal     | internal | yes       | UNRECORDED              | NULL                | Doris internal catalog |
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+

Etapa 4: Visualizar dados do Hive

  • Visualize bancos de dados e tabelas do Hive a partir do catalog externo.

    Nota

    Ao se conectar a uma instância SelectDB, o diretório de trabalho padrão é o catalog interno.

    1. Mude para o catalog externo desejado.

      SWITCH hive_catalog;
    2. Visualize os dados.

      Após mudar para o catalog alvo, acesse seus dados da mesma forma que acessaria dados no catalog interno. Por exemplo:

      • Listar bancos de dados: SHOW DATABASES;

      • Mudar para um banco de dados: USE test_db;

      • Listar tabelas em um banco de dados: SHOW TABLES;

      • Consultar dados da tabela: SELECT * FROM test_t;

  • Visualize dados do Hive diretamente pelo catalog interno.

    -- View data from the test_t table in the test_db database under the hive_catalog.
    SELECT * FROM hive_catalog.test_db.test_t;

Mais operações: Migrar dados

Após integrar a fonte de dados, utilize a instrução INSERT INTO para migrar dados históricos do Hive para o SelectDB. Para mais informações, consulte INSERT INTO.

Mapeamento de tipos de coluna

Nota
  • Os seguintes mapeamentos de tipos do metastore do Hive aplicam-se a fontes de dados que utilizam um metastore do Hive, como Hive, Iceberg e Hudi.

  • Alguns dos tipos complexos do metastore do Hive e do SelectDB suportam aninhamento.

    • array<type>: Exemplo de aninhamento: array<map<string, int>>

    • map<KeyType, ValueType>: Exemplo de aninhamento: map<string, array<int>>

    • struct<col1: Type1, col2: Type2, ...>: Exemplo de aninhamento: struct<col1: array<int>, col2: map<int, date>>

Tipo HMS

Tipo SelectDB

BOOLEAN

BOOLEAN

TINYINT

TINYINT

SMALLINT

SMALLINT

INT

INT

BIGINT

BIGINT

DATE

DATE

TIMESTAMP

DATETIME

FLOAT

FLOAT

DOUBLE

DOUBLE

CHAR

CHAR

VARCHAR

VARCHAR

DECIMAL

DECIMAL

ARRAY<type>

ARRAY<type>

MAP<KeyType, ValueType>

MAP<KeyType, ValueType>

STRUCT<col1: Type1, col2: Type2, ...>

STRUCT<col1: Type1, col2: Type2, ...>

Outros

Não suportado