Federatieve query's uitvoeren op Google BigQuery
In dit artikel wordt beschreven hoe u Lakehouse Federation set om federatieve query's uit te voeren op BigQuery-gegevens die niet worden beheerd door Azure Databricks. Zie Wat is Lakehouse Federation? voor meer informatie over Lakehouse Federation.
Als u verbinding wilt maken met uw BigQuery-database met behulp van Lakehouse Federation, moet u het volgende maken in uw Azure Databricks Unity Catalog metastore:
- Een verbinding met uw BigQuery-database.
- Een buitenlandse catalog die uw BigQuery-database weerspiegelt in Unity Catalog, zodat u de Unity Catalog-querysyntaxis en hulpprogramma's voor gegevensbeheer kunt gebruiken om de gebruikerstoegang tot de database in Azure Databricks te beheren.
Voordat u begint
Vereisten voor werkruimte:
- Werkruimte ingeschakeld voor Unity Catalog.
Rekenvereisten:
- Netwerkconnectiviteit van uw Databricks Runtime-cluster of SQL Warehouse naar de doeldatabasesystemen. Zie De aanbevelingen voor netwerken voor Lakehouse Federation.
- Azure Databricks-clusters moeten gebruikmaken van Databricks Runtime 16.1 of hoger en de modus voor gedeelde of individuele gebruikerstoegang.
- SQL-warehouses moeten Pro of Serverless zijn.
Vereiste machtigingen:
- Als u een verbinding wilt maken, moet u een metastore-beheerder of een gebruiker zijn met de bevoegdheid
CREATE CONNECTION
op de Unity Catalog metastore die is gekoppeld aan de werkruimte. - Als u een vreemd catalogwilt maken, moet u de
CREATE CATALOG
-machtiging hebben voor de metastore en/of de eigenaar van de verbinding zijn of deCREATE FOREIGN CATALOG
bevoegdheid voor de verbinding hebben.
Aanvullende machtigingsvereisten worden opgegeven in elke sectie op basis van taken die volgt.
Een verbinding maken
Een verbinding specificeert een pad en credentials om toegang te krijgen tot een extern databasesysteem. Als u een verbinding wilt maken, kunt u Catalog Explorer of de CREATE CONNECTION
SQL-opdracht gebruiken in een Azure Databricks-notebook of de Databricks SQL-queryeditor.
Notitie
U kunt ook de Databricks REST API of de Databricks CLI gebruiken om een verbinding te maken. Zie POST /api/2.1/unity-catalog/connections en Unity-opdrachten Catalog.
Vereiste machtigingen: Metastore-beheerder of gebruiker met de CREATE CONNECTION
bevoegdheid.
Catalog Explorer
Klik in uw Azure Databricks-werkruimte op Catalog.
Klik boven aan het deelvenster Catalog op het pictogram pictogram toevoegen en selectEen verbinding toevoegen vanuit het menu.
U kunt ook op de pagina Snelle toegang op de knop Externe gegevens > klikken, naar het tabblad Connections gaan en op Verbinding makenklikken.
Voer op
de basisbeginselen van de wizard verbinding een gebruiksvriendelijkeverbinding verbindingsnaam in .Select een verbindingstype van Google BigQueryen klik dan op Volgende.
Voer op de pagina Authentication de Google-serviceaccountssleutel-json - in voor uw BigQuery-exemplaar.
Dit is een onbewerkt JSON-object dat wordt gebruikt om het BigQuery-project op te geven en verificatie te bieden. U kunt dit JSON-object generate en downloaden van de pagina met serviceaccountgegevens in Google Cloud onder SLEUTELS. Het serviceaccount moet over de juiste machtigingen beschikken die zijn verleend in BigQuery, waaronder BigQuery User en BigQuery Data Viewer. Hier volgt een voorbeeld.
{ "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" }
(Optional) Voer de project-ID in voor uw BigQuery-exemplaar:
Dit is een naam voor het BigQuery-project dat wordt gebruikt voor facturering voor alle query's die worden uitgevoerd onder deze verbinding. De standaardinstelling is de project-id van uw serviceaccount.
(Optioneel) Voeg een opmerking toe.
Klik op Verbinding maken.
Voer op de Catalog basisbeginselen pagina een naam in voor de vreemde catalog. Een vreemde catalog spiegelt een database in een extern gegevenssysteem, zodat u de toegang tot de gegevens in die database kunt raadplegen en beheren met behulp van Azure Databricks en Unity Catalog.
(Optioneel) Klik op Verbinding testen om te bevestigen dat deze werkt.
Klik op maken catalog.
Op de pagina Accessselect u de werkruimten waarin gebruikers toegang hebben tot de catalog die u hebt gemaakt. U kunt selecttoegang geven aan alle werkruimtenof klik op Toewijzen aan werkruimten, select de werkruimten en klik vervolgens op Toewijzen.
Wijzig de Eigenaar die de toegang tot alle objecten in de catalogkan beheren. Begin een hoofdgebruikersnaam in het tekstvak te typen en klik vervolgens op de hoofdgebruikersnaam in de weergegeven resultaten.
Grant bevoegdheden op de catalog. Klik op Grant:
- Specificeer de hoofdbetrokkenen die toegang hebben tot objecten in de catalog. Begin een hoofdgebruikersnaam in het tekstvak te typen en klik vervolgens op de hoofdgebruikersnaam in de weergegeven resultaten.
-
Select stel de bevoegheidsvoorinstellingen in voor elke principal grant. Alle accountgebruikers krijgen standaard
BROWSE
toegekend.-
Select
Gegevenslezer in de vervolgkeuzelijst om bevoegdheden voor objecten in de catalogte grant
read
. -
Select
Gegevenseditor in de vervolgkeuzelijst naar grant
read
enmodify
bevoegdheden voor objecten in de catalog. - select de bevoegdheden voor granthandmatig.
-
Select
Gegevenslezer in de vervolgkeuzelijst om bevoegdheden voor objecten in de catalogte grant
- Klik op Grant.
Klik op Volgende.
Specificeer op de pagina Metagegevens de sleutel-waardeparen van de tags. Zie Tags toepassen op Unity Catalog beveiligbare objectenvoor meer informatie.
(Optioneel) Voeg een opmerking toe.
Klik op Opslaan.
SQL
Voer de volgende opdracht uit in een notebook of de Sql-query-editor van Databricks. Vervang <GoogleServiceAccountKeyJson>
door een onbewerkt JSON-object dat het BigQuery-project aangeeft en verificatie biedt. U kunt dit JSON-object generate uitvoeren en downloaden vanaf de pagina met serviceaccountgegevens in Google Cloud onder 'SLEUTELS'. Het serviceaccount moet over de juiste machtigingen beschikken die zijn verleend in BigQuery, waaronder BigQuery User en BigQuery Data Viewer. Bekijk voor een voorbeeld van een JSON-object het tabblad Catalog Explorer op deze pagina.
CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
GoogleServiceAccountKeyJson '<GoogleServiceAccountKeyJson>'
);
U wordt aangeraden Azure Databricks secrets te gebruiken in plaats van gewone tekst voor gevoelige values, zoals credentials. Voorbeeld:
CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
GoogleServiceAccountKeyJson secret ('<secret-scope>','<secret-key-user>')
)
Zie Geheimbeheer voor informatie over het instellen van geheimen.
Een buitenlandse catalog maken
Notitie
Als u de gebruikersinterface gebruikt om een verbinding met de gegevensbron te maken, wordt het maken van externe catalog opgenomen en kunt u deze stap overslaan.
Een externe catalog spiegelt een database in een extern gegevenssysteem, zodat u de toegang tot gegevens in die database kunt opvragen en beheren met behulp van Azure Databricks en Unity Catalog. Als u een externe catalogwilt maken, gebruikt u een verbinding met de gegevensbron die al is gedefinieerd.
Als u een foreign catalogwilt maken, kunt u Catalog Explorer of CREATE FOREIGN CATALOG
gebruiken in een Azure Databricks-notebook of in de Databricks SQL-queryeditor. U kunt ook de Databricks REST API of de Databricks CLI gebruiken om een catalogte maken. Zie POST /api/2.1/unity-catalog/catalogs of Unity Catalog opdrachten.
Vereiste machtigingen:CREATE CATALOG
machtiging voor de metastore en eigendom van de verbinding of de CREATE FOREIGN CATALOG
bevoegdheid voor de verbinding.
Catalog Explorer
Klik in uw Azure Databricks-werkruimte op Catalog om Catalog Explorer te openen.
Klik boven aan het deelvenster Catalog op het pictogram pictogram Toevoegen en selectEen catalog toevoegen vanuit het menu.
U kunt ook op de pagina Snelle toegang op de knop Catalogs klikken en vervolgens op de knop catalog maken klikken.
(Optioneel) Voer de volgende eigenschap catalog in:
Gegevensproject-id: een naam voor het BigQuery-project met gegevens die aan deze catalogworden toegewezen. De standaardinstelling is automatisch ingesteld op de ID van het factureringsproject set op niveau van de verbinding.
Volg de instructies voor het maken van de buitenlandse catalogs in catalogscreƫren.
SQL
Voer de volgende SQL-opdracht uit in een notebook of de Databricks SQL-editor. Items tussen haakjes zijn optioneel. Vervang de tijdelijke aanduiding values.
-
<catalog-name>
: naam voor de catalog in Azure Databricks. -
<connection-name>
: het verbindingsobject waarmee de gegevensbron, het pad en de toegang credentialsworden opgegeven.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;
Ondersteunde pushdowns
De volgende pushdowns worden ondersteund:
- Filters
- Projecties
- Limit
- Functies: gedeeltelijk, alleen voor filterexpressies. (Tekenreeksfuncties, wiskundige functies, gegevens, tijd- en tijdstempelfuncties en andere diverse functies, zoals Alias, Cast, SortOrder)
- Aggregaties
- Sorteren, bij gebruik met limit
- Joins (Databricks Runtime 16.1 of hoger)
De volgende pushdowns worden niet ondersteund:
- Windows-functies
Toewijzingen van gegevenstypen
In de volgende table ziet u de toewijzing van bigQuery aan Spark-gegevenstypen.
Type BigQuery | Spark-type |
---|---|
bignumeric, numeriek | DecimalType |
int64 | LongType |
float64 | DoubleType |
matrix, geografie, interval, json, tekenreeks, struct | VarcharType |
bytes | BinaryType |
bool | BooleanType |
datum | DateType |
datum/tijd, tijd, tijdstempel | TimestampType/TimestampNTZType |
Wanneer u van BigQuery leest, wordt BigQuery Timestamp
toegewezen aan Spark TimestampType
als preferTimestampNTZ = false
(standaard). BigQuery Timestamp
wordt toegewezen aan TimestampNTZType
if preferTimestampNTZ = true
.