Todos os produtos
Search
Central de documentação

ApsaraDB for SelectDB:Fonte de dados Hive

Última atualização: Jun 30, 2026

O ApsaraDB for SelectDB suporta consultas federadas em fontes de dados externas por meio de catalogs. Este tópico explica como conectar um cluster Hive ao SelectDB usando um catálogo Hive para consultar dados do Hive diretamente, sem movê-los.

Casos de uso

Cenário

Descrição

Aceleração de consultas

Execute o mecanismo de consulta distribuído do SelectDB diretamente nos dados do Hive, sem ETL.

Integração de dados

Leia dados do Hive e carregue-os em tabelas internas do SelectDB com instruções INSERT INTO.

Configurações suportadas

Dimensão

Suportado

Versões do Hive

Hive 1, Hive 2, Hive 3

Tipos de tabela

Tabelas gerenciadas, tabelas externas e algumas views do Hive

Formatos de metadados

Metadados Hive, Iceberg e Hudi armazenados em um metastore Hive

Modo de acesso

Somente leitura (o SelectDB não grava em catalogs externos)

Backends de armazenamento

HDFS (não HA e HA), Object Storage Service (OSS)

Pré-requisitos

Antes de começar, verifique se:

Ambiente de exemplo

O tutorial deste tópico usa a configuração a seguir. Substitua pelos seus próprios valores sempre que esses parâmetros aparecerem.

Parâmetro

Valor

Modo de alta disponibilidade (HA)

Não HA

Armazenamento do cluster 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 que deseja consultar.

  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 de exemplo.

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

Conectar um cluster Hive ao SelectDB

Etapa 1: Conectar-se a uma instância do ApsaraDB for SelectDB

Conecte-se à instância SelectDB usando um cliente MySQL. Consulte Conectar-se a uma instância do ApsaraDB for SelectDB usando um cliente MySQL.

Etapa 2: Criar um catálogo Hive

Crie um catálogo externo que mapeie o cluster Hive. O SelectDB descobre automaticamente os bancos de dados e as tabelas no catálogo e mapeia os tipos de coluna do Hive para os tipos do SelectDB. Para visualizar a tabela completa de mapeamento de tipos, consulte Mapeamentos de tipos de dados de coluna.

Selecione a configuração correspondente ao seu backend de armazenamento.

Hive baseado em HDFS (não HA)

Use esta configuração quando o HDFS tiver um único NameNode ativo.

CREATE CATALOG hive_catalog PROPERTIES (
    'type'                = 'hms',
    'hive.metastore.uris' = 'thrift://<metastore-host>:9083'
);

Exemplo:

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

Parâmetro

Obrigatório

Descrição

type

Sim

Tipo de catálogo. Defina como hms.

hive.metastore.uris

Sim

URI do metastore Hive no formato thrift://<host>:<port>. Porta padrão: 9083. Execute SET hive.metastore.uris em um cliente Hive para obter a URI.

Hive baseado em HDFS (HA)

Use esta configuração quando o HDFS utilizar alta disponibilidade com múltiplos NameNodes.

CREATE CATALOG <catalog_name> PROPERTIES (
    'type'                                                = 'hms',
    'hive.metastore.uris'                                 = 'thrift://<metastore-host>:9083',
    'hadoop.username'                                     = '<hadoop-username>',
    'dfs.nameservices'                                    = '<nameservice-id>',
    'dfs.ha.namenodes.<nameservice-id>'                   = '<nn1>,<nn2>',
    'dfs.namenode.rpc-address.<nameservice-id>.<nn1>'     = '<host1>:<port1>',
    'dfs.namenode.rpc-address.<nameservice-id>.<nn2>'     = '<host2>:<port2>',
    'dfs.client.failover.proxy.provider.<nameservice-id>' = '<dfs.client.failover.proxy.provider.your-nameservice>'
);

Parâmetro

Obrigatório

Descrição

type

Sim

Tipo de catálogo. Defina como hms.

hive.metastore.uris

Sim

URI do metastore Hive. Formato: thrift://<host>:<port>. Porta padrão: 9083.

hadoop.username

Não

Nome de usuário para acesso ao HDFS.

dfs.nameservices

Não

ID do NameService. Deve corresponder ao valor em hdfs-site.xml.

dfs.ha.namenodes.[nameservice ID]

Não

IDs dos NameNodes. Devem corresponder aos valores em hdfs-site.xml.

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

Não

Endereço de chamada de procedimento remoto (RPC) de cada NameNode. Deve corresponder aos valores em hdfs-site.xml.

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

Não

Classe Java para failover do NameNode ativo. Use org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider na maioria dos casos.

Hive baseado em OSS

Use esta configuração quando os dados do Hive estiverem armazenados no Object Storage Service (OSS). A sintaxe é idêntica à variante HDFS; apenas os parâmetros de armazenamento diferem.

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"      = "<your-access-key-id>",
    "oss.secret_key"      = "<your-access-key-secret>"
);

Parâmetro

Obrigatório

Descrição

type

Sim

Tipo de catálogo. Defina como hms.

hive.metastore.uris

Sim

URI do metastore Hive. Formato: thrift://<host>:<port>.

oss.endpoint

Sim

Endpoint do OSS para a região onde os dados estão armazenados. Consulte Regiões e endpoints.

oss.access_key

Sim

AccessKey ID usado para acessar o OSS.

oss.secret_key

Sim

AccessKey secret usado para acessar o OSS.

Etapa 3: Verificar o catálogo

Confirme se o catálogo foi criado com sucesso.

SHOW CATALOGS;

Saída esperada:

+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| 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: Consultar dados do Hive

Após a conexão, o SelectDB usa o catálogo interno por padrão. Alterne para o catálogo Hive para acessar os dados do Hive.

Os dois estilos de consulta abaixo são equivalentes. Utilize o que melhor se adequar ao seu fluxo de trabalho.

-- Style 1: Switch catalog, then use database and table
SWITCH hive_catalog;
USE test_db;
SELECT * FROM test_t;

-- Style 2: Use the fully qualified table name (no switch required)
SELECT * FROM hive_catalog.test_db.test_t;

Para explorar o catálogo antes de executar consultas:

SWITCH hive_catalog;
SHOW DATABASES;   -- list all databases in the Hive catalog
USE test_db;
SHOW TABLES;      -- list all tables in test_db
Após alternar para o catálogo externo, navegue pelos bancos de dados e tabelas da mesma forma que no catálogo interno.

Migrar dados do Hive para o SelectDB

Depois de conectar o catálogo Hive, use instruções INSERT INTO para migrar dados históricos do Hive para tabelas internas do SelectDB. Consulte Importar dados usando instruções INSERT INTO.

Mapeamentos de tipos de dados de coluna

O SelectDB mapeia automaticamente os tipos de coluna do Hive para os tipos do SelectDB quando você cria um catálogo. Os mapeamentos abaixo aplicam-se a metadados Hive, Iceberg e Hudi armazenados em um metastore Hive.

Tipos complexos podem ser aninhados. Por exemplo:

  • array<map<string, int>>

  • map<string, array<int>>

  • struct<col1: array<int>, col2: map<int, date>>

Tipo no metastore Hive

Tipo no SelectDB

Observação

boolean

boolean

tinyint

tinyint

smallint

smallint

int

int

bigint

bigint

float

float

double

double

char

char

varchar

varchar

decimal

decimal

date

date

timestamp

datetime

array<type>

array<type>

Suporta aninhamento, por exemplo array<map<string, int>>.

map<KeyType, ValueType>

map<KeyType, ValueType>

Suporta aninhamento, por exemplo map<string, array<int>>.

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

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

Suporta aninhamento, por exemplo struct<col1: array<int>, col2: map<int, date>>.

Outros

não suportado

Próximos passos