Se connecter à Apache Spark
En tant qu'administrateur BigQuery, vous pouvez créer une connexion pour permettre aux analystes de données d'exécuter des procédures stockées pour Apache Spark.
Avant de commencer
Activez l'API BigQuery Connection.
-
Pour obtenir les autorisations nécessaires pour créer une connexion Spark, demandez à votre administrateur de vous accorder le rôle IAM Administrateur de connexion BigQuery (
roles/bigquery.connectionAdmin
) sur le projet. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
- Facultatif : Pour gérer vos métadonnées à l'aide de Dataproc Metastore, vérifiez que vous avez créé un service Dataproc Metastore.
- Facultatif : Pour afficher l'historique des tâches à l'aide des interfaces Web du serveur d'historique Spark, vérifiez que vous avez créé un serveur d'historique persistant (PHS) Dataproc.
Considérations relatives aux emplacements
Lorsque vous choisissez un emplacement pour les données, envisagez d'entreprendre les actions suivantes :
Emplacements multirégionaux
Vous devez spécifier des ressources Google Cloud situées dans la même zone géographique :
Une connexion dans l'emplacement multirégional BigQuery États-Unis peut faire référence à un serveur d'historique Spark ou à un métastore Dataproc dans n'importe quelle région des États-Unis (par exemple,
us-central1
,us-east4
ouus-west2
).Une connexion dans l'emplacement BigQuery multirégional EU peut faire référence à un serveur d'historique Spark ou à un Dataproc Metastore situé dans des États membres de l'Union européenne, tels que
europe-north1
oueurope-west3
.
Régions uniques
Une connexion dans une seule région ne peut référencer que des ressources Google Cloud situées dans la même région. Par exemple, une connexion dans la région unique us-east4
ne peut référencer qu'un serveur d'historique Spark ou un Dataproc Metastore situé dans us-east4
.
Créer des connexions
Sélectionnez l'une des options suivantes :
Console
Accédez à la page BigQuery.
Pour créer une connexion, cliquez sur
Ajouter des données, puis sur Connexions aux sources de données externes.Dans la liste Type de connexion, sélectionnez Apache Spark.
Dans le champ ID de la connexion, saisissez un nom pour votre connexion. Par exemple,
spark_connection
.Dans la liste Emplacement des données, sélectionnez une région.
Vous pouvez créer une connexion dans des régions et emplacements multirégionaux compatibles avec BigQuery. Pour en savoir plus, consultez la section Considérations relatives aux zones.
Facultatif : dans la liste Service de métastore, sélectionnez métastore Dataproc.
Facultatif : dans le champ Cluster de serveurs d'historique, saisissez un serveur d'historique persistant Dataproc.
Cliquez sur Créer une connexion.
Cliquez sur Accéder à la connexion.
Dans le volet Informations de connexion, copiez l'ID du compte de service à utiliser à l'étape suivante.
bq
Dans un environnement de ligne de commande, utilisez la commande
bq mk
pour créer une connexion :bq mk --connection --connection_type='SPARK' \ --properties=PROPERTIES \ --project_id=PROJECT_ID \ --location=LOCATION CONNECTION_ID
Remplacez les éléments suivants :
PROPERTIES
: paire clé-valeur permettant d'inclure des paramètres spécifiques à la connexion au format JSONExemple :
--properties='{ "metastoreServiceConfig": {"metastoreService": "METASTORE_SERVICE_NAME"}, "sparkHistoryServerConfig": {"dataprocCluster": "DATAPROC_CLUSTER_NAME"} }'
Remplacez les éléments suivants :
METASTORE_SERVICE_NAME
: le métastore Dataproc avec une configuration réseau gRPC (par exemple,projects/my-project-id/locations/us-central1/services/my-service
)Pour en savoir plus, découvrez comment accéder aux métadonnées stockées dans le métastore Hive à l'aide d'un protocole de point de terminaison.
DATAPROC_CLUSTER_NAME
: configuration du serveur d'historique Spark, par exempleprojects/my-project-id/regions/us-central1/clusters/my-cluster
Pour en savoir plus, consultez la page Créer un cluster de serveurs d'historique persistants.
PROJECT_ID
: ID de votre projet Google CloudLOCATION
: emplacement de stockage de la connexion, par exempleUS
CONNECTION_ID
: ID de connexion (par exemple,myconnection
)Lorsque vous affichez les détails de la connexion dans la console Google Cloud, il s'agit de la valeur de la dernière section de l'ID de connexion complet affiché dans ID de connexion (par exemple,
projects/.../locations/.../connections/myconnection
).
Récupérez et copiez l'ID du compte de service, car vous en aurez besoin dans une autre étape :
bq show --location=LOCATION --connection PROJECT_ID.LOCATION.CONNECTION_ID
Le résultat ressemble à ce qui suit :
Connection myproject.us.myconnection name type properties ---------------------- ------- --------------------------------------------------- myproject.us.myconnection SPARK {"serviceAccountId": "bqserver@example.iam.gserviceaccount.com"}
Pour en savoir plus sur la gestion des connexions, consultez la page Gérer les connexions.
Accorder l'accès au compte de service
Pour autoriser une procédure stockée pour Apache Spark à accéder à vos ressources Google Cloud, vous devez accorder les autorisations IAM nécessaires au compte de service associé à la connexion de la procédure stockée. Vous pouvez également utiliser votre compte de service personnalisé pour accéder aux données.
Pour lire et écrire des données depuis et vers BigQuery, vous devez accorder au compte de service les autorisations IAM suivantes :
bigquery.tables.*
sur vos tables BigQuerybigquery.readsessions.*
sur votre projet
Le rôle IAM
roles/bigquery.admin
inclut les autorisations dont le compte de service a besoin pour lire et écrire des données depuis et vers BigQuery.Pour lire et écrire des données depuis et vers Cloud Storage, vous devez accorder au compte de service l'autorisation
storage.objects.*
sur vos objets Cloud Storage.Le rôle IAM
roles/storage.objectAdmin
inclut les autorisations dont le compte de service a besoin pour lire et écrire des données depuis et vers Cloud Storage.Si vous spécifiez le métastore Dataproc lorsque vous créez une connexion, pour que BigQuery récupère les informations sur la configuration du métastore, vous devez attribuer au compte de service l'autorisation
metastore.services.get
sur votre métastore Dataproc.Le rôle prédéfini
roles/metastore.metadataViewer
inclut l'autorisation dont le compte de service a besoin pour récupérer les détails de la configuration du métastore.Vous devez également attribuer au compte de service le rôle
roles/storage.objectAdmin
sur le bucket Cloud Storage afin que la procédure stockée puisse accéder au répertoire d'entrepôt Hive de votre Dataproc Metastore (hive.metastore.warehouse.dir
). Si votre procédure stockée effectue des opérations sur le métastore, vous devrez peut-être accorder des autorisations supplémentaires. Pour en savoir plus sur les rôles et les autorisations IAM dans le métastore Dataproc, consultez la page Rôles et autorisations prédéfinis du métastore Dataproc.Si vous spécifiez un serveur d'historique persistant Dataproc lorsque vous créez une connexion, vous devez attribuer les rôles suivants au compte de service :
- Le rôle
roles/dataproc.viewer
sur votre serveur d'historique persistant Dataproc, qui contient l'autorisationdataproc.clusters.get
. - Le rôle
roles/storage.objectAdmin
sur le bucket Cloud Storage que vous spécifiez pour la propriétéspark:spark.history.fs.logDirectory
lorsque vous créez le serveur d'historique persistant Dataproc.
Pour en savoir plus, consultez les pages Serveur d'historique persistant Dataproc et Rôles et autorisations Dataproc.
- Le rôle
Partager des connexions avec les utilisateurs
Vous pouvez attribuer les rôles suivants pour permettre aux utilisateurs d'interroger des données et de gérer les connexions :
roles/bigquery.connectionUser
permet aux utilisateurs de se connecter à des sources de données externes et d'y exécuter des requêtes.roles/bigquery.connectionAdmin
permet aux utilisateurs de gérer les connexions.
Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery, consultez la page Rôles prédéfinis et autorisations.
Sélectionnez l'une des options suivantes :
Console
Accédez à la page BigQuery.
Les connexions sont répertoriées dans votre projet, dans un groupe appelé Connexions externes.
Dans le volet Explorateur, cliquez sur votre nom de projet > Connexions externes > connexion.
Dans le volet Détails, cliquez sur Partager pour partager une connexion. Ensuite, procédez comme suit :
Dans la boîte de dialogue Autorisations de connexion, partagez la connexion avec d'autres comptes principaux en ajoutant ou en modifiant des comptes principaux.
Cliquez sur Enregistrer.
bq
Vous ne pouvez pas partager de connexion avec l'outil de ligne de commande bq. Pour partager une connexion, utilisez la console Google Cloud ou la méthode de l'API BigQuery Connections permettant le partage de connexion.
API
Utilisez la méthode projects.locations.connections.setIAM
dans la section de référence de l'API REST BigQuery Connections et fournissez une instance de la ressource policy
.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Étapes suivantes
- Découvrez les différents types de connexions.
- Découvrez comment gérer les connexions.
- Découvrez comment créer une procédure stockée pour Apache Spark.
- Découvrez comment gérer les procédures stockées.