Connettersi ad Apache Spark
In qualità di amministratore di BigQuery, puoi creare una connessione per consentire agli analisti di dati di eseguire stored procedure per Apache Spark.
Prima di iniziare
Abilita l'API BigQuery Connection.
-
Per ottenere le autorizzazioni necessarie per creare una connessione Spark, chiedi all'amministratore di concederti il ruolo IAM Amministratore connessioni BigQuery (
roles/bigquery.connectionAdmin) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
- (Facoltativo) Per gestire i metadati utilizzando Dataproc Metastore, assicurati di aver creato un servizio Dataproc Metastore.
- (Facoltativo) Per visualizzare la cronologia dei job utilizzando le interfacce web del server di cronologia Spark , assicurati di aver creato un server di cronologia permanente (PHS) di Managed Service for Apache Spark.
Considerazioni sulla località
Quando scegli una località per i tuoi dati, tieni presente quanto segue:
Più regioni
Devi specificare le risorse che si trovano nella stessa area geografica di grandi dimensioni: Cloud de Confiance
Una connessione nella multi-regione BigQuery US può fare riferimento a un server di cronologia Spark o a un Dataproc Metastore in qualsiasi regione singola nell'area geografica degli Stati Uniti, ad esempio
us-central1,us-east4, ous-west2.Una connessione nella multi-regione BigQuery EU può fare riferimento a un server di cronologia Spark o a un Dataproc Metastore negli stati membri dell' Unione Europea, ad esempio
europe-north1oeurope-west3.
Regioni singole
Una connessione in una singola regione può fare riferimento solo alle Cloud de Confiance
risorse nella stessa regione. Ad esempio, una connessione nella regione singola us-east4 può fare riferimento solo a un server di cronologia Spark o a un Dataproc Metastore in us-east4.
Creare connessioni
Seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Nel riquadro Explorer, fai clic su Aggiungi dati.
Si apre la finestra di dialogo Aggiungi dati.
Nel riquadro Filtra per, nella sezione Tipo di origine dati, seleziona Applicazioni aziendali.
In alternativa, nel campo Cerca origini dati puoi inserire
Spark.Nella sezione Origini dati in primo piano, fai clic su Apache Spark.
Fai clic sulla scheda della soluzione Apache Spark: BigQuery Federation.
Nel riquadro Origine dati esterna, inserisci le seguenti informazioni:
Nell'elenco Tipo di connessione, seleziona Apache Spark.
Nel campo ID connessione, inserisci un nome per la connessione, ad esempio
spark_connection.Nell'elenco Località dei dati, seleziona una regione.
Puoi creare una connessione nelle regioni e nelle multi-regioni che supportano BigQuery. Per ulteriori informazioni, consulta Considerazioni sulla località.
(Facoltativo) Nell'elenco Servizio metastore, seleziona un Dataproc Metastore.
(Facoltativo) Nel campo Cluster del server di cronologia, inserisci un server di cronologia permanente di Managed Service for Apache Spark.
Fai clic su Crea connessione.
Fai clic su Vai alla connessione.
Nel riquadro Informazioni sulla connessione, copia l'ID dell'account di servizio da utilizzare in un passaggio successivo.
bq
In un ambiente a riga di comando, utilizza il
bq mkcomando per creare una connessione:bq mk --connection --connection_type='SPARK' \ --properties=PROPERTIES \ --project_id=PROJECT_ID \ --location=LOCATION CONNECTION_ID
Sostituisci quanto segue:
PROPERTIES: una coppia chiave-valore per fornire parametri specifici della connessione in formato JSONAd esempio:
--properties='{ "metastoreServiceConfig": {"metastoreService": "METASTORE_SERVICE_NAME"}, "sparkHistoryServerConfig": {"dataprocCluster": "MANAGED_SERVICE_FOR_APACHE_SPARK_CLUSTER_NAME"} }'Sostituisci quanto segue:
METASTORE_SERVICE_NAME: il Dataproc Metastore con una configurazione di rete gRPC —ad esempio,projects/my-project-id/locations/us-central1/services/my-servicePer saperne di più, consulta la pagina su come accedere ai metadati del metastore Hive archiviati utilizzando un protocollo endpoint.
MANAGED_SERVICE_FOR_APACHE_SPARK_CLUSTER_NAME: la configurazione del server di cronologia Spark, ad esempioprojects/my-project-id/regions/us-central1/clusters/my-clusterPer saperne di più, consulta Creare un cluster del server di cronologia permanente.
PROJECT_ID: il tuo Cloud de Confiance ID progettoLOCATION: la località in cui vuoi archiviare la connessione, ad esempioUSCONNECTION_ID: l'ID connessione, ad esempiomyconnectionQuando visualizzi i dettagli della connessione nella Cloud de Confiance consolle, l'ID connessione è il valore nell'ultima sezione dell'ID connessione completo visualizzato in ID connessione, ad esempio
projects/.../locations/.../connections/myconnection
Recupera e copia l'ID dell'account di servizio perché ti servirà in un altro passaggio:
bq show --location=LOCATION --connection PROJECT_ID.LOCATION.CONNECTION_ID
L'output è simile al seguente:
Connection myproject.us.myconnection name type properties ---------------------- ------- --------------------------------------------------- myproject.us.myconnection SPARK {"serviceAccountId": "bqserver@example.s3ns.iam.gserviceaccount.com"}
Per informazioni su come gestire le connessioni, consulta Gestire le connessioni.
Concedere l'accesso al account di servizio
Per consentire a una stored procedure per Apache Spark di accedere alle tue Cloud de Confiance risorse, devi concedere al account di servizio associato alla connessione della stored procedure le autorizzazioni IAM necessarie. In alternativa, puoi utilizzare il tuo service account personalizzato per l'accesso ai dati.
Per leggere e scrivere dati da e in BigQuery, devi concedere al account di servizio le seguenti autorizzazioni IAM:
bigquery.tables.*nelle tabelle BigQuerybigquery.readsessions.*nel tuo progetto
Il ruolo IAM
roles/bigquery.admininclude le autorizzazioni necessarie al account di servizio per leggere e scrivere dati da e in BigQuery.Per leggere e scrivere dati da e in Cloud Storage, devi concedere al account di servizio l'autorizzazione
storage.objects.*sugli oggetti Cloud Storage.Il ruolo IAM
roles/storage.objectAdmininclude le autorizzazioni necessarie al account di servizio per leggere e scrivere dati da e in Cloud Storage.Se specifichi Dataproc Metastore quando crei una connessione, per consentire a BigQuery di recuperare i dettagli della configurazione del metastore, devi concedere al account di servizio l'autorizzazione
metastore.services.getnel tuo Dataproc Metastore.Il ruolo predefinito
roles/metastore.metadataViewerinclude l'autorizzazione necessaria al account di servizio per recuperare i dettagli della configurazione del metastore.Devi anche concedere al account di servizio il ruolo
roles/storage.objectAdminnel bucket Cloud Storage in modo che la stored procedure possa accedere alla directory del warehouse Hive di Dataproc Metastore (hive.metastore.warehouse.dir). Se la stored procedure esegue operazioni sul metastore, potresti dover concedere autorizzazioni aggiuntive. Per saperne di più sui ruoli e sulle autorizzazioni IAM in Dataproc Metastore, consulta Ruoli e autorizzazioni predefiniti di Dataproc Metastore.Se specifichi un server di cronologia permanente di Managed Service for Apache Spark quando crei una connessione, devi concedere al account di servizio i seguenti ruoli:
- Il ruolo
roles/dataproc.viewernel server di cronologia permanente di Managed Service for Apache Spark che contiene l'autorizzazionedataproc.clusters.get. - Il ruolo
roles/storage.objectAdminnel bucket Cloud Storage specificato per la proprietàspark:spark.history.fs.logDirectoryquando crei il server di cronologia permanente di Managed Service for Apache Spark.
Per saperne di più, consulta Server di cronologia permanente di Managed Service for Apache Spark e Ruoli e autorizzazioni di Managed Service for Apache Spark.
- Il ruolo
Condividere le connessioni con gli utenti
Puoi concedere i seguenti ruoli per consentire agli utenti di eseguire query sui dati e gestire le connessioni:
roles/bigquery.connectionUser: consente agli utenti di utilizzare le connessioni per connettersi a origini dati esterne ed eseguire query su di esse.roles/bigquery.connectionAdmin: consente agli utenti di gestire le connessioni.
Per saperne di più sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.
Seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Le connessioni sono elencate nel progetto, in un gruppo denominato Connessioni.
Nel riquadro a sinistra, fai clic su Esplora:

Se non vedi il riquadro a sinistra, fai clic su Espandi riquadro a sinistra per aprirlo.
Fai clic sul progetto, su Connessioni e poi seleziona una connessione.
Nel riquadro Dettagli, fai clic su Condividi per condividere una connessione. Quindi:
Nella finestra di dialogo Autorizzazioni connessione, condividi la connessione con altre entità aggiungendo o modificando le entità.
Fai clic su Salva.
bq
Non puoi condividere una connessione con lo strumento a riga di comando bq. Per condividere una connessione, utilizza la Cloud de Confiance console o il metodo API BigQuery Connections per condividere una connessione.
API
Utilizza il
projects.locations.connections.setIAM metodo
nella sezione di riferimento dell'API REST BigQuery Connections e
fornisci un'istanza della risorsa policy.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell' API Java di BigQuery.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Prima di eseguire gli esempi di codice, imposta la variabile di ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN su s3nsapis.fr.
Passaggi successivi
- Scopri di più sui diversi tipi di connessione.
- Scopri di più sulla gestione delle connessioni.
- Scopri come creare una stored procedure per Apache Spark.
- Scopri come gestire le stored procedure.