Vad är frågefederation?

Med frågefederation skickas frågor ned till den externa databasen med hjälp av JDBC-API:er. Frågan körs både i Databricks och med hjälp av fjärrberäkning. Frågefederation används för källor som MySQL, PostgreSQL, BigQuery, Redshift, Teradata med mera.

Översiktsdiagram för frågefederation

Varför använda Lakehouse Federation?

Lakehouse betonar central lagring av data för att minska dataredundans och isolering. Din organisation kan ha många datasystem i produktion och du kanske vill köra frågor mot data i anslutna system av flera orsaker:

  • Rapportering på begäran.
  • Proof-of-concept-arbete.
  • Den undersökande fasen av nya ETL-pipelines eller rapporter.
  • Stöd för arbetsbelastningar under inkrementell migrering.

I varje av dessa scenarier får du insikter snabbare genom frågefederering, eftersom du kan fråga data direkt där det finns och undvika komplexa och tidskrävande ETL-processer.

Frågefederation är avsedd för användningsfall när:

  • Du vill inte mata in data i Azure Databricks.
  • Du vill att dina frågor ska dra nytta av beräkning i det externa databassystemet.
  • Du vill ha fördelarna med Unity Catalog-gränssnitt och datastyrning, inklusive detaljerad åtkomstkontroll, data härkomst och sökning.

Frågesammanslutning jämfört med Lakeflow Connect

Med frågefederation kan du fråga externa datakällor utan att flytta dina data. Databricks rekommenderar inmatning med hjälp av hanterade anslutningsappar eftersom de är anpassade för att hantera stora datavolymer, frågor med låg latens och API-gränser från tredje part. Men du kanske vill köra frågor mot dina data utan att flytta dem. När du har ett val mellan hanterade inmatningskopplingar och frågefederation, väljer du frågefederation för ad hoc-rapportering eller utvärdering av koncept för dina ETL-pipelines.

Översikt över konfiguration av frågefederation

För att göra en datauppsättning tillgänglig för skrivskyddad sökfråga med Lakehouse Federation skapar du följande:

  • En anslutning, ett skyddsbart objekt i Unity Catalog som anger en sökväg och autentiseringsuppgifter för åtkomst till ett externt databassystem.
  • En främmande katalog, ett skyddbart objekt i Unity Catalog som speglar en databas i ett externt datasystem, så att du kan utföra skrivskyddade frågor på datasystemet i din Azure Databricks-arbetsyta och hantera åtkomst med Unity Catalog.

Datakällor som stöds

Frågefederation stöder anslutningar till följande källor:

Anslutningskrav

Krav för arbetsyta:

  • Arbetsytan är aktiverad för Unity Catalog.

Beräkningskrav:

  • Nätverksanslutning från beräkningsresursen till måldatabassystemen. Se Nätverksrekommendationer för Lakehouse Federation.
  • Azure Databricks-beräkning måste använda Databricks Runtime 13.3 LTS eller senare och standard - eller dedikerat åtkomstläge.
  • SQL-lager måste vara pro eller serverlösa och måste använda 2023.40 eller senare.

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 ha CREATE FOREIGN CATALOG behörighet för anslutningen.

Ytterligare tillståndskrav specificeras i varje uppgiftsbaserad sektion 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.

Note

Du kan även 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: Metastore-admin eller användare med CREATE CONNECTION-behörighet.

Katalogutforskaren

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

  2. Längst upp i fönstret Catalog, klicka på ikonen Lägg till eller plusLägg till och välj Lägg till en anslutning från menyn.

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

  3. Ange ett användarvänligt anslutningsnamn.

  4. Välj anslutningstyp (databasprovider, till exempel MySQL eller PostgreSQL).

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

  6. Klicka på Nästa.

  7. Ange anslutningsegenskaperna (till exempel värdinformation, sökväg och autentiseringsuppgifter för åtkomst).

    Varje anslutningstyp kräver olika anslutningsinformation. Se artikeln för din anslutningstyp, som visas i innehållsförteckningen till vänster.

  8. Klicka på Skapa anslutning.

  9. Ange ett namn för den externa katalogen.

  10. (Valfritt) Klicka på Testa anslutning för att bekräfta att den fungerar.

  11. Klicka på Skapa katalog.

  12. Välj de arbetsytor där användarna kan komma åt katalogen som du skapade. Du kan välja Alla arbetsytor har åtkomst eller klicka på Tilldela till arbetsytor, välja arbetsytor och sedan klicka på Tilldela.

  13. Ändra ägaren som ska kunna hantera åtkomsten till alla objekt i katalogen. Börja skriva en princip i textrutan och klicka sedan på principen i de returnerade resultaten.

  14. Bevilja privilegier i katalogen. Klicka på Tillåt:

    1. Ange de huvudnamn som ska ha åtkomst till objekt i katalogen. Börja skriva en princip i textrutan och klicka sedan på principen i de returnerade resultaten.
    2. Välj förinställningarna för privilegier som ska beviljas varje huvudaktör . Alla kontoanvändare beviljas BROWSE som standard.
      • Välj Dataläsare på den nedrullningsbara menyn för att bevilja read behörigheter för objekt i katalogen.
      • Välj Dataredigeraren på den nedrullningsbara menyn för att bevilja read och modify behörigheter för objekt i katalogen.
      • Välj de behörigheter som ska beviljas manuellt.
    3. Klicka på Tillåt.
    4. Klicka på Nästa.
    5. På sidan Metadata anger du taggar nyckel/värde-par. Mer information finns i Tillämpa taggar på skyddsbara objekt i Unity Catalog.
    6. (Valfritt) Lägg till en kommentar.
    7. Klicka på Spara.

