Köra federerade frågor på Google BigQuery
Den här artikeln beskriver hur du konfigurerar Lakehouse Federation för att köra federerade frågor på BigQuery-data som inte hanteras av Azure Databricks. Mer information om Lakehouse Federation finns i Vad är Lakehouse Federation?.
Om du vill ansluta till din BigQuery-databas med Lakehouse Federation måste du skapa följande i azure Databricks Unity Catalog-metaarkivet:
- En anslutning till din BigQuery-databas.
- En utländsk katalog som speglar din BigQuery-databas i Unity Catalog så att du kan använda Unity Catalog-frågesyntax och verktyg för datastyrning för att hantera Azure Databricks-användaråtkomst till databasen.
Innan du börjar
Krav för arbetsyta:
- Arbetsytan är aktiverad för Unity Catalog.
Beräkningskrav:
- Nätverksanslutning från ditt Databricks Runtime-kluster eller SQL-lager till måldatabassystemen. Se Nätverksrekommendationer för Lakehouse Federation.
- Azure Databricks-kluster måste använda Databricks Runtime 16.1 eller senare och åtkomstläge för delad eller enskild användare.
- SQL-lager måste vara Pro eller Serverless.
Behörigheter som krävs:
- Om du vill skapa en anslutning måste du vara metaarkivadministratör eller användare med
CREATE CONNECTION
behörighet i Unity Catalog-metaarkivet som är kopplat till arbetsytan. - Om du vill skapa en extern katalog måste du ha behörigheten
CREATE CATALOG
i metaarkivet och antingen vara ägare till anslutningen eller haCREATE FOREIGN CATALOG
behörighet för anslutningen.
Ytterligare behörighetskrav anges i varje aktivitetsbaserat avsnitt som följer.
Skapa en anslutning
En anslutning anger en sökväg och autentiseringsuppgifter för åtkomst till ett externt databassystem. Om du vill skapa en anslutning kan du använda Catalog Explorer eller kommandot CREATE CONNECTION
SQL i en Azure Databricks-notebook-fil eller Databricks SQL-frågeredigeraren.
Kommentar
Du kan också använda Databricks REST API eller Databricks CLI för att skapa en anslutning. Se kommandona POST /api/2.1/unity-catalog/connections och Unity Catalog.
Behörigheter som krävs: Metaarkivadministratör eller användare med behörighet.CREATE CONNECTION
Katalogutforskaren
På din Azure Databricks-arbetsyta klickar du på ikonen Katalog.
Längst upp i fönstret Catalog klickar du på ikonen Ikonen Lägg till och väljer Lägg till en anslutning på menyn.
Från sidan Snabbåtkomst klickar du på knappen Externa data >, går till fliken Anslutningar och klickar på Skapa anslutning.
På sidan Anslutningsgrunder i guiden Ställ in anslutning, ange ett användarvänligt Anslutningsnamn.
Välj en anslutningstyp för Google BigQueryoch klicka sedan på Nästa.
På sidan Authentication anger du json-filen för Google-tjänstkontonyckel för din BigQuery-instans.
Det här är ett rå JSON-objekt som används för att ange BigQuery-projektet och tillhandahålla autentisering. Du kan generera det här JSON-objektet och ladda ned det från informationssidan för tjänstkontot i Google Cloud under NYCKLAR. Tjänstkontot måste ha rätt behörigheter som beviljats i BigQuery, inklusive BigQuery-användare och BigQuery Data Viewer. Följande är ett exempel.
{ "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" }
(Valfritt) Ange Project ID för din BigQuery-instans:
Det här är namnet på BigQuery-projektet som används för fakturering av alla sökfrågor som körs under den här anslutningen. Standardvärdet är projekt-ID för ditt tjänstkonto.
(Valfritt) Lägg till en kommentar.
Klicka på Skapa anslutning.
På catalog basics-sidan anger du ett namn för den externa katalogen. En extern katalog speglar en databas i ett externt datasystem så att du kan köra frågor mot och hantera åtkomst till data i databasen med hjälp av Azure Databricks och Unity Catalog.
(Valfritt) Klicka på Testa anslutningen för att bekräfta att den fungerar.
Klicka på Skapa katalog.
På sidan Access väljer du de arbetsytor där användarna kan komma åt katalogen som du skapade. Du kan välja Alla arbetsytor har åtkomsteller klicka på Tilldela till arbetsytor, välj arbetsytor och klicka sedan på Tilldela.
Ändra ägare vem som ska kunna hantera åtkomst till alla objekt i katalogen. Börja skriva en huvudanvändare i textrutan och klicka sedan på huvudanvändaren i de returnerade resultaten.
Bevilja privilegier i katalogen. Klicka på Bevilja:
- Ange principals vem som ska ha åtkomst till objekt i katalogen. Börja skriva en huvudanvändare i textrutan och klicka sedan på huvudanvändaren i de returnerade resultaten.
- Välj Privilege-förinställningar att bevilja till varje användare. Alla kontoanvändare beviljas
BROWSE
som standard.- Välj dataläsare från den nedrullningsbara menyn för att bevilja
read
behörigheter för objekt i katalogen. - Välj dataredigeraren från den nedrullningsbara menyn för att bevilja
read
ochmodify
behörigheter för objekt i katalogen. - Välj de behörigheter som ska beviljas manuellt.
- Välj dataläsare från den nedrullningsbara menyn för att bevilja
- Klicka på Bevilja.
Klicka på Nästa.
På sidan metadata anger du taggar för nyckel/värde-par. Mer information finns i Tillämpa taggar på skyddsbara objekt i Unity Catalog.
(Valfritt) Lägg till en kommentar.
Klicka på Spara.
SQL
Kör följande kommando i en notebook-fil eller Databricks SQL-frågeredigeraren. Ersätt <GoogleServiceAccountKeyJson>
med ett rå JSON-objekt som anger BigQuery-projektet och ger autentisering. Du kan generera det här JSON-objektet och ladda ned det från informationssidan för tjänstkontot i Google Cloud under NYCKLAR. Tjänstkontot måste ha rätt behörigheter som beviljats i BigQuery, inklusive BigQuery-användare och BigQuery Data Viewer. Ett exempel på ett JSON-objekt finns på fliken Catalog Explorer på den här sidan.
CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
GoogleServiceAccountKeyJson '<GoogleServiceAccountKeyJson>'
);
Vi rekommenderar att du använder Azure Databricks sekretess istället för klartextsträngar för känsliga värden som autentiseringsuppgifter. Till exempel:
CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
GoogleServiceAccountKeyJson secret ('<secret-scope>','<secret-key-user>')
)
Information om hur du konfigurerar hemligheter finns i Hemlighetshantering.
Skapa en utländsk katalog
Kommentar
Om du använder användargränssnittet för att skapa en anslutning till datakällan inkluderas skapande av utländsk katalog och du kan hoppa över det här steget.
En extern katalog speglar en databas i ett externt datasystem så att du kan köra frågor mot och hantera åtkomst till data i databasen med hjälp av Azure Databricks och Unity Catalog. För att skapa en extern katalog, använd en anslutning till den datakälla som redan definierats.
Om du vill skapa en extern katalog kan du använda Catalog Explorer eller CREATE FOREIGN CATALOG
i en Azure Databricks-notebook eller Databricks SQL-frågeredigeraren. Du kan också använda Databricks REST API eller Databricks CLI för att skapa en katalog. Se kommandona POST /api/2.1/unity-catalog/catalogs eller Unity Catalog.
Behörigheter som krävs:CREATE CATALOG
behörighet för metaarkivet och antingen ägarskap för anslutningen eller behörigheten CREATE FOREIGN CATALOG
för anslutningen.
Katalogutforskaren
På din Azure Databricks-arbetsyta klickar du på ikonen Catalog för att öppna Katalogutforskaren.
Längst upp i fönstret Catalog klickar du på ikonen ikonen Lägg till och väljer Lägg till en katalog på menyn.
Från sidan Snabbåtkomst klickar du på knappen Kataloger och klickar sedan på knappen Skapa katalog.
(Valfritt) Ange följande katalogegenskap:
Data Project ID: Ett namn på BigQuery-projektet som innehåller data som ska mappas till den här katalogen. Standardvärdet för det faktureringsprojekt-ID som angetts på anslutningsnivå.
Följ anvisningarna för att skapa externa kataloger i Skapa kataloger.
SQL
Kör följande SQL-kommando i en notebook-fil eller Databricks SQL-redigeraren. Objekt inom hakparenteser är valfria. Ersätt platshållarvärdena.
-
<catalog-name>
: Namn på katalogen i Azure Databricks. -
<connection-name>
: Det anslutningsobjektet som anger autentiseringsuppgifterna för datakälla, sökväg och åtkomst.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;
Pushdowns som stöds
Följande pushdowns stöds:
- Filter
- Projektioner
- Gräns
- Funktioner: partiell, endast för filteruttryck. (Strängfunktioner, matematiska funktioner, data, tidsstämpel och tidsstämpelfunktioner och andra diverse funktioner, till exempel Alias, Cast, SortOrder)
- Aggregeringar
- Sortering, när den används med gräns
- Kopplingar (Databricks Runtime 16.1 eller senare)
Följande pushdowns stöds inte:
- Windows-funktioner
Datatypsmappningar
Följande tabell visar mappningen av datatyper från BigQuery till Spark.
BigQuery-typ | Spark-typ |
---|---|
bignumeric, numeriskt | Decimaltyp |
int64 | LongType |
float64 | DoubleType |
array, geography, interval, json, string, struct | VarcharType |
byte | BinaryType |
bool | BooleanType |
datum | DateType |
datetime, tid, tidsstämpel | TidsstämpelTyp/tidsstämpelNTZType |
När du läser från BigQuery mappas BigQuery Timestamp
till Spark TimestampType
om preferTimestampNTZ = false
(standard). BigQuery Timestamp
mappas till TimestampNTZType
om preferTimestampNTZ = true
.