Questo tutorial mostra come connettere una tabella BigQuery o
per la lettura e la scrittura di dati da un blocco note Databricks. I passaggi sono descritti utilizzando la console Google Cloud e Databricks Workspaces.
Puoi anche eseguire questi passaggi usando le gcloud
e le databricks
strumenti a riga di comando, sebbene tali indicazioni non rientrino nell'ambito di queste
durante il tutorial.
Databricks su Google Cloud è un ambiente Databricks ospitato su Google Cloud, in esecuzione su Google Kubernetes Engine (GKE) e che fornisce integrazione BigQuery e altre tecnologie Google Cloud. Se non hai mai utilizzato Databricks, osserva Introduzione alla piattaforma di dati unificata Databricks per una panoramica della piattaforma lakehouse di Databricks.
Obiettivi
- Configura Google Cloud per la connessione a Databricks.
- Eseguire il deployment di Databricks su Google Cloud.
- Esegui query su BigQuery da Databricks.
Costi
Questo tutorial utilizza i componenti fatturabili della console Google Cloud, tra cui BigQuery e GKE. BigQuery prezzi e Si applicano 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 uno spazio di lavoro nella documentazione di Databricks.
Prima di iniziare
Prima di connettere Databricks a BigQuery, completa seguenti passaggi:
- Attiva il API BigQuery Storage.
- Creare un account di servizio per Databricks.
- Crea un bucket Cloud Storage per lo spazio di archiviazione temporaneo.
Abilita l'API BigQuery Storage
La API BigQuery Storage è abilitato per impostazione predefinita per tutti i nuovi progetti in cui BigQuery in uso. Per i progetti esistenti per cui l'API non è abilitata, segui questi 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
Quindi, crea un account di servizio Identity and Access Management (IAM) per consentire a Databricks per eseguire query su BigQuery. Ti consigliamo di assegnare a questo account di servizio i privilegi minimi necessari per svolgere le sue attività. Consulta Ruoli e autorizzazioni 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 per 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:
- Utente sessione di lettura BigQuery
- Visualizzatore dati BigQuery
Per concedere l'autorizzazione alla scrittura di dati, concedi questi ruoli:
- Utente job BigQuery
- BigQuery Data Editor
Registra l'indirizzo email del tuo nuovo account di servizio come riferimento in passaggi futuri.
Fai clic su Fine.
Crea un bucket Cloud Storage
Per scrivere in BigQuery, il cluster Databricks deve avere accesso a un bucket Cloud Storage per eseguire il buffering dei dati scritti.
Nella console Google Cloud, vai a 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 esistente, Cloud Storage risponde con un messaggio di errore. In questo caso, e specificare un nome diverso per il bucket.
Per questo tutorial, usa le impostazioni predefinite per la 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, 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.
Deployment di Databricks su Google Cloud
Completa i seguenti passaggi per prepararti al deployment di Databricks su in Google Cloud.
- Per configurare il tuo account Databricks, segui le istruzioni riportate in Databricks documentazione, Set up your Databricks on Google Cloud 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 il 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 spazio di lavoro.
Specifica
gcp-bq
per il nome dello spazio di lavoro e seleziona la regione.Per determinare l'ID progetto Google Cloud, visita la console Google Cloud. e copialo nell'ID progetto Google Cloud .
Fai clic su Salva per creare la tua area di lavoro Databricks.
Per creare un cluster Databricks con runtime Databricks 7.6 o versioni successive, nel nella barra dei menu a sinistra seleziona Cluster, quindi fai clic su Crea cluster in alto.
Specifica il nome e le dimensioni del cluster, poi fai clic su Opzioni avanzate e specifica l'indirizzo email del tuo account di servizio Google Cloud.
Fai clic su Crea cluster.
Per creare un blocco note Python per Databricks, segui le istruzioni in Creare un blocco note.
Eseguire query su BigQuery da Databricks
Con la configurazione precedente, puoi connettere in modo sicuro Databricks a in BigQuery. Databricks utilizza un fork dell'adattatore Google Spark open source per accedere a BigQuery.
Databricks riduce il trasferimento dei dati e accelera le query spingendo automaticamente determinati predicati delle query, ad esempio i filtri per le colonne nidificate, in BigQuery. Inoltre, è stata aggiunta la possibilità di eseguire prima
su BigQuery con l'API query()
riduce le dimensioni del trasferimento
del set di dati risultante.
I passaggi riportati di seguito descrivono come accedere a un set di dati in BigQuery e scrivere i tuoi dati in BigQuery.
Accedi a un set di dati pubblico su BigQuery
BigQuery offre un elenco di set di dati pubblici. Eseguire query sul set di dati Shakespeare di BigQuery che fa parte del pubblico segui questi passaggi:
Per leggere la tabella BigQuery, utilizza quanto segue di codice nel tuo 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 tabella BigQuery tramite DataFrame (
df
). Ad esempio, utilizza quanto segue per mostrare i primi tre righe del dataframe:df.show(3)
Per eseguire query su un'altra tabella, aggiorna la variabile
table
.Una caratteristica chiave dei blocchi note Databricks è che puoi combinare le celle linguaggi diversi come Scala, Python e SQL in un unico blocco note.
La seguente query SQL consente di visualizzare il conteggio delle parole 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 sopra esegue una query Spark SQL sul dataframe nel cluster Databricks, non in BigQuery. Il vantaggio di questo è che l'analisi dei dati avviene a livello di Spark, Vengono effettuate chiamate API BigQuery e non sono previsti costi di BigQuery.
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 frame di dati risultante. A differenza dell'esempio in cui l'elaborazione è stata eseguita in Spark. Se utilizzi questo approccio, i prezzi e le ottimizzazioni delle query vengono applicati per l'esecuzione della query in BigQuery.L'esempio seguente utilizza Scala, l'API
query()
e lo shakespeariano pubblico 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 chiamatomdataset
a cui il codice può fare riferimento. Per saperne di più, 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 Blocco note di esempio BigQuery di Databricks.
Scrittura dei dati in BigQuery
Le tabelle BigQuery esistono in 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 di Databricks:
Vai alla pagina BigQuery nella console Google Cloud.
Espandi
Azioni, fai clic su Crea set di dati e assegnale un nometogether
.Nel blocco note Python di Databricks, crea un semplice dataframe Spark 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 al blocco note un'altra cella che scrive il dataframe Spark da nel passaggio precedente alla tabella BigQuery
myTable
nella set di datitogether
. La tabella viene creata o sovrascritta. Utilizza la 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 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 eseguire la pulizia e rimuovere completamente Databricks, annullare l'abbonamento a Databricks nel console Google Cloud e rimuovi tutte le risorse correlate che hai creato nella console Google Cloud.
Se elimini uno spazio di lavoro Databricks, i due bucket Cloud Storage con i nomi databricks-WORKSPACE_ID
edatabricks-WORKSPACE_ID-system
che sono stati creati da Databricks
potrebbero non essere eliminati se i bucket Cloud Storage non sono vuoti. Dopo il giorno
area di lavoro, puoi eliminarli manualmente nel
console Google Cloud per il tuo progetto.
Passaggi successivi
Questa sezione fornisce un elenco di documenti e tutorial aggiuntivi:
- Scopri di più su Databricks gratuito i dettagli della prova.
- Scopri di più su Databricks su Google Cloud.
- Scopri di più su BigQuery di Databricks.
- Leggi l'annuncio del blog relativo al 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 di Databricks e scopri altro informazioni sulla data science argomenti e set di dati.