SQL

Kör följande kommando i en notebook-fil eller SQL-frågeredigeraren. Det här exemplet gäller anslutningar till en PostgreSQL-databas. Alternativen skiljer sig åt beroende på anslutningstyp. Se artikeln för din anslutningstyp, som visas i innehållsförteckningen till vänster.

CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>'
);

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 postgresql
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>')
)

Information om hur du konfigurerar hemligheter finns i Hemlighetshantering.

Information om hur du hanterar befintliga anslutningar finns i Hantera anslutningar för Lakehouse Federation.

Skapa en extern katalog

Note

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änder du en anslutning till en datakälla som redan har definierats.

För att skapa en utländsk katalog kan du använda Catalog Explorer eller SQL-kommandot CREATE FOREIGN CATALOG i en Azure Databricks-notebook eller i SQL-frågeredigeraren. Du kan också använda API:et för Unity Catalog. Se Referensdokumentation för Azure Databricks.

Metadata för utländsk katalog synkroniseras till Unity Catalog för varje interaktion med katalogen. Information om datatypsmappning mellan Unity Catalog och datakällan finns i avsnittet Datatypsmappningar i varje datakällas dokumentation.

Behörigheter som krävs:CREATE CATALOG behörighet för metadatalagret och antingen äganderätt till anslutningen eller behörigheten CREATE FOREIGN CATALOG för anslutningen.

Katalogutforskaren

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

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

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

  3. Följ anvisningarna för att skapa utländska kataloger i Skapa kataloger.

SQL

Kör följande SQL-kommando i en notebook eller SQL-frågeredigeraren. 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.
  • <database-name>: Namnet på databasen som du vill spegla som en katalog i Azure Databricks. Krävs inte för MySQL, som använder ett namnområde med två lager.
  • <external-catalog-name>: Databricks-to-Databricks endast: Namnet på katalogen i den externa Databricks-arbetsytan som du speglar. Se Skapa en utländsk katalog.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Information om hur du hanterar och arbetar med utländska kataloger finns i Hantera och arbeta med utländska kataloger.

Läsa in data från externa tabeller med materialiserade vyer

Databricks rekommenderar att du läser in externa data med hjälp av frågefederation när du skapar materialiserade vyer. Se även Materialiserade vyer.

När du använder frågefederation kan användarna referera till federerade data på följande sätt:

CREATE MATERIALIZED VIEW xyz AS SELECT * FROM federated_catalog.federated_schema.federated_table;

Visa systemgenererade federerade frågor

Frågefederation översätter Databricks SQL-instruktioner till instruktioner som kan push-överföras ned till den federerade datakällan. Om du vill visa den genererade SQL-instruktionen klickar du på genomsökningsnoden för extern datakälla i grafvyn för Frågeprofileller kör SQL-instruktionen EXPLAIN FORMATTED. Se avsnittet Pushdown som stöds i varje datakällas dokumentation för mer information.

Limitations

  • Förfrågningar är skrivskyddade.

    Det enda undantaget är när Lakehouse Federation används för att federera en arbetsytas äldre Hive-metaarkiv (katalogfederation). Utländska tabeller i det scenariot är skrivbara. Se Vad innebär det att skriva till en utländsk katalog i ett federerat Hive-metaarkiv?.

  • Begränsning av anslutningar bestäms med den samtidiga frågegränsen för Databricks SQL. Det finns ingen gräns för lager per anslutning. Se Logik för köer och automatisk skalning.

  • Tabeller och scheman med namn som är ogiltiga i Unity Catalog stöds inte och ignoreras av Unity Catalog när en extern katalog skapas. Se listan över namngivningsregler och begränsningar i Begränsningar.

  • Tabellnamn och schemanamn konverteras till små bokstäver i Unity Catalog. Om detta orsakar namnkollisioner kan Databricks inte garantera vilket objekt som importeras till den externa katalogen.

  • För varje utländsk tabell som refereras schemalägger Databricks en underfråga i fjärrsystemet för att hämta en delmängd av data från den tabellen, och returnerar sedan resultatet till en Databricks-exekveringsuppgift över en enda dataström. Om resultatuppsättningen är för stor kan exekveraren få slut på minne.

  • Dedikerat åtkomstläge (tidigare enanvändarläge) är endast tillgängligt för användare som äger anslutningen.

  • Lakehouse Federation kan inte federera externa tabeller med teckenstorlekskänsliga identifierare för Azure Synapse-anslutningar eller Redshift-anslutningar.

Resurskvoter

Azure Databricks tillämpar resurskvoter på alla skyddsbara objekt i Unity Catalog. Dessa kvoter visas i Resursgränser. Utländska kataloger och alla objekt som de innehåller ingår i din totala kvotanvändning.

Om du förväntar dig att överskrida dessa resursgränser kontaktar du ditt Azure Databricks-kontoteam.

Du kan övervaka din kvotanvändning med hjälp av API:erna för Enhetskatalogens resurskvoter. Se Övervaka din användning av Unity Catalog-resurskvoter.

Ytterligare resurser