Le moteur de base de données DataLakeCatalog vous permet de connecter ClickHouse à des
catalogues de données externes et d’interroger des données dans un format de table ouvert, sans avoir à dupliquer les données.
Cela transforme ClickHouse en un puissant moteur de requête qui s’intègre parfaitement à
votre infrastructure de lac de données existante.
Catalogues pris en charge
Le moteur DataLakeCatalog prend en charge les catalogues de données suivants :
- AWS Glue Catalog - Pour les tables Iceberg dans des environnements AWS
- Databricks Unity Catalog - Pour les tables Delta Lake et Iceberg
- Hive Metastore - Catalogue traditionnel de l’écosystème Hadoop
- Catalogues REST - Tout catalogue compatible avec la spécification REST d’Iceberg
Création d’une base de données
Vous devrez activer les paramètres appropriés ci-dessous pour utiliser le moteur DataLakeCatalog :
SET allow_experimental_database_iceberg = 1;
SET allow_experimental_database_unity_catalog = 1;
SET allow_experimental_database_glue_catalog = 1;
SET allow_experimental_database_hms_catalog = 1;
SET allow_experimental_database_paimon_rest_catalog = 1;Les bases de données utilisant le moteur DataLakeCatalog peuvent être créées selon la syntaxe suivante :
CREATE DATABASE database_name
ENGINE = DataLakeCatalog(catalog_endpoint[, user, password])
SETTINGS
catalog_type,
[...]Les paramètres suivants sont pris en charge :
| Setting | Description |
|---|---|
catalog_type |
Type de catalogue : glue, unity (Delta), rest (Iceberg), hive, onelake (Iceberg), delta_sharing (Iceberg, espaces de noms plats), horizon (Snowflake Horizon Iceberg REST) |
warehouse |
Nom du warehouse/de la base de données à utiliser dans le catalogue. |
catalog_credential |
Identifiants d’authentification pour le catalogue (par ex. clé API ou jeton) |
auth_header |
En-tête HTTP personnalisé pour l’authentification auprès du service de catalogue |
auth_scope |
Scope OAuth2 pour l’authentification (si vous utilisez OAuth) |
storage_endpoint |
URL du point de terminaison du stockage sous-jacent |
oauth_server_uri |
URI du serveur d’autorisation OAuth2 pour l’authentification |
vended_credentials |
Booléen indiquant s’il faut utiliser les identifiants fournis par le catalogue (compatible avec AWS S3 et Azure ADLS Gen2) |
aws_access_key_id |
ID de clé d’accès AWS pour l’accès à S3/Glue (si vous n’utilisez pas les identifiants fournis) |
aws_secret_access_key |
Clé d’accès secrète AWS pour l’accès à S3/Glue (si vous n’utilisez pas les identifiants fournis) |
aws_role_arn |
ARN du rôle IAM à assumer pour l’accès à AWS/Glue. Lorsqu’il est défini, ClickHouse utilise AWS STS AssumeRole avec les identifiants de base provenant de aws_access_key_id et aws_secret_access_key lorsque les deux sont fournis, ou de la chaîne d’identifiants AWS par défaut sinon (le rôle doit approuver l’identité sous laquelle le serveur s’exécute). |
aws_role_session_name |
Nom de session utilisé pour l’appel AWS STS AssumeRole. Facultatif ; la valeur par défaut est ClickHouseSession. |
aws_external_id |
ID externe transmis à AWS STS AssumeRole, correspondant à la condition sts:ExternalId de la stratégie d’approbation du rôle. Utilisez-le lorsque le rôle appartient à un tiers, comme ClickHouse Cloud. |
region |
Région AWS du service (par ex. us-east-1) |
dlf_access_key_id |
ID de clé d’accès pour l’accès à DLF |
dlf_access_key_secret |
Clé d’accès secrète pour l’accès à DLF |
force_add_bucket |
Lors de la construction des URL du stockage objet à partir de l’emplacement de table fourni par le catalogue et de storage_endpoint, ajoutez le nom du bucket/conteneur au début, même si le point de terminaison le contient déjà. Par défaut : false. Définissez cette valeur sur true pour les catalogues qui renvoient des chemins sans le bucket et nécessitent son ajout lors de l’étape de construction de l’URL (chemins de type Polaris). |
Exemples
Consultez les sections ci-dessous pour voir des exemples d'utilisation du moteur DataLakeCatalog :
- Unity Catalog
- Glue Catalog
- Catalog OneLake
Peut être utilisé en activant
allow_experimental_database_icebergouallow_database_iceberg.
CREATE DATABASE database_name
ENGINE = DataLakeCatalog(catalog_endpoint)
SETTINGS
catalog_type = 'onelake',
warehouse = warehouse,
onelake_tenant_id = tenant_id,
oauth_server_uri = server_uri,
auth_scope = auth_scope,
onelake_client_id = client_id,
onelake_client_secret = client_secret;
SHOW TABLES IN database_name;
SELECT count() from database_name.table_name;Pour vous authentifier sans partager de secret client, définissez onelake_bearer_token sur un Bearer token obtenu au préalable
(limité à https://storage.azure.com) au lieu de
onelake_client_id/onelake_client_secret. ClickHouse ne renouvelle pas le jeton ; la
database doit donc être recréée après son expiration.