Dela via


Köra federerade frågor på Google BigQuery

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

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 sekundär katalog som speglar din BigQuery-databas i Unity Catalog så att du kan använda Unity Catalog-frågesyntax och datastyrningsverktyg 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 13.3 LTS eller senare och delat eller enanvändarläge.
  • 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 behörigheten CREATE CONNECTION på Unity Catalog-metaarkivet som är kopplat till arbetsytan.
  • Om du vill skapa en extern katalog måste du ha behörigheten CREATE CATALOG för metaarkivet och antingen vara ägare till anslutningen eller ha behörighet för CREATE FOREIGN CATALOG 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 CREATE CONNECTION SQL-kommandot 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 POST /api/2.1/unity-catalog/connections och Unity Catalog-kommandon.

Behörigheter som krävs: Metaarkivadministratör eller användare med behörighet.CREATE CONNECTION

Katalogutforskaren

  1. På din Azure Databricks-arbetsyta klickar du på Katalogikon Katalog.

  2. Längst upp i fönstret Katalog klickar du påLägg till eller plusikon ikonen Lägg till och väljer Lägg till en anslutning på menyn.

    Du kan också klicka på knappen Externa data >på sidan Snabbåtkomst, gå till fliken Anslutningar och klicka på Skapa anslutning.

  3. Ange ett användarvänligt anslutningsnamn.

  4. Välj en anslutningstyp för BigQuery.

  5. Ange följande anslutningsegenskap för din BigQuery-instans.

    GoogleServiceAccountKeyJson: 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": "-----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"
    }
    
  6. (Valfritt) Ange följande anslutningsegenskap för din BigQuery-instans:

    Projekt-ID: Ett namn för BigQuery-projektet som används för fakturering för alla frågor som körs under den här anslutningen. Standardvärdet är projekt-ID för ditt tjänstkonto.

  7. (Valfritt) Klicka på Testa anslutning för att bekräfta nätverksanslutningen. Den här åtgärden testar inte autentisering.

  8. (Valfritt) Lägg till en kommentar.

  9. Klicka på Skapa.

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 Katalogutforskaren på den här sidan.

CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
  GoogleServiceAccountKeyJson '<GoogleServiceAccountKeyJson>'
);

Vi rekommenderar att du använder Azure Databricks-hemligheter i stä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 sekundär katalog

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. Om du vill skapa en sekundär katalog använder du en anslutning till den datakälla som redan har definierats.

Om du vill skapa en sekundär katalog kan du använda Catalog Explorer eller CREATE FOREIGN CATALOG 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 katalog. Se POST /api/2.1/unity-catalog/catalogs eller Unity Catalog-kommandon.

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

  1. På din Azure Databricks-arbetsyta klickar du på Katalogikon Katalog för att öppna Katalogutforskaren.

  2. Längst upp i fönstret Katalog klickar du på Lägg till eller plusikon ikonen Lägg till och väljer Lägg till en katalog på menyn.

    Du kan också klicka på knappen Kataloger på sidan Snabbåtkomst och sedan på knappen Skapa katalog.

  3. (Valfritt) Ange följande katalogegenskap:

    Dataprojekt-ID: Ett namn för 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å.

  4. Följ anvisningarna för att skapa utländska 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>: 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

Följande pushdowns stöds inte:

  • Kopplingar
  • Windows-funktioner

Datatypsmappningar

Följande tabell visar datatypen 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.