Questo tutorial mostra come connettere una tabella o una vista BigQuery per leggere e scrivere dati da un notebook Databricks. I passaggi sono
descritti utilizzando la
consoleGoogle Cloud e
Databricks Workspaces.
Puoi eseguire questi passaggi anche utilizzando gli strumenti a riga di comando gcloud
e databricks
, anche se queste indicazioni non rientrano nell'ambito di questo tutorial.
Databricks su Google Cloud è un ambiente Databricks ospitato su Google Cloud, in esecuzione su Google Kubernetes Engine (GKE) e che fornisce l'integrazione integrata con BigQuery e altre tecnologie Google Cloud . Se non hai mai utilizzato Databricks, guarda il video Introduzione alla piattaforma di dati unificata Databricks per una panoramica della piattaforma lakehouse Databricks.
Obiettivi
- Configura Google Cloud per connetterti a Databricks.
- Esegui il deployment di Databricks su Google Cloud.
- Esegui query su BigQuery da Databricks.
Costi
Questo tutorial utilizza componenti fatturabili della console Google Cloud , tra cui BigQuery e GKE. Si applicano i prezzi di BigQuery e i prezzi di GKE. Per informazioni sui costi associati a un account Databricks in esecuzione su Google Cloud, consulta la sezione Configura il tuo account e crea uno spazio di lavoro nella documentazione di Databricks.
Prima di iniziare
Prima di connettere Databricks a BigQuery, completa i seguenti passaggi:
- Abilita l'API BigQuery Storage.
- Crea un account di servizio per Databricks.
- Crea un bucket Cloud Storage per l'archiviazione temporanea.
Abilita l'API BigQuery Storage
L'API BigQuery Storage è abilitata per impostazione predefinita per tutti i nuovi progetti in cui viene utilizzato BigQuery. Per i progetti esistenti per cui l'API non è abilitata, segui queste istruzioni:
Nella console Google Cloud , vai alla pagina API BigQuery Storage.
Verifica che l'API BigQuery Storage sia abilitata.
Crea un account di servizio per Databricks
Successivamente, crea un account di servizio Identity and Access Management (IAM) per consentire a un cluster Databricks di eseguire query su BigQuery. Ti consigliamo di concedere a questo account di servizio i privilegi minimi necessari per eseguire le sue attività. Consulta Ruoli e autorizzazioni BigQuery.
Nella console Google Cloud , vai alla pagina Service Accounts.
Fai clic su Crea service account, assegna all'account di servizio il nome
databricks-bigquery
, inserisci una breve descrizione, ad esempioDatabricks tutorial service account
, quindi fai clic su Crea e continua.In Concedi a questo account di servizio l'accesso al progetto, specifica i ruoli per ilaccount di serviziot. Per concedere al account di servizio l'autorizzazione a leggere i dati con lo spazio di lavoro Databricks e la tabella BigQuery nello stesso progetto, in particolare senza fare riferimento a una vista materializzata, concedi i seguenti ruoli:
- BigQuery Read Session User
- Visualizzatore dati BigQuery
Per concedere l'autorizzazione a scrivere dati, assegna i seguenti ruoli:
- Utente job BigQuery
- Editor dati BigQuery
Registra l'indirizzo email del nuovo account di servizio per riferimento nei passaggi futuri.
Fai clic su Fine.
Crea un bucket Cloud Storage
Per scrivere in BigQuery, il cluster Databricks deve accedere a un bucket Cloud Storage per memorizzare temporaneamente i dati scritti.
Nella Google Cloud console, vai al browser Cloud Storage.
Fai clic su Crea bucket per aprire la finestra di dialogo Crea un bucket.
Specifica un nome per il bucket utilizzato per scrivere i dati in BigQuery. Il nome del bucket deve essere un nome univoco a livello globale. Se specifichi un nome di bucket già esistente, Cloud Storage risponde con un messaggio di errore. In questo caso, specifica un nome diverso per il bucket.
Per questo tutorial, utilizza le impostazioni predefinite per la posizione di archiviazione, la classe di archiviazione,controllo dell'accessoo e le impostazioni avanzate.
Fai clic su Crea per creare il bucket Cloud Storage.
Fai clic su Autorizzazioni, poi su Aggiungi e specifica l'indirizzo email dell'account di servizio che hai creato per l'accesso a Databricks nella pagina Account di servizio.
Fai clic su Seleziona un ruolo e aggiungi il ruolo Amministratore spazio di archiviazione.
Fai clic su Salva.
Esegui il deployment di Databricks su Google Cloud
Completa i seguenti passaggi per prepararti a eseguire il deployment di Databricks su Google Cloud.
- Per configurare l'account Databricks, segui le istruzioni nella documentazione di Databricks, Configurare l'account Databricks su Google Cloud.
- Dopo la registrazione, scopri di più su come gestire il tuo account Databricks.
Crea uno spazio di lavoro, un cluster e un blocco note Databricks
I seguenti passaggi descrivono come creare uno spazio di lavoro Databricks, un cluster e un notebook Python per scrivere codice per accedere a BigQuery.
Conferma i prerequisiti di Databricks.
Crea il tuo primo workspace. Nella console dell'account Databricks, fai clic su Crea spazio di lavoro.
Specifica
gcp-bq
per il nome dello spazio di lavoro e seleziona la regione.Per determinare l' Google Cloud ID progetto, visita la Google Cloud console, quindi copia il valore nel campo Google Cloud ID progetto.
Fai clic su Salva per creare lo spazio di lavoro Databricks.
Per creare un cluster Databricks con Databricks Runtime 7.6 o versioni successive, seleziona Cluster nella barra dei menu a sinistra, quindi fai clic su Crea cluster in alto.
Specifica il nome del cluster e le sue dimensioni, quindi fai clic su Opzioni avanzate e specifica l'indirizzo email del tuo Google Cloud account di servizio.
Fai clic su Crea cluster.
Per creare un notebook Python per Databricks, segui le istruzioni riportate in Creare un notebook.
Esecuzione di query su BigQuery da Databricks
Con la configurazione precedente, puoi connettere in modo sicuro Databricks a BigQuery. Databricks utilizza un fork dell'adattatore Google Spark open source per accedere a BigQuery.
Databricks riduce il trasferimento di dati e accelera le query eseguendo automaticamente il push down di determinati predicati di query, ad esempio il filtro sulle colonne nidificate, in BigQuery. Inoltre, la funzionalità aggiuntiva per eseguire prima una query SQL su BigQuery con l'API query()
riduce le dimensioni del trasferimento del set di dati risultante.
I seguenti passaggi descrivono come accedere a un set di dati in BigQuery e scrivere i tuoi dati in BigQuery.
Accedere a un set di dati pubblico su BigQuery
BigQuery fornisce un elenco di set di dati pubblici disponibili. Per eseguire query sul set di dati BigQuery Shakespeare che fa parte dei set di dati pubblici, segui questi passaggi:
Per leggere la tabella BigQuery, utilizza il seguente snippet di codice nel notebook Databricks.
table = "bigquery-public-data.samples.shakespeare" df = spark.read.format("bigquery").option("table",table).load() df.createOrReplaceTempView("shakespeare")
Esegui il codice premendo
Shift+Return
.Ora puoi eseguire query sulla tabella BigQuery tramite Spark DataFrame (
df
). Ad esempio, utilizza il seguente comando per mostrare le prime tre righe del DataFrame:df.show(3)
Per eseguire una query su un'altra tabella, aggiorna la variabile
table
.Una funzionalità chiave dei notebook Databricks è la possibilità di combinare le celle di linguaggi diversi come Scala, Python e SQL in un unico notebook.
La seguente query SQL consente di visualizzare il conteggio delle parole in Shakespeare dopo aver eseguito la cella precedente che crea la visualizzazione temporanea.
%sql SELECT word, SUM(word_count) AS word_count FROM words GROUP BY word ORDER BY word_count DESC LIMIT 12
La cella precedente esegue una query Spark SQL sul dataframe nel cluster Databricks, non in BigQuery. Il vantaggio di questo approccio è che l'analisi dei dati avviene a livello di Spark, non vengono emessi ulteriori chiamate API BigQuery e non vengono sostenuti costi BigQuery aggiuntivi.
In alternativa, puoi delegare l'esecuzione di una query SQL a BigQuery con l'API
query()
e ottimizzare per ridurre le dimensioni del trasferimento del data frame risultante. A differenza dell'esempio precedente, in cui l'elaborazione è stata eseguita in Spark, se utilizzi questo approccio, i prezzi e le ottimizzazioni delle query si applicano all'esecuzione della query su BigQuery.L'esempio riportato di seguito utilizza Scala, l'API
query()
e il set di dati pubblico Shakespeare in BigQuery per calcolare le cinque parole più comuni nelle opere di Shakespeare. Prima di eseguire il codice, devi prima creare un set di dati vuoto in BigQuery chiamatomdataset
a cui il codice può fare riferimento. Per ulteriori informazioni, consulta Scrittura di dati in BigQuery.%scala // public dataset val table = "bigquery-public-data.samples.shakespeare" // existing dataset where the Google Cloud user has table creation permission val tempLocation = "mdataset" // query string val q = s"""SELECT word, SUM(word_count) AS word_count FROM ${table} GROUP BY word ORDER BY word_count DESC LIMIT 10 """ // read the result of a GoogleSQL query into a DataFrame val df2 = spark.read.format("bigquery") .option("query", q) .option("materializationDataset", tempLocation) .load() // show the top 5 common words in Shakespeare df2.show(5)
Per altri esempi di codice, consulta il notebook di esempio BigQuery di Databricks.
Scrivere dati in BigQuery
Le tabelle BigQuery esistono nei set di dati. Prima di poter scrivere dati in una tabella BigQuery, devi creare un nuovo set di dati in BigQuery. Per creare un set di dati per un notebook Python Databricks, segui questi passaggi:
Vai alla pagina BigQuery nella console Google Cloud .
Espandi l'opzione
Azioni, fai clic su Crea set di dati e poi assegna un nometogether
.Nel notebook Python di Databricks, crea un semplice dataframe Spark da un elenco Python con tre voci stringa utilizzando il seguente snippet di codice:
from pyspark.sql.types import StringType mylist = ["Google", "Databricks", "better together"] df = spark.createDataFrame(mylist, StringType())
Aggiungi un'altra cella al notebook che scrive il dataframe Spark dal passaggio precedente nella tabella BigQuery
myTable
nel set di datitogether
. La tabella viene creata o sovrascritta. Utilizza il nome del bucket specificato in precedenza.bucket = YOUR_BUCKET_NAME table = "together.myTable" df.write .format("bigquery") .option("temporaryGcsBucket", bucket) .option("table", table) .mode("overwrite").save()
Per verificare di aver scritto correttamente i dati, esegui una query e visualizza la tabella BigQuery tramite Spark DataFrame (
df
):display(spark.read.format("bigquery").option("table", table).load)
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Prima di rimuovere Databricks, esegui sempre il backup dei dati e dei notebook. Per eseguire la pulizia e rimuovere completamente Databricks, annulla l'abbonamento a Databricks nella consoleGoogle Cloud e rimuovi tutte le risorse correlate che hai creato dalla consoleGoogle Cloud .
Se elimini uno spazio di lavoro Databricks, i due bucket Cloud Storage con i nomi databricks-WORKSPACE_ID
e databricks-WORKSPACE_ID-system
che sono stati creati da Databricks potrebbero non essere eliminati se i bucket Cloud Storage non sono vuoti. Dopo
l'eliminazione dello spazio di lavoro, puoi eliminare manualmente questi oggetti nella
consoleGoogle Cloud per il tuo progetto.
Passaggi successivi
Questa sezione fornisce un elenco di documenti e tutorial aggiuntivi:
- Scopri di più sui dettagli della prova gratuita di Databricks.
- Scopri di più su Databricks su Google Cloud.
- Scopri di più su Databricks BigQuery.
- Leggi l'annuncio del blog sul supporto di BigQuery per Databricks.
- Scopri di più sui notebook di esempio di BigQuery.
- Scopri di più sul provider Terraform per Databricks su Google Cloud.
- Leggi il blog di Databricks, che include ulteriori informazioni su argomenti di data science e set di dati.