Federatieve query's uitvoeren op Google BigQuery
Belangrijk
Deze functie is beschikbaar als openbare preview.
In dit artikel wordt beschreven hoe u Lakehouse Federation instelt 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 refererende catalogus die uw BigQuery-database in Unity Catalog weerspiegelt, zodat u de syntaxis van de Unity Catalog-query en hulpprogramma's voor gegevensbeheer kunt gebruiken om azure Databricks-gebruikerstoegang tot de database 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 13.3 LTS of hoger en de modus voor gedeelde of toegang tot één gebruiker.
- 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
CREATE CONNECTION
bevoegdheid voor de Unity Catalog-metastore die is gekoppeld aan de werkruimte. - Als u een refererende catalogus wilt maken, moet u beschikken over de
CREATE CATALOG
machtiging voor de metastore en de eigenaar van de verbinding zijn of over deCREATE FOREIGN CATALOG
bevoegdheid voor de verbinding beschikken.
Aanvullende machtigingsvereisten worden opgegeven in elke sectie op basis van taken die volgt.
Een verbinding maken
Een verbinding geeft een pad en referenties op voor toegang 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 Catalog-opdrachten.
Vereiste machtigingen: Metastore-beheerder of gebruiker met de CREATE CONNECTION
bevoegdheid.
Catalogusverkenner
Klik in uw Azure Databricks-werkruimte op Catalogus.
Klik boven aan het deelvenster Catalogus op het pictogram Toevoegen en selecteer Een verbinding toevoegen in het menu.
U kunt ook op de pagina Snelle toegang op de knop Externe gegevens > klikken, naar het tabblad Verbindingen gaan en op Verbinding maken klikken.
Voer een gebruiksvriendelijke verbindingsnaam in.
Selecteer een verbindingstype van BigQuery.
Voer de volgende verbindingseigenschap in voor uw BigQuery-exemplaar.
GoogleServiceAccountKeyJson: een onbewerkt JSON-object dat wordt gebruikt om het BigQuery-project op te geven en verificatie te bieden. U kunt dit JSON-object genereren en downloaden op 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": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n", "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" }
(Optioneel) Voer de volgende verbindingseigenschap in voor uw BigQuery-exemplaar:
Project-id: 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) Klik op Verbinding testen om de netwerkverbinding te bevestigen. Met deze actie wordt verificatie niet getest.
(Optioneel) Voeg een opmerking toe.
Klik op Create.
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 genereren en downloaden op 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 het tabblad Catalogusverkenner op deze pagina voor een voorbeeld van een JSON-object.
CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
GoogleServiceAccountKeyJson '<GoogleServiceAccountKeyJson>'
);
U wordt aangeraden Azure Databricks-geheimen te gebruiken in plaats van tekenreeksen zonder opmaak voor gevoelige waarden, zoals referenties. 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 refererende catalogus maken
Een refererende catalogus 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 refererende catalogus wilt maken, gebruikt u een verbinding met de gegevensbron die al is gedefinieerd.
Als u een refererende catalogus wilt maken, kunt u Catalog Explorer of CREATE FOREIGN CATALOG
in een Azure Databricks-notebook of de Databricks SQL-queryeditor gebruiken.
Notitie
U kunt ook de Databricks REST API of de Databricks CLI gebruiken om een catalogus te 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.
Catalogusverkenner
Klik in uw Azure Databricks-werkruimte op Catalog om Catalog Explorer te openen.
Klik boven aan het deelvenster Catalogus op het pictogram Toevoegen en selecteer Een catalogus toevoegen in het menu.
U kunt ook op de pagina Snelle toegang op de knop Catalogussen klikken en vervolgens op de knop Catalogus maken klikken.
(Optioneel) Voer de volgende cataloguseigenschap in:
Gegevensproject-id: een naam voor het BigQuery-project met gegevens die worden toegewezen aan deze catalogus. Standaard ingesteld op de factureringsproject-id die is ingesteld op verbindingsniveau.
Volg de instructies voor het maken van refererende catalogi in Catalogussen maken.
SQL
Voer de volgende SQL-opdracht uit in een notebook of de Databricks SQL-editor. Items tussen haakjes zijn optioneel. Vervang de waarden van de tijdelijke aanduidingen.
<catalog-name>
: Naam voor de catalogus in Azure Databricks.<connection-name>
: Het verbindingsobject waarmee de gegevensbron, het pad en de toegangsreferenties worden opgegeven.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;
Ondersteunde pushdowns
De volgende pushdowns worden ondersteund:
- Filters
- Projecties
- Grenswaarde
- 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 limiet
De volgende pushdowns worden niet ondersteund:
- Samenvoegingen
- Windows-functies
Toewijzingen van gegevenstypen
In de volgende tabel ziet u de toewijzing van bigquery-gegevenstypen voor Spark- en 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
.