Connettiti 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
Abilitare l'API BigQuery Connection.
-
Per ottenere le autorizzazioni necessarie per creare una connessione Spark, chiedi all'amministratore di concederti il ruolo IAM Amministratore connessione BigQuery (
roles/bigquery.connectionAdmin
) per il progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.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 di Spark History Server, assicurati di aver creato un server di cronologia permanente di Dataproc (PHS).
Considerazioni sulla località
Quando scegli una località per i tuoi dati, considera quanto segue:
Più regioni
Devi specificare le risorse Google Cloud situate nella stessa ampia area geografica:
Una connessione nell'area multiregionale degli Stati Uniti di BigQuery può fare riferimento a un server di cronologia Spark o a un metastore Dataproc in qualsiasi singola regione dell'area geografica degli Stati Uniti, ad esempio
us-central1
,us-east4
ous-west2
.Una connessione in una località multiregionale dell'UE di BigQuery può fare riferimento a un server di cronologia Spark o a un Dataproc Metastore negli stati membri dell'Unione Europea, ad esempio
europe-north1
oeurope-west3
.
Regioni singole
Una connessione in una singola regione può fare riferimento solo alle risorse Google Cloud nella stessa regione. Ad esempio, una connessione nella singola
regione 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.
Per creare una connessione, fai clic su Aggiungi
Aggiungi dati e poi su Connessioni a origini dati esterne.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 in regioni e regioni multiple che supportano BigQuery. Per ulteriori informazioni, consulta Considerazioni sulla posizione.
(Facoltativo) Dall'elenco Servizio Metastore, seleziona un Dataproc Metastore.
(Facoltativo) Nel campo Cluster di server di cronologia, inserisci un Server di cronologia permanente di Dataproc.
Fai clic su Crea connessione.
Fai clic su Vai alla connessione.
Nel riquadro Informazioni sulla connessione, copia l'ID account di servizio da utilizzare in un passaggio successivo.
bq
In un ambiente a riga di comando, utilizza il comando
bq mk
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": "DATAPROC_CLUSTER_NAME"} }'
Sostituisci quanto segue:
METASTORE_SERVICE_NAME
: il Dataproc Metastore con una configurazione di rete gRPC, ad esempioprojects/my-project-id/locations/us-central1/services/my-service
Per ulteriori informazioni, scopri come accedere ai metadati Hive archiviati utilizzando un protocollo endpoint.
DATAPROC_CLUSTER_NAME
: la configurazione del server di cronologia Spark, ad esempioprojects/my-project-id/regions/us-central1/clusters/my-cluster
Per ulteriori informazioni, consulta Creare un cluster di server di cronologia permanente.
PROJECT_ID
: l'ID del tuo progetto Google CloudLOCATION
: la posizione in cui vuoi archiviare la connessione, ad esempioUS
CONNECTION_ID
: l'ID connessione, ad esempiomyconnection
Quando visualizza i dettagli della connessione nella console Google Cloud, l'ID connessione è il valore nell'ultima sezione dell'ID connessione completo mostrato in ID connessione, ad esempio
projects/.../locations/.../connections/myconnection
Recupera e copia l'ID account di servizio perché ne hai bisogno 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.iam.gserviceaccount.com"}
Per informazioni su come gestire le connessioni, vedi Gestire le connessioni.
Concedi l'accesso all'account di servizio
Per consentire a una stored procedure per Apache Spark di accedere alle risorse Google Cloud, devi concedere all'account di servizio associato alla connessione della stored procedure le autorizzazioni IAM necessarie. In alternativa, per l'accesso ai dati puoi utilizzare il tuo account di servizio personalizzato.
Per leggere e scrivere dati da e in BigQuery, devi concedere all'account di servizio le seguenti autorizzazioni IAM:
bigquery.tables.*
nelle tue tabelle BigQuerybigquery.readsessions.*
nel tuo progetto
Il ruolo IAM
roles/bigquery.admin
include le autorizzazioni necessarie all'account di servizio per leggere e scrivere dati da e in BigQuery.Per leggere e scrivere dati da e in Cloud Storage, devi concedere all'account di servizio l'autorizzazione
storage.objects.*
per gli oggetti Cloud Storage.Il ruolo IAM
roles/storage.objectAdmin
include le autorizzazioni necessarie all'account di servizio per leggere e scrivere dati da e in Cloud Storage.Se specifichi Dataproc Metastore durante la creazione di una connessione, affinché BigQuery possa recuperare i dettagli sulla configurazione del metastore, devi concedere all'account di servizio l'autorizzazione
metastore.services.get
su Dataproc Metastore.Il ruolo
roles/metastore.metadataViewer
predefinito include l'autorizzazione necessaria all'account di servizio per recuperare i dettagli sulla configurazione del metastore.Devi inoltre concedere all'account di servizio il ruolo
roles/storage.objectAdmin
sul bucket Cloud Storage in modo che la procedura archiviata possa accedere alla directory del warehouse Hive del tuo Dataproc Metastore (hive.metastore.warehouse.dir
). Se la stored procedure esegue operazioni sul metastore, potresti dover concedere autorizzazioni aggiuntive. Per ulteriori informazioni su ruoli e autorizzazioni IAM in Dataproc Metastore, consulta Autorizzazioni e ruoli predefiniti di Dataproc Metastore.Se specifichi un server di cronologia permanente di Dataproc durante la creazione di una connessione, devi concedere all'account di servizio i ruoli seguenti:
- Il ruolo
roles/dataproc.viewer
sul server di cronologia permanente di Dataproc che contiene l'autorizzazionedataproc.clusters.get
. - Il ruolo
roles/storage.objectAdmin
nel bucket Cloud Storage specificato per la proprietàspark:spark.history.fs.logDirectory
durante la creazione del server di cronologia permanente di Dataproc.
Per ulteriori informazioni, consulta Server di cronologia permanente di Dataproc e Ruoli e autorizzazioni di Dataproc.
- Il ruolo
Condividere le connessioni con gli utenti
Puoi concedere i ruoli seguenti 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 con origini dati esterne ed eseguire query su queste.roles/bigquery.connectionAdmin
: consente agli utenti di gestire le connessioni.
Per ulteriori informazioni su ruoli e autorizzazioni IAM in BigQuery, vedi Ruoli e autorizzazioni predefiniti.
Seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Le connessioni sono elencate nel progetto, in un gruppo chiamato Connessioni esterne.
Nel riquadro Explorer, fai clic sul nome del tuo progetto > Connessioni esterne > Connessione.
Nel riquadro Dettagli, fai clic su Condividi per condividere una connessione. Quindi:
Nella finestra di dialogo Autorizzazioni di connessione, condividi la connessione con altre entità aggiungendo o modificando 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 console Google Cloud o il metodo dell'API BigQuery Connections per condividere una connessione.
API
Utilizza il metodo projects.locations.connections.setIAM
nella sezione di riferimento dell'API REST di BigQuery Connections e fornisci un'istanza della risorsa policy
.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java di BigQuery.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
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.