CREATE EXTERNAL DATABASE associe une source de données externe (MaxCompute ou un lac de données Data Lake Formation [DLF]) à une instance Hologres sous la forme d'un objet de base de données unique. Une fois l'association établie, vous pouvez interroger les tables externes via le chemin en trois parties ext_db.schema.table, exécuter des requêtes fédérées sur les données internes et externes, et gérer toutes les métadonnées depuis un emplacement centralisé.
Les bases de données externes sont visibles globalement au sein d'une instance Hologres ; toute base de données interne peut donc y faire référence. Vous pouvez également vous connecter directement à une base de données externe pour exécuter des instructions SQL et définir des paramètres de configuration unifiée globale (GUC).
Prise en charge à partir de Hologres V3.0.
Choisissez votre source de données
Les deux sources de données prises en charge fonctionnent différemment. Sélectionnez celle qui correspond à votre cas d'usage avant de rédiger votre instruction.
| MaxCompute | DLF | |
|---|---|---|
| Élément connecté | Un projet MaxCompute | Un catalogue DLF (format Paimon) |
| Emplacement de stockage | Stockage MaxCompute | Object Storage Service (OSS) géré par DLF |
| Formats pris en charge | Natif MaxCompute | Paimon (géré par DLF) ; Paimon, Apache Hudi, Delta Lake, ORC, Parquet, CSV, SequenceFile (DLF V1.0) |
| Cas d'utilisation recommandé | Vos données résident dans des projets MaxCompute | Vos données résident dans des lacs de données OSS gérés par DLF |
Hologres s'appuie sur son moteur High-QPS Engine (HQE), développé en interne, pour assurer des lectures et écritures haute performance sur les formats de lac de données tels que Paimon, Hudi et DeltaLake.
Prérequis
Configuration de l'instance
Activez l'accélération des lacs de données pour l'instance avant d'exécuter CREATE EXTERNAL DATABASE :
Ouvrez la console Hologres et accédez à la page Instance Details ou à la liste des instances.
Repérez l'instance cible et cliquez sur Data Lake Acceleration dans la colonne Actions.
Cliquez sur Confirm dans la boîte de dialogue.
Activation des services
DLF : activez le service DLF. Consultez le Guide de démarrage rapide et la rubrique Régions et endpoints disponibles.
DLF V1.0 : activez également le service Object Storage Service (OSS) et complétez l'autorisation OSS. Sans les autorisations OSS requises, les requêtes échouent même si la table externe est créée avec succès. Consultez la rubrique Stratégie de bucket.
OSS-HDFS (facultatif) : activez le service OSS-HDFS si vous prévoyez d'utiliser le stockage OSS-HDFS. Consultez la rubrique Activer le service OSS-HDFS.
Autorisations
Le compte qui exécute
CREATE EXTERNAL DATABASEdoit disposer des autorisations Superuser dans Hologres.Les autorisations sur les données externes (tables, schémas) sont gérées par MaxCompute ou DLF, et non par Hologres. Accordez les autorisations requises au rôle lié au service (SLR)
AliyunServiceRoleForHologresIdentityMgmtavant d'accéder aux données externes. Consultez la rubrique Rôle lié au service Hologres.Pour utiliser un rôle RAM au lieu du SLR, consultez la rubrique Présentation des rôles RAM.
Pour les comptes non Alibaba Cloud et les utilisateurs RAM (par exemple, les comptes Hologres BASIC), utilisez
CREATE USER MAPPINGpour lier et autoriser le compte. Consultez la rubrique CREATE USER MAPPING.
Limitations
L'accès inter-bases de données est unidirectionnel. Lorsque vous êtes connecté à une base de données interne, accédez aux tables externes via le chemin complet
ext_db.schema.table. Lorsque vous êtes connecté directement à une base de données externe, les tables des bases de données internes ne sont pas accessibles.La durée de vie (TTL) du cache de métadonnées est fixée à 5 minutes. Hologres met en cache les métadonnées externes pendant 5 minutes afin d'améliorer les performances. Cette valeur n'est pas configurable. Pour forcer l'actualisation, utilisez l'instruction
REFRESH CACHEdécrite dans la section Actualiser les métadonnées externes.MaxCompute : seuls les projets internes sont pris en charge. Les projets MaxCompute externes ne peuvent pas être associés.
Syntaxe
Source de données MaxCompute
CREATE EXTERNAL DATABASE <ext_database_name> WITH
metastore_type 'maxcompute'
mc_project '<project_name>'
[comment '<description>'];
Paramètres
| Paramètre | Requis | Description |
|---|---|---|
metastore_type |
Oui | Type de metastore. Définissez la valeur sur maxcompute. La casse n'est pas sensible. |
mc_project |
Oui | Nom du projet MaxCompute à associer. Seuls les projets MaxCompute internes sont pris en charge. |
comment |
Non | Description de la base de données externe. |
Source de données DLF
DLF prend actuellement en charge uniquement le mode de stockage géré et le type de catalogue Paimon. Définissezmetastore_typesurdlf-restetcatalog_typesurpaimon. L'authentification utilise par défaut le SLR (AliyunServiceRoleForHologresIdentityMgmt). Pour utiliser un rôle RAM à la place, configurez-le viaCREATE USER MAPPING.
CREATE EXTERNAL DATABASE <ext_database_name> WITH
catalog_type 'paimon'
metastore_type 'dlf-rest'
dlf_catalog '<dlf_catalog_name>'
[comment '<description>'];
Paramètres
| Paramètre | Requis | Description |
|---|---|---|
metastore_type |
Oui | Type de metastore pour la source de données DLF. Définissez la valeur sur dlf-rest. |
catalog_type |
Oui | Format de table de lac de données. Définissez la valeur sur paimon. |
dlf_catalog |
Oui | Nom du catalogue DLF à associer. |
comment |
Non | Description de la base de données externe. |
Source de données DLF V1.0
DLF V1.0 prend en charge le stockage OSS personnalisé et des formats supplémentaires : Paimon, Apache Hudi, Delta Lake, ORC, Parquet, CSV et SequenceFile. Consultez la rubrique Accélération des lacs de données . DLF V1.0 ne prend pas en charge l'authentification par SLR ou par rôle RAM. Utilisez CREATE USER MAPPING pour fournir les identifiants par utilisateur.
CREATE EXTERNAL DATABASE <ext_database_name> WITH
metastore_type 'dlf'
dlf_region '<region>'
dlf_endpoint '<dlf_endpoint>'
dlf_catalog '<catalog_name>'
oss_endpoint '<oss_endpoint>'
[comment '<description>'];
Paramètres
| Paramètre | Requis | Description | Exemple |
|---|---|---|---|
metastore_type |
Oui | Type de metastore. Définissez la valeur sur dlf pour DLF V1.0. |
dlf |
catalog_type |
Non | Format de table de lac de données. DLF V1.0 prend en charge Paimon, Hudi, Delta Lake, ORC, Parquet, CSV et SequenceFile. Ce paramètre n'est pas requis pour DLF V1.0. | paimon |
dlf_region |
Oui | Région où le service DLF est déployé. Format : <nation>-<region>. |
cn-beijing |
dlf_endpoint |
Oui | Endpoint de réseau interne pour l'accès à DLF. Format : dlf-share.<nation>-<region>.aliyuncs.com. Consultez la rubrique Régions et endpoints disponibles. |
dlf-share.cn-beijing.aliyuncs.com |
dlf_catalog |
Oui | Nom du catalogue DLF à associer. | hive_catalog |
dlf_access_id |
Oui | ID AccessKey pour l'accès à DLF. Fourni via CREATE USER MAPPING. |
— |
dlf_access_key |
Oui | Secret AccessKey pour l'accès à DLF. Fourni via CREATE USER MAPPING. |
— |
oss_endpoint |
Oui | Endpoint pour l'accès à OSS. Utilisez l'endpoint interne pour de meilleures performances. Pour OSS-HDFS, utilisez l'endpoint interne OSS-HDFS. Consultez la rubrique Obtenir le nom de domaine OSS-HDFS. | oss-cn-beijing-internal.aliyuncs.com |
oss_access_id |
Oui | ID AccessKey pour l'accès à OSS. Fourni via CREATE USER MAPPING. |
— |
oss_access_key |
Oui | Secret AccessKey pour l'accès à OSS. Fourni via CREATE USER MAPPING. |
— |
comment |
Non | Description de la base de données externe. | — |
Exemples
Source de données MaxCompute
Lorsque vous associez un projet MaxCompute utilisant un modèle à deux couches, Hologres l'affiche sous forme d'une structure à trois couches :ext_db.schema.mc_table. Le nom du schéma est par défautdefault. Par exemple :SELECT * FROM ext_db.default.mc_table.
-- Create an external database for a MaxCompute project.
CREATE EXTERNAL DATABASE ext_database_mc WITH
metastore_type 'maxcompute'
mc_project 'mc_3_layer_project'
comment 'mc three layer project';
-- Query a table in the external database.
SELECT * FROM ext_database_mc.mc_schema.mc_table;
Source de données DLF
-- Create an external database for a DLF Paimon catalog.
CREATE EXTERNAL DATABASE ext_database_dlf WITH
metastore_type 'dlf-rest'
catalog_type 'paimon'
dlf_catalog 'dlf_paimon_catalog'
comment 'DLF paimon catalog';
-- Query a table in the external database.
SELECT * FROM ext_database_dlf.dlf_db.paimon_table;
Source de données DLF V1.0
DLF V1.0 nécessite une paire AccessKey pour DLF et OSS. Fournissez les identifiants à l'aide de CREATE USER MAPPING plutôt que de les intégrer directement dans l'instruction CREATE EXTERNAL DATABASE.
-- Create an external database.
CREATE EXTERNAL DATABASE ext_database_dlf1 WITH
metastore_type 'dlf'
dlf_region 'cn-beijing'
dlf_endpoint 'dlf-share.cn-beijing.aliyuncs.com'
dlf_catalog 'hive_catalog'
oss_endpoint 'oss-cn-beijing-internal.aliyuncs.com'
comment 'DLF1.0 hive catalog';
-- Bind credentials for the current user.
CREATE USER MAPPING FOR current_user
EXTERNAL DATABASE ext_database_dlf1
OPTIONS
(
dlf_access_id 'LTxxxxxxxxxx',
dlf_access_key 'y8xxxxxxxxxxxxx',
oss_access_id 'LTxxxxxxxxxx',
oss_access_key 'y8xxxxxxxxxxxxx'
);
-- Query a table in the external database.
SELECT * FROM ext_database_dlf1.dlf_db.hive_table;
Autres opérations
Afficher toutes les bases de données externes
SELECT database_name, options FROM hologres.hg_external_databases();
Actualiser les métadonnées externes
Forcez une actualisation immédiate des métadonnées au lieu d'attendre l'expiration du cache :
REFRESH CACHE FOR EXTERNAL DATABASE <EXT_DB_NAME> WITH (cache_level = 'metadata');
Modifier l'intervalle d'actualisation des métadonnées
Le paramètre metadata_refresh_interval_sec contrôle l'intervalle d'actualisation complète du schéma par nœud frontend (FE). La valeur par défaut est de 7 200 secondes. Ajustez-la avec :
ALTER EXTERNAL DATABASE <EXT_DB_NAME> WITH metadata_refresh_interval_sec 1800;