Aller au contenu principal

Se connecter à un emplacement externe Google Cloud Storage (GCS)

Cette page décrit comment vous connecter à un emplacement externe Google Cloud Storage (GCS). Après avoir établi cette connexion, vous pouvez régir l'accès à ces objets GCS à l'aide de Unity Catalog.

Pour vous connecter avec succès à un chemin de compartiment GCS, vous avez besoin de deux objets sécurisables Unity Catalog. Le premier est un identifiant de stockage, qui spécifie un rôle IAM qui permet d'accéder au compartiment GCS. Vous avez besoin de cet identifiant de stockage pour le deuxième objet requis : un emplacement externe, qui définit le chemin d'accès à votre emplacement de stockage GCS et les identifiants nécessaires pour accéder à cet emplacement.

Exigences

Dans Databricks :

  • Workspace Databricks activé pour Unity Catalog.
  • CREATE STORAGE CREDENTIAL privilège sur le métastore Unity Catalog attaché au Workspace. Les administrateurs de compte et les administrateurs de métastore disposent de ce privilège par default.
  • CREATE EXTERNAL LOCATION privilège sur le métastore Unity Catalog et l'identifiant de stockage référencé par l'emplacement externe. Les administrateurs de métastore et les administrateurs de workspace disposent de ce privilège par default.

Dans votre compte Google Cloud :

  • Un compartiment GCS. Pour éviter les frais de sortie, cela devrait se trouver dans la même région que le Workspace à partir duquel vous souhaitez accéder aux données.

    • Les chemins d’emplacement externe doivent contenir uniquement des caractères ASCII standard (lettres A–Z, a–z, chiffres 0–9 et des symboles courants tels que /, _, -).
    • L'espace de noms hiérarchique (HNS) de Google Cloud Storage n'est pas pris en charge avec les emplacements externes. Désactivez l'espace de noms hiérarchique avant de créer un emplacement externe.
  • Autorisation de modifier la politique d'accès pour ce bucket.

Créer un identifiant de stockage qui accède à GCS

Pour créer des informations d'identification de stockage pour l'accès à un compartiment GCS, vous donnez à Unity Catalog la capacité de lire et d'écrire dans le compartiment en attribuant des rôles IAM sur ce compartiment à un compte de service Google Cloud généré par Databricks.

Générez un compte de service Google Cloud à l'aide de l'Explorateur de catalogues

  1. Connectez-vous à votre Workspace Databricks activé pour Unity Catalog en tant qu'utilisateur disposant du privilège CREATE STORAGE CREDENTIAL sur le metastore.

  2. Dans la barre latérale, cliquez sur Icône de données. Catalogue .

  3. Cliquez sur Icône Ajouter ou plus, puis cliquez sur Créer un identifiant .

  4. Sélectionnez un **type d'identifiant** de **compte de service GCP**.

  5. Saisissez un Nom de l'identifiant de stockage et un commentaire facultatif.

  6. (Facultatif) Si vous souhaitez que les utilisateurs aient un accès en lecture seule aux emplacements externes qui utilisent cet identifiant de stockage, cliquez sur **Options avancées** et sélectionnez **Limiter à l'utilisation en lecture seule**. Pour plus d'informations, voir Marquer un identifiant de stockage en lecture seule.

  7. Cliquez sur Créer .

    Databricks crée l'identifiant de stockage et génère un compte de service Google Cloud.

  8. Dans la boîte de dialogue Identifiant créé , notez l’ID du compte de service, qui est au format d’une adresse e-mail, puis cliquez sur Terminé .

  9. (Facultatif) Liez les informations d'identification de stockage à des Workspace spécifiques.

    Par default, tout utilisateur privilégié peut utiliser les informations d'identification de stockage sur tout workspace attaché au métastore. Si vous souhaitez autoriser l’accès uniquement à partir de workspaces spécifiques, accédez à l’onglet tab et attribuez des workspaces. Consultez Attribuer des informations d'identification de stockage à des Workspace spécifiques.

Configurer les autorisations du compte de service

Vous disposez désormais d'un identifiant de stockage dans Databricks qui est associé à un compte de service Google. Avant d'utiliser les identifiants de stockage, vous devez également accorder au compte de service Google les autorisations nécessaires pour accéder à votre bucket GCS spécifique.

  1. Accédez à la console Google Cloud et ouvrez le compartiment GCS auquel vous souhaitez accéder depuis Databricks.

    Pour éviter les frais de sortie, le bucket doit se trouver dans la même région que le workspace Databricks à partir duquel vous souhaitez accéder aux données.

  2. Sous l'**tab** **Autorisation**, cliquez sur **+ Accorder l'accès** et attribuez les rôles suivants au compte de service :

    • Lecteur de compartiment de stockage ancienne génération
    • Administrateur d'objet de stockage

    Utilisez l'adresse e-mail du compte de service comme identifiant principal.

  3. Cliquez sur Enregistrer .

Vous pouvez maintenant créer un emplacement externe qui référence vos identifiants de stockage.

