Eseguire query federate in Google BigQuery
Questo articolo descrive come configurare la federazione lakehouse per eseguire query federate su dati BigQuery non gestiti da Azure Databricks. Per altre informazioni sulla federazione di lakehouse, si veda Che cos'è Lakehouse Federation?.
Per connettersi al database BigQuery tramite Lakehouse Federation, è necessario creare quanto segue nel metastore di Azure Databricks Unity Catalog:
- Connessione al database BigQuery.
- Un catalogo esterno che rispecchia il database BigQuery in Unity Catalog in modo da poter usare la sintassi delle query di Unity Catalog e gli strumenti di governance dei dati per gestire l'accesso utente di Azure Databricks al database.
Operazioni preliminari
Requisiti dell'area di lavoro:
- Area di lavoro abilitata per Unity Catalog.
Requisiti dell’ambiente di calcolo:
- Connettività di rete dal cluster Databricks Runtime o dal warehouse SQL ai sistemi di database di destinazione. Si veda Raccomandazioni di rete per Lakehouse Federation.
- I cluster di Azure Databricks devono usare Databricks Runtime 16.1 o versione successiva e la modalità di accesso condiviso o singolo utente.
- I warehouse SQL devono essere Pro o Serverless.
Autorizzazioni necessarie:
- Per creare una connessione, è necessario essere un amministratore del metastore o un utente con il privilegio
CREATE CONNECTION
nel metastore del Unity Catalog collegato al workspace. - Per creare un catalogo esterno, è necessario disporre dell'autorizzazione
CREATE CATALOG
per il metastore e essere il proprietario della connessione o disporre del privilegioCREATE FOREIGN CATALOG
per la connessione.
In ogni sezione basata su attività che segue vengono specificati requisiti di autorizzazione aggiuntivi.
Crea una connessione
Una connessione specifica un percorso e le credenziali per l'accesso a un sistema di database esterno. Per creare una connessione, è possibile usare Esplora cataloghi o il comando SQL CREATE CONNECTION
in un notebook di Azure Databricks o nell'editor di query SQL di Databricks.
Nota
È anche possibile usare l'API REST di Databricks o l'interfaccia della riga di comando di Databricks per creare una connessione. Consulta POST /api/2.1/unity-catalog/connections e comandi di Unity Catalog.
Autorizzazioni necessarie: amministratore o utente metastore con il privilegio CREATE CONNECTION
.
Esploratore di Catalogo
Nell'area di lavoro di Azure Databricks, fare clic sull'icona Catalogo
.
Nella parte superiore del riquadro catalogo
fare clic sull'icona aggiungi o più icona Aggiungi e selezionareAggiungi una connessione dal menu.In alternativa, nella pagina
Accesso rapido fare clic sul pulsantedati esterni , passare alla scheda Connessioni e fare clic su Crea connessione .Nella pagina Nozioni di base sulla connessione della Procedura guidata di configurazione della connessione, immettere un nome di connessione intuitivo.
Selezionare il tipo di connessione di Google BigQuerye quindi fare clic su Avanti.
Nella pagina autenticazione
immettere il json della chiave dell'account del servizio Google per l'istanza di BigQuery. Si tratta di un oggetto JSON non elaborato usato per specificare il progetto BigQuery e fornire l'autenticazione. È possibile generare questo oggetto JSON e scaricarlo dalla pagina dei dettagli dell'account di servizio in Google Cloud in 'KEYS'. L'account di servizio deve disporre delle autorizzazioni appropriate concesse in BigQuery, inclusi BigQuery User e BigQuery Data Viewer. Di seguito viene riportato un esempio.
{ "type": "service_account", "project_id": "PROJECT_ID", "private_key_id": "KEY_ID", "private_key": "PRIVATE_KEY", "client_email": "SERVICE_ACCOUNT_EMAIL", "client_id": "CLIENT_ID", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL", "universe_domain": "googleapis.com" }
(Facoltativo) Immettere il ID progetto per l'istanza di BigQuery:
Si tratta di un nome per il progetto BigQuery usato per la fatturazione per tutte le query eseguite in questa connessione. L'impostazione predefinita è l'ID progetto dell'account del servizio. L’account di servizio deve avere le autorizzazioni appropriate concesse per questo progetto in BigQuery, incluso BigQuery User. È possibile creare un set di dati aggiuntivo usato per l'archiviazione di tabelle temporanee da BigQuery in questo progetto.
(Facoltativo) Aggiungere un commento.
Fare clic su Crea connessione.
Nella pagina informazioni di base del catalogo
immettere un nome per il catalogo esterno. Un catalogo esterno esegue il mirroring di un database in un sistema di dati esterno in modo da poter eseguire query e gestire l'accesso ai dati in tale database usando Azure Databricks e Unity Catalog. (Facoltativo) Fare clic su Test connessione per verificare che funzioni.
Fai clic su Crea catalogo.
Nella pagina Access, seleziona le aree di lavoro in cui gli utenti possono accedere al catalogo che hai creato. È possibile selezionare Tutte le aree di lavoro hanno accessooppure fare clic su Assegna alle aree di lavoro, selezionare le aree di lavoro e quindi fare clic su Assegna.
Modificare il Proprietario che sarà in grado di gestire l'accesso a tutti gli oggetti nel catalogo. Iniziare a digitare un'entità nella casella di testo e quindi fare clic sull'entità nei risultati restituiti.
Concedere privilegi nel catalogo. Fai clic su Concedi:
- Specificare i Principals che avranno accesso agli oggetti nel catalogo. Iniziare a digitare un'entità nella casella di testo e quindi fare clic sull'entità nei risultati restituiti.
- Selezionare i set di impostazioni Privilegi da concedere a ogni principale. A tutti gli utenti dell'account è assegnato per impostazione predefinita
BROWSE
.- Selezionare Lettore Dati dal menu a discesa per concedere
read
privilegi sugli oggetti nel catalogo. - Selezionare Editor dati dal menu a discesa per concedere
read
emodify
privilegi per gli oggetti nel catalogo. - Selezionare manualmente i privilegi da concedere.
- Selezionare Lettore Dati dal menu a discesa per concedere
- Fare clic su Concedi.
Fare clic su Avanti.
Nella Pagina Metadati, specificare le coppie chiave-valore dei tag. Per altre informazioni, vedere Applicare tag a oggetti proteggibili del catalogo Unity.
(Facoltativo) Aggiungere un commento.
Fare clic su Salva.
SQL
Eseguire il seguente comando in un notebook o nell'editor di query SQL di Databricks. Sostituire <GoogleServiceAccountKeyJson>
con un oggetto JSON non elaborato che specifica il progetto BigQuery e fornisce l'autenticazione. È possibile generare questo oggetto JSON e scaricarlo dalla pagina dei dettagli dell'account di servizio in Google Cloud in 'KEYS'. L'account del servizio deve disporre delle autorizzazioni appropriate concesse in BigQuery, inclusi l'utente BigQuery e il Visualizzatore dati BigQuery. Per un esempio di oggetto JSON, visualizzare la scheda Esplora cataloghi in questa pagina.
CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
GoogleServiceAccountKeyJson '<GoogleServiceAccountKeyJson>'
);
È consigliabile usare Azure Databricks segreti anziché stringhe di testo non crittografato per valori sensibili come le credenziali. Ad esempio:
CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
GoogleServiceAccountKeyJson secret ('<secret-scope>','<secret-key-user>')
)
Per informazioni sulla configurazione dei segreti, vedere Gestione dei segreti.
Creare un catalogo straniero
Nota
Se si usa l'interfaccia utente per creare una connessione all'origine dati, la creazione del catalogo esterno è inclusa ed è possibile ignorare questo passaggio.
Un catalogo esterno esegue il mirroring di un database in un sistema di dati esterno in modo da poter eseguire query e gestire l'accesso ai dati in tale database usando Azure Databricks e Unity Catalog. Per creare un catalogo esterno, usare una connessione all'origine dati già definita.
Per creare un catalogo straniero, è possibile usare Esplora cataloghi o CREATE FOREIGN CATALOG
in un notebook di Azure Databricks o nell'editor di query SQL di Databricks. È anche possibile usare l'API REST di Databricks o l'interfaccia della riga di comando di Databricks per creare un catalogo. Vedere il comando POST /api/2.1/unity-catalog/catalogs o i comandi di Unity Catalog .
Autorizzazioni necessarie: autorizzazione CREATE CATALOG
per il metastore e la proprietà della connessione o il privilegio CREATE FOREIGN CATALOG
per la connessione.
Esploratore di Catalogo
Nell'area di lavoro di Azure Databricks, fare clic sull'icona
Catalogo per aprire Catalog Explorer.
Nella parte superiore del riquadro catalogo
fare clic sull'icona Aggiungi o più Icona Aggiungi e selezionareAggiungi un catalogo dal menu.In alternativa, nella pagina Accesso rapido, fare clic sul pulsante Cataloghi e quindi sul pulsante Crea catalogo.
(Facoltativo) Immettere la seguente proprietà del catalogo:
ID progetto dati: un nome per il progetto BigQuery contenente dati che verranno mappati in questo catalogo. Il valore predefinito è l'ID progetto di fatturazione impostato a livello della connessione.
Seguire le istruzioni per la creazione di cataloghi stranieri nella sezione Creazione cataloghi.
SQL
Eseguire il seguente comando SQL in un notebook o nell'editor Databricks SQL. Gli elementi tra parentesi sono facoltativi. Sostituire i valori dei segnaposto.
-
<catalog-name>
: Nome del catalogo in Azure Databricks. -
<connection-name>
: oggetto connessione che specifica l'origine dati, il percorso e le credenziali di accesso.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;
Pushdown supportati
Sono supportati i seguenti pushdown:
- Filtri
- Proiezioni
- Limite
- Funzioni: parziale, solo per le espressioni di filtro. (Funzioni stringa, Funzioni matematiche, Dati, Time e Timestamp e altre funzioni varie, ad esempio Alias, Cast, SortOrder)
- Aggregazioni
- Ordinamento, se usato con limite
- Join (Databricks Runtime 16.1 o versione successiva)
Non sono supportati i seguenti pushdown:
- Funzioni finestra
Mapping di tipi di dati
La tabella seguente illustra la mappatura dei tipi di dati da BigQuery a Spark.
Tipo BigQuery | Tipo Spark |
---|---|
bignumeric, numeric | DecimalType |
int64 | LongType |
float64 | DoubleType |
array, geography, interval, json, string, struct | VarcharType |
bytes | BinaryType |
bool | BooleanType |
data | DateType |
DATA, ORA o DATA E ORA. | TimestampType/TimestampNTZType |
Quando si legge da BigQuery, Timestamp
BigQuery viene mappato a TimestampType
Spark se preferTimestampNTZ = false
(impostazione predefinita). Viene eseguito il mapping di Timestamp
BigQuery a TimestampNTZType
se preferTimestampNTZ = true
.