Questo tutorial mostra come collegare una tabella o una vista BigQuery per leggere e scrivere dati da un blocco note Databricks. I passaggi sono descritti utilizzando la console Google Cloud e le aree di lavoro Databricks.
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, eseguito su Google Kubernetes Engine (GKE) e che offre integrazione incorporata con BigQuery e altre tecnologie Google Cloud. Se non hai mai utilizzato Databricks, guarda il video Introduction to Databricks Unified Data Platform per una panoramica della piattaforma lakehouse Databricks.
Obiettivi
- Configura Google Cloud per la connessione con Databricks.
- Esegui il deployment di Databricks su Google Cloud.
- Eseguire una query su BigQuery da Databricks.
Costi
Questo tutorial utilizza i 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 Configurare l'account e creare un'area di lavoro nella documentazione di Databricks.
Prima di iniziare
Prima di connettere Databricks a BigQuery, completa questi passaggi:
- Abilita l'API BigQuery Storage.
- Creare un account di servizio per Databricks.
- Creare un bucket Cloud Storage per l'archiviazione temporanea.
Abilitare 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 in cui l'API non è abilitata, segui queste istruzioni:
Nella console Google Cloud, vai alla pagina dell'API BigQuery Storage.
Verifica che l'API BigQuery Storage sia attivata.
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 di BigQuery.
Nella console Google Cloud, vai alla pagina Account di servizio.
Fai clic su Crea account di servizio, assegna un nome all'account di servizio
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 l'account di servizio. Per concedere all'account di servizio l'autorizzazione a leggere i dati con l'area di lavoro Databricks e la tabella BigQuery nello stesso progetto, in particolare senza fare riferimento a una vista materializzata, concedi i ruoli seguenti:
- Utente sessione di lettura BigQuery
- Visualizzatore dati BigQuery
Per concedere l'autorizzazione alla scrittura di dati, concedi questi ruoli:
- Utente job BigQuery
- Editor dati BigQuery
Registra l'indirizzo email del tuo nuovo account di servizio come 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 eseguire il buffer dei dati scritti.
Nella console Google Cloud, 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 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 posizione di archiviazione, classe di archiviazione, controllo dell'accesso e impostazioni avanzate.
Fai clic su Crea per creare il bucket Cloud Storage.
Fai clic su Autorizzazioni, fai clic 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 archiviazione.
Fai clic su Salva.
Esegui il deployment di Databricks su Google Cloud
Completa i seguenti passaggi per prepararti al deployment di Databricks su Google Cloud.
- Per configurare l'account Databricks, segui le istruzioni nella documentazione Databricks in Configurare il tuo account Databricks su Google Cloud.
- Dopo la registrazione, scopri di più su come gestire il tuo account Databricks.
Crea un'area di lavoro, un cluster e un blocco note Databricks
I passaggi seguenti descrivono come creare un'area di lavoro Databricks, un cluster e un blocco note Python per scrivere codice per accedere a BigQuery.
Conferma i prerequisiti di Databrick.
Crea la tua prima area di lavoro. Nella console dell'account Databricks, fai clic su Crea area di lavoro.
Specifica
gcp-bq
come Nome area di lavoro e seleziona la tua Regione.Per determinare il tuo ID progetto Google Cloud, accedi alla console Google Cloud e copia il valore nel campo ID progetto Google Cloud.
Fai clic su Salva per creare l'area di lavoro Databricks.
Per creare un cluster Databricks con runtime Databricks 7.6 o versioni successive, nella barra dei menu a sinistra seleziona Cluster, quindi fai clic su Crea cluster in alto.
Specifica il nome del cluster e le relative dimensioni, quindi fai clic su Opzioni avanzate e specifica gli indirizzi email del tuo account di servizio Google Cloud.
Fai clic su Crea cluster.
Per creare un blocco note Python per Databricks, segui le istruzioni riportate in Creare un blocco note.
Esecuzione di query su BigQuery da Databricks
Con la configurazione riportata sopra, 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 spingendo automaticamente determinati predicati di query, ad esempio filtrando le colonne nidificate su BigQuery. Inoltre, la possibilità di eseguire prima una query SQL su BigQuery con l'API query()
riduce le dimensioni di trasferimento del set di dati risultante.
I passaggi seguenti 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 una query sul set di dati BigQuery Shakespeare che fa parte dei set di dati pubblici, segui questi passaggi:
Per leggere la tabella BigQuery, usa il seguente snippet di codice nel blocco note 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 tua tabella BigQuery tramite Spark DataFrame (
df
). Ad esempio, utilizza il codice seguente per mostrare le prime tre righe del dataframe:df.show(3)
Per eseguire una query su un'altra tabella, aggiorna la variabile
table
.Una caratteristica fondamentale dei blocchi note Databricks è che puoi combinare celle di linguaggi diversi, come Scala, Python e SQL, in un unico blocco note.
La seguente query SQL ti 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 effettuate ulteriori chiamate API BigQuery e non vengono addebitati costi aggiuntivi di BigQuery.
In alternativa, puoi delegare l'esecuzione di una query SQL a BigQuery con l'API
query()
e ottimizzare per ridurre le dimensioni di trasferimento del frame di dati risultante. A differenza dell'esempio precedente, in cui l'elaborazione è stata eseguita in Spark, se utilizzi questo approccio, le ottimizzazioni dei prezzi e delle query vengono applicate per l'esecuzione della query su BigQuery.L'esempio seguente 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 creare un set di dati vuoto in BigQuery denominatomdataset
a cui il codice può fare riferimento. Per saperne di più, vedi 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 blocco note di esempio BigQuery di Databricks.
Scrittura dei 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 blocco note Python di Databricks, segui questi passaggi:
Vai alla pagina BigQuery nella console Google Cloud.
Espandi l'opzione
Azioni, fai clic su Crea set di dati e assegnale il nometogether
.Nel blocco note Python di Databricks, crea un semplice dataframe Spark da un elenco Python con tre voci di 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 blocco note che scrive il dataframe Spark dal passaggio precedente alla 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 blocchi note. Per ripulire e rimuovere completamente Databricks, annulla l'abbonamento a Databricks nella console Google Cloud e rimuovi tutte le risorse correlate che hai creato dalla console Google Cloud.
Se elimini un'area 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 dell'area di lavoro, puoi eliminare manualmente gli oggetti nella console Google Cloud per il 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 BigQuery Databricks.
- Leggi l'annuncio del blog sul supporto di BigQuery per Databricks.
- Scopri di più sui blocchi note di esempio BigQuery.
- Scopri di più sul provider Terraform per Databricks su Google Cloud.
- Leggi il blog Databricks per ulteriori informazioni su argomenti di data science e set di dati.