(Recommandé) Configurer les autorisations pour les événements de fichier

remarque

Si vous n'accordez pas à Databricks l'accès pour configurer les événements de fichiers en votre nom, vous devez configurer manuellement les événements de fichiers pour chaque emplacement. Le fait d'ignorer cette configuration manuelle limite votre accès à plusieurs fonctionnalités Databricks.

Les étapes ci-dessous permettent à Databricks de configurer un pipeline de notifications complet pour publier des messages de notification d'événements de vos buckets GCS vers Google Cloud Pub/Sub. Ils supposent que vous avez un projet GCP avec un bucket GCS et que vous avez activé l'API Pub/Sub.

Les autorisations d'événements de fichiers permettent à Databricks de configurer et de gérer une infrastructure de notification qui achemine les métadonnées de modification de fichiers (noms d'objets, types d'événements) de votre bucket GCS vers Databricks via Google Cloud Pub/Sub. Ils n'accordent aucun nouvel accès à vos données ; le contenu des fichiers n'est jamais transmis via cette infrastructure.

  • Autorisations Pub/Sub (pubsub.*) : Permettent à Databricks de créer, gérer et s'abonner à des rubriques Pub/Sub pour la livraison d'événements de modification de fichiers.
  • **Mise à jour storage.buckets.updatedu compartiment** () : Permet à Databricks de configurer les notifications de compartiment GCS pour publier des événements vers la rubrique Pub/Sub gérée.
  1. Créez un rôle IAM personnalisé pour les événements de fichiers.

    1. Dans la console Google Cloud du projet contenant votre compartiment GCS, accédez à IAM & Administration > Rôles .

    2. Si vous avez déjà un rôle IAM personnalisé, sélectionnez-le et cliquez sur Modifier le rôle . Sinon, créez un nouveau rôle en cliquant sur + Créer un rôle depuis la page Rôles .

    3. Sur l'écran Créer un rôle ou Modifier un rôle , ajoutez les autorisations suivantes à votre rôle IAM personnalisé et enregistrez les modifications. Pour des instructions détaillées, consultez la documentation GCP.

      pubsub.subscriptions.consume
      pubsub.subscriptions.create
      pubsub.subscriptions.delete
      pubsub.subscriptions.get
      pubsub.subscriptions.list
      pubsub.subscriptions.update
      pubsub.topics.attachSubscription
      pubsub.topics.detachSubscription
      pubsub.topics.create
      pubsub.topics.delete
      pubsub.topics.get
      pubsub.topics.list
      pubsub.topics.update
      storage.buckets.update
  2. Accorder l'accès au rôle.

    1. Accédez à IAM & Admin > IAM .
    2. Cliquez sur Accorder l'accès .
    3. Saisissez votre compte de service en tant que principal.
    4. Sélectionnez votre rôle IAM personnalisé.
    5. Cliquez sur Enregistrer .
  3. Accorder des autorisations à l'Agent de service de stockage cloud

    1. Trouvez l'e-mail du compte d'agent de service en suivant ces étapes dans la documentation Google Cloud.
    2. Dans la console Google Cloud, accédez à IAM & Admin > IAM > Grant Access .
    3. Saisissez l’e-mail du compte de l’agent de service et attribuez le rôle **Pub/Sub Publisher***.

Vous pouvez maintenant créer un emplacement externe qui référence ces identifiants de stockage.

Créer un emplacement externe pour un compartiment GCS

Cette section décrit comment créer un emplacement externe à l'aide de Catalog Explorer ou de SQL. Cela suppose que vous disposez déjà d'un identifiant de stockage qui permet d'accéder à votre bucket GCS. Si vous n'avez pas d'identifiant de stockage, suivez les étapes de la section Créer un identifiant de stockage qui accède à GCS.

Option 1 : Créer un emplacement externe manuellement à l'aide de Catalog Explorer

Vous pouvez créer un emplacement externe manuellement à l'aide de l'Explorateur de catalogues.

Pour créer l'emplacement externe :

  1. Connectez-vous à un Workspace qui est associé au métastore.

  2. Dans la barre latérale, cliquez sur Icône de données. Catalogue .

  3. Cliquez sur Icône Ajouter ou plus, puis cliquez sur Créer un emplacement externe .

  4. Saisissez un **nom d'emplacement externe**.

  5. Sous Type de stockage , sélectionnez GCP .

  6. Sous URL , saisissez le chemin d'accès au compartiment GCS. Par exemple, gs://mybucket/<path>.

  7. Sous Identifiant de stockage , sélectionnez l'identifiant de stockage qui accorde l'accès à l'emplacement externe.

  8. (Facultatif) Si vous souhaitez que les utilisateurs disposent d'un accès en lecture seule à l'emplacement externe, cliquez sur **Options avancées** et sélectionnez **Limiter à l'utilisation en lecture seule**. Pour plus d'informations, consultez Marquer un emplacement externe comme étant en lecture seule.

  9. (Facultatif) Si l'emplacement externe est destiné à un catalogue fédéré de Hive metastore, cliquez sur Options avancées et activez le mode de fallback .

    Consultez Activer le mode fallback sur les emplacements externes.

  10. (Facultatif) Les événements de fichier sont activés par default pour simplifier la configuration et améliorer les performances et la capacité des fonctionnalités telles que les Trigger d'arrivée de fichiers et les notifications de fichiers Auto Loader. La validation peut échouer si les identifiants ne sont pas configurés correctement. Pour plus de détails sur la configuration des identifiants, consultez Configurer les événements de fichier pour un emplacement externe. Si vous ne prévoyez pas d'utiliser les fonctionnalités d'événements de fichiers, vous pouvez toujours choisir de forcer la création de l'emplacement.

    Pour modifier le type d'événement de fichier, cliquez sur Options avancées et sélectionnez une option dans la liste déroulante Type d'événement de fichier :

    • Automatique (recommandé) : la file d’attente de stockage et l’abonnement aux événements sont automatiquement créés et gérés tout au long de leur cycle de vie.
    • **Fourni** : La file d'attente de stockage est fournie par votre organisation. Choisissez cette option si votre organisation exige de posséder et de configurer les ressources cloud et les contrôles de sécurité.
  11. Cliquez sur Créer .

  12. (Facultatif) Liez l'emplacement externe à des workspaces spécifiques.

    Par default, tout utilisateur privilégié peut utiliser l’emplacement externe sur n’importe quel workspace attaché au métastore. Si vous souhaitez autoriser l’accès uniquement à partir de workspaces spécifiques, accédez à l’onglet tab et attribuez des workspaces. Voir Attribuer un emplacement externe à des workspaces spécifiques.

  13. Allez dans l'onglet **tab** pour accorder l'autorisation d'utiliser l'emplacement externe.

    Pour que quiconque puisse utiliser l'emplacement externe, vous devez accorder les autorisations :

    • Pour utiliser l'emplacement externe afin d'ajouter un emplacement de stockage géré au métastore, au catalogue ou au schéma, accordez le privilège CREATE MANAGED LOCATION.
    • Pour créer des tables ou des volumes externes, accordez CREATE EXTERNAL TABLE ou CREATE EXTERNAL VOLUME.
    1. Cliquez sur Accorder .
    2. Dans la boîte de dialogue Accorder sur <external location> , sélectionnez des utilisateurs, des groupes ou des Service Principals dans le champ Principaux , et sélectionnez le privilège que vous souhaitez accorder.
    3. Cliquez sur Accorder .

Option 2 : créer un emplacement externe à l'aide de SQL

Pour créer un emplacement externe à l'aide de SQL, exécutez la commande suivante dans un Notebook ou l'éditeur de requêtes SQL. Remplacez les valeurs d'espace réservé. Pour les autorisations et les prérequis requis, consultez Exigences.

  • <location-name>Un nom pour l'emplacement externe. Si location_name inclut des caractères spéciaux, tels que des tirets (-), il doit être entouré d'accents graves (` `). Voir Noms.
  • <bucket-path>: Le chemin dans votre tenant cloud auquel cet emplacement externe accorde l'accès. Par exemple, gs://mybucket.
  • <storage-credential-name>: Le nom de l'identifiant de stockage qui autorise la lecture et l'écriture dans le compartiment. Si le nom de l'identifiant de stockage inclut des caractères spéciaux, tels que des tirets (-), il doit être entouré d'accents graves (` `).
SQL
CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<bucket-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];

Si vous souhaitez limiter l'accès à l'emplacement externe à des workspaces spécifiques de votre compte, également appelé liaison de workspace ou isolation d'emplacement externe, consultez Attribuer un emplacement externe à des workspaces spécifiques.

Vérifier la connexion

Pour vérifier que vous avez créé l'emplacement externe, essayez de lire un fichier à partir de celui-ci. Par exemple, supposons que vous ayez un emplacement externe gs://external-location-bucket contenant un fichier CSV nommé example.csv. Pour lire à partir du fichier gs://external-location-bucket/example.csv, suivez ces étapes :

  1. Dans la barre latérale, cliquez sur Icône du Notebook. **Workspace**.

  2. Cliquez sur **Créer**, puis sélectionnez **Notebook**.

  3. Exécutez l'extrait de code Python suivant :

    Python
    display(dbutils.fs.ls('gs://external-location-bucket/'))

    Ceci affiche une liste de chemins de fichiers dans l'emplacement externe. Dans cet exemple, le fichier gs://external-location-bucket/example.csv apparaît dans la sortie.

  4. Pour lire un fichier spécifique dans l'emplacement externe, exécutez l'extrait de code Python suivant :

    Python
    spark.read.format("csv") \
    .option("header", "true") \
    .option("delimiter", ";") \
    .load('gs://external-location-bucket/example.csv') \
    .display()

    Cela affiche les données dans le fichier gs://external-location-bucket/example.csv.

Étapes suivantes