Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

DataLakeCatalog

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_iceberg ou allow_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.

Navigation