Tous les produits
Search
Centre de documentation

ApsaraDB for SelectDB:Source de données Hive

Dernière mise à jour :Aug 12, 2026

ApsaraDB for SelectDB prend en charge les requêtes fédérées vers des sources de données externes via des catalogues. Cette rubrique explique comment connecter un cluster Hive à SelectDB à l'aide d'un catalogue Hive, afin d'interroger directement les données Hive sans avoir à les déplacer.

Cas d'utilisation

Scénario Description
Accélération des requêtes Exécutez le moteur de requêtes distribué de SelectDB directement sur les données Hive, sans processus ETL.
Intégration des données Lisez les données Hive et chargez-les dans des tables internes SelectDB à l'aide d'instructions INSERT INTO.

Configurations prises en charge

Dimension Prise en charge
Versions de Hive Hive 1, Hive 2, Hive 3
Types de table Tables gérées, tables externes, certaines vues Hive
Formats de métadonnées Métadonnées Hive, Iceberg et Hudi stockées dans un metastore Hive
Mode d'accès Lecture seule — SelectDB ne peut pas écrire dans des catalogues externes
Backends de stockage HDFS (non-HA et HA), Object Storage Service (OSS)

Prérequis

Avant de commencer, assurez-vous que :

Environnement d'exemple

La procédure décrite dans cette rubrique utilise la configuration suivante. Remplacez les valeurs par les vôtres lorsque ces paramètres apparaissent.

Paramètre Valeur
Mode haute disponibilité (HA) Non-HA
Stockage du cluster Hive HDFS
Base de données source test_db
Table source test_t

Préparer les données source

  1. Connectez-vous au cluster Hive que vous souhaitez interroger.

  2. Créez une base de données nommée test_db.

    CREATE DATABASE IF NOT EXISTS test_db;
  3. Créez une table nommée test_t.

    CREATE TABLE IF NOT EXISTS test_t (
        id   INT,
        name STRING,
        age  INT
    );
  4. Insérez des exemples de données.

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

Connecter un cluster Hive à SelectDB

Étape 1 : Se connecter à une instance ApsaraDB for SelectDB

Connectez-vous à votre instance SelectDB à l'aide d'un client MySQL. Consultez la documentation Se connecter à une instance ApsaraDB for SelectDB à l'aide d'un client MySQL.

Étape 2 : Créer un catalogue Hive

Créez un catalogue externe mappé à votre cluster Hive. SelectDB découvre automatiquement les bases de données et les tables du catalogue et mappe les types de colonnes Hive aux types SelectDB. Pour consulter le tableau complet de correspondance des types, reportez-vous à la section Mappages des types de données de colonne.

Sélectionnez la configuration correspondant à votre backend de stockage.

Hive basé sur HDFS (non-HA)

Utilisez cette configuration lorsque votre HDFS dispose d'un seul NameNode actif.

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

Exemple :

CREATE CATALOG hive_catalog PROPERTIES (
    'type'                = 'hms',
    'hive.metastore.uris' = 'thrift://master-1-1.c-7fa25a1a****.cn-hangzhou.emr.aliyuncs.com:9083'
);
Paramètre Obligatoire Description
type Oui Type de catalogue. Définissez la valeur sur hms.
hive.metastore.uris Oui URI du metastore Hive au format thrift://<host>:<port>. Port par défaut : 9083. Exécutez SET hive.metastore.uris sur un client Hive pour obtenir l'URI.

Hive basé sur HDFS (HA)

Utilisez cette configuration lorsque votre HDFS utilise la haute disponibilité avec plusieurs 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>'
);
Paramètre Obligatoire Description
type Oui Type de catalogue. Définissez la valeur sur hms.
hive.metastore.uris Oui URI du metastore Hive. Format : thrift://<host>:<port>. Port par défaut : 9083.
hadoop.username Non Nom d'utilisateur pour l'accès HDFS.
dfs.nameservices Non ID NameService. Doit correspondre à la valeur définie dans hdfs-site.xml.
dfs.ha.namenodes.[ID NameService] Non IDs des NameNodes. Doivent correspondre aux valeurs définies dans hdfs-site.xml.
dfs.namenode.rpc-address.[ID NameService].[ID NameNode] Non Adresse RPC de chaque NameNode. Doit correspondre aux valeurs définies dans hdfs-site.xml.
dfs.client.failover.proxy.provider.[ID NameService] Non Classe Java pour le basculement vers le NameNode actif. Utilisez org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dans la plupart des cas.

Hive basé sur OSS

Utilisez cette configuration lorsque les données Hive sont stockées dans Object Storage Service (OSS). La syntaxe est identique à celle de la variante HDFS ; seuls les paramètres de stockage diffèrent.

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>"
);
Paramètre Obligatoire Description
type Oui Type de catalogue. Définissez la valeur sur hms.
hive.metastore.uris Oui URI du metastore Hive. Format : thrift://<host>:<port>.
oss.endpoint Oui Endpoint OSS de la région où vos données sont stockées. Consultez la documentation Régions et endpoints.
oss.access_key Oui AccessKey ID utilisé pour accéder à OSS.
oss.secret_key Oui AccessKey secret utilisé pour accéder à OSS.

Étape 3 : Vérifier le catalogue

Confirmez que le catalogue a été créé avec succès.

SHOW CATALOGS;

Résultat attendu :

+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| 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 |
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+

Étape 4 : Interroger les données Hive

Après la connexion, SelectDB utilise par défaut le catalogue interne. Basculez vers le catalogue Hive pour accéder aux données Hive.

Les deux styles de requête ci-dessous sont équivalents — utilisez celui qui correspond le mieux à votre flux de travail.

-- 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;

Pour explorer le catalogue avant d'exécuter des requêtes :

SWITCH hive_catalog;
SHOW DATABASES;   -- list all databases in the Hive catalog
USE test_db;
SHOW TABLES;      -- list all tables in test_db
Après avoir basculé vers le catalogue externe, vous naviguez dans les bases de données et les tables de la même manière que dans le catalogue interne.

Migrer des données de Hive vers SelectDB

Une fois le catalogue Hive connecté, utilisez des instructions INSERT INTO pour migrer les données historiques de Hive vers des tables internes SelectDB. Consultez la documentation Importer des données à l'aide d'instructions INSERT INTO.

Mappages des types de données de colonne

SelectDB mappe automatiquement les types de colonnes Hive aux types SelectDB lors de la création d'un catalogue. Les mappages ci-dessous s'appliquent aux métadonnées Hive, Iceberg et Hudi stockées dans un metastore Hive.

Les types complexes peuvent être imbriqués. Par exemple :

  • array<map<string, int>>

  • map<string, array<int>>

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

Type dans le metastore Hive Type SelectDB Remarque
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> Prend en charge l'imbrication, par exemple array<map<string, int>>.
map<KeyType, ValueType> map<KeyType, ValueType> Prend en charge l'imbrication, par exemple map<string, array<int>>.
struct<col1: Type1, col2: Type2, ...> struct<col1: Type1, col2: Type2, ...> Prend en charge l'imbrication, par exemple struct<col1: array<int>, col2: map<int, date>>.
Autre non pris en charge

Étapes suivantes