Delen via


Federatieve query's uitvoeren in een andere Databricks-werkruimte

In dit artikel wordt beschreven hoe u Lakehouse Federation instelt voor het uitvoeren van federatieve query's op Databricks-gegevens in een andere Databricks-werkruimte. Zie Wat is Lakehouse Federation? voor meer informatie over Lakehouse Federation.

Belangrijk

Databricks-to-Databricks Lakehouse Federation is een goed hulpmiddel voor het uitvoeren van query's op gegevens die worden beheerd door de Hive- of AWS Glue-metastore van een andere Databricks-werkruimte. Voor de meeste andere scenario's zijn andere Azure Databricks-werkstromen efficiënter:

  • Als Azure Databricks-werkruimten dezelfde Unity Catalog-metastore delen, kunt u query's voor meerdere werkruimten beheren met behulp van standaard Unity Catalog-query's en hulpprogramma's voor gegevensbeheer.
  • Als u alleen-lezen toegang wilt tot gegevens in een Databricks-werkruimte die is gekoppeld aan een andere Unity Catalog-metastore, ongeacht of deze zich in uw Azure Databricks-account bevinden of niet, is Delta Sharing een betere keuze.

Het is niet nodig om Lakehouse Federation in te stellen in een van deze scenario's.

Als u verbinding wilt maken met een Databricks-catalogus in een andere werkruimte met behulp van Lakehouse Federation, moet u het volgende maken in uw Azure Databricks Unity Catalog metastore:

  • Een cluster of SQL Warehouse in een Databricks-werkruimte.
  • Een verbinding met het cluster of SQL Warehouse.
  • Een buitenlandse catalogus in uw Unity Catalog-metastore die de andere Databricks-catalogus weerspiegelt die toegankelijk is vanuit het cluster of de SQL-warehouse, zodat u de Unity Catalog-querysyntaxis en gegevensbeheerhulpmiddelen kunt gebruiken om de toegang van Azure Databricks-gebruikers tot de gegevens te beheren.

Voordat u begint

Vereisten voor werkruimte:

  • Werkruimte geactiveerd voor Unity Catalog.

Rekenvereisten:

  • Netwerkconnectiviteit van uw rekenresource naar de doeldatabasesystemen. Zie De aanbevelingen voor netwerken voor Lakehouse Federation.
  • Azure Databricks Compute moet gebruikmaken van Databricks Runtime 13.3 LTS of hoger en de standaard - of toegewezen toegangsmodus.
  • SQL-warehouses moeten pro of serverloos zijn en moeten 2023.40 of hoger gebruiken.

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 buitenlandse catalogus wilt maken, moet u de machtiging CREATE CATALOG hebben voor de metastore en de eigenaar van de verbinding zijn of de bevoegdheid CREATE FOREIGN CATALOG voor de verbinding hebben.

Aanvullende machtigingsvereisten worden opgegeven in elke sectie op basis van taken die volgt.

U moet ook een actief cluster of SQL Warehouse hebben in de Azure Databricks-werkruimte die u gebruikt om de verbinding te configureren.

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

  1. Klik in uw Azure Databricks-werkruimte op het pictogram Gegevens.Catalogus.

  2. Klik boven in het deelvenster Catalogus op het pictogram Toevoegen of pluspictogram 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 makenklikken.

  3. Op de pagina Verbindingsbeginselen van de wizard Verbinding instellen, voer een gebruiksvriendelijke Verbindingsnaamin.

  4. Selecteer een verbindingstype van Databricks.

  5. (Optioneel) Voeg een opmerking toe.

  6. Klik op Volgende.

  7. Voer op de pagina Authentication de volgende verbindingseigenschappen in voor de andere Databricks-instantie:

    • Host: naam van werkruimte-exemplaar. Zie Identifiers ophalen voor werkruimteobjectenom te leren hoe u de naam van het werkruimte-exemplaar kunt krijgen.
    • Persoonlijk toegangstoken: een persoonlijk toegangstoken van Azure Databricks waarmee toegang tot de doelwerkruimte mogelijk is. Zie Verifiëren met persoonlijke toegangstokens van Azure Databricks (verouderd) voor meer informatie over het ophalen van een token. Voor verbindingen raadt Databricks aan om een persoonlijk toegangstoken voor een service-principal te gebruiken.
    • HTTP-pad: het HTTP-pad voor uw SQL Warehouse. Om het pad te verkrijgen, gaat u naar SQL > SQL Warehouses in de zijbalk, selecteert u het SQL-warehouse, gaat u naar het tabblad Verbindingsgegevens en kopieert u de waarde voor HTTP path.
  8. Klik op Verbinding maken.

  9. Voer op de pagina Catalog basics de catalogusnaam in in de andere Azure Databricks-werkruimte die kan worden toegewezen aan een catalogusobject in deze metastore.

  10. (Optioneel) Klik op Verbinding testen om te bevestigen dat deze werkt.

  11. Klik op Maak catalogus.

  12. Selecteer op de pagina Access de werkruimten waarin gebruikers toegang hebben tot de catalogus die u hebt gemaakt. U kunt Alle werkruimten toegang geven, of u kunt klikken op Toewijzen aan werkruimten, de werkruimten selecteren en vervolgens op Toewijzenklikken.

  13. Wijzig de Eigenaar die de toegang tot alle objecten in de catalogus kan beheren. Begin een principal in het tekstvak te typen en klik vervolgens op de principal in de geretourneerde resultaten.

  14. Ververleent bevoegdheden aan de catalogus. Klik op Verlenen:

    1. Geef de Principals op die toegang hebben tot objecten in de catalogus. Begin een principal in het tekstvak te typen en klik vervolgens op de principal in de geretourneerde resultaten.
    2. Selecteer de vooraf ingestelde bevoegdheden om aan elke principal toe te kennen. Alle gebruikers van het account krijgen standaard BROWSE.
      • Selecteer Gegevenslezer in de vervolgkeuzelijst om read bevoegdheden te verlenen voor objecten in de catalogus.
      • Selecteer Gegevenseditor in de vervolgkeuzelijst om read en modify bevoegdheden voor objecten in de catalogus toe te kennen.
      • Selecteer handmatig de bevoegdheden die u wilt verlenen.
    3. Klik op Toestaan.
  15. Klik op Volgende.

  16. Geef op de pagina Metagegevens sleutel-waardeparen voor tags op. Zie Tags toepassen op beveiligbare objecten van Unity Catalogvoor meer informatie.

  17. (Optioneel) Voeg een opmerking toe.

  18. Klik op Opslaan.

SQL

Voer de volgende opdracht uit in een notebook of de Sql-queryeditor van Databricks, waarbij u het volgende vervangt:

  • <connection-name>: Gebruiksvriendelijke naam voor de verbinding die u maakt.
  • <workspace-instance>: het doelwerkruimte-exemplaar. Zie Identifiers ophalen voor werkruimteobjectenom te leren hoe u de naam van het werkruimte-exemplaar kunt krijgen.
  • <sql-warehouse-path>: het HTTP-pad voor uw SQL Warehouse. Om het pad te verkrijgen, gaat u naar SQL > SQL Warehouses in de zijbalk, selecteert u het SQL-warehouse, gaat u naar het tabblad Verbindingsgegevens en kopieert u de waarde voor HTTP path.
  • <personal-access-token>: Een persoonlijk toegangstoken van Azure Databricks waarmee toegang tot de doelwerkruimte mogelijk is. Zie Verifiëren met persoonlijke toegangstokens van Azure Databricks (verouderd) voor meer informatie over het ophalen van een token. Voor verbindingen raadt Databricks u aan om het persoonlijke toegangstoken van een service-principal te gebruiken.
CREATE CONNECTION <connection-name> TYPE databricks
OPTIONS (
  host '<workspace-instance>',
  httpPath '<sql-warehouse-path>',
  personalAccessToken '<personal-access-token>'
);

We raden aan Azure Databricks secrets te gebruiken in plaats van platte tekst-strings voor gevoelige waarden zoals inloggegevens. Voorbeeld:

CREATE CONNECTION <connection-name> TYPE databricks
OPTIONS (
  host '<workspace-instance>',
  httpPath '<sql-warehouse-path>',
  personalAccessToken secret ('<secret-scope>','<secret-key-password>')
)

Zie Geheimbeheer voor informatie over het instellen van geheimen.

Maak een buitenlandse catalogus

Notitie

Als u de UI gebruikt om een verbinding met de gegevensbron te maken, wordt de creatie van een externe catalogus opgenomen en kunt u deze stap overslaan.

Een vreemde catalogus spiegelt een catalogus in de externe Databricks-werkruimte, zodat u toegang tot gegevens in die externe Databricks-catalogus kunt beheren en opvragen alsof het een catalogus in uw eigen werkruimte is. Als u een externe catalogus wilt maken, gebruikt u een verbinding met de externe Databricks-werkruimte die al is gedefinieerd.

Als u een buitenlandse catalogus wilt maken, kunt u Catalog Explorer of de CREATE FOREIGN CATALOG SQL-opdracht gebruiken in een Azure Databricks-notebook of de SQL-queryeditor van Databricks. 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 en 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

  1. Klik in uw Azure Databricks-werkruimte op het pictogram Gegevens.Catalogus om Catalog Explorer te openen.

  2. Klik bovenaan het deelvenster Catalogus op het pictogram Toevoegen of plustoevoegen en selecteer Een catalogus toevoegen in het menu.

    U kunt ook op de pagina Snelle toegang op de knop Catalogi klikken en vervolgens op de knop Catalogus maken klikken.

  3. Volg de instructies voor het maken van buitenlandse catalogi in Catalogi maken.

SQL

Voer de volgende SQL-opdracht uit in een notebook of Databricks SQL-editor. Items tussen haakjes zijn optioneel. Vervang de waarden van de tijdelijke aanduidingen:

  • <catalog-name>: naam voor de buitenlandse catalogus die u maakt.
  • <connection-name>: het verbindingsobject waarmee de gegevensbron, het pad en de toegangsreferenties worden opgegeven.
  • <external-catalog-name>: Naam van de catalogus in de externe Databricks-werkruimte die je spiegelt.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (catalog '<external-catalog-name>');

Ondersteunde pushdowns

De volgende pushdowns worden ondersteund voor alle berekeningen:

  • Filteren
  • Projecties
  • Grens
  • Functies: alleen filterexpressies worden ondersteund (tekenreeksfuncties, wiskundige functies, gegevens- en tijdstempelfuncties en andere diverse functies, zoals Alias, Cast, SortOrder).

De volgende pushdowns worden ondersteund op Databricks Runtime 13.3 LTS en hoger en SQL Warehouse Compute:

  • Aggregaties
  • De volgende Booleaanse operatoren: =, , =<, =, = <>><>
  • De volgende wiskundige functies (niet ondersteund als ANSI is uitgeschakeld): +, -, *, %, /
  • De volgende diverse operators: ^, |, ~
  • Sorteren, bij gebruik met limiet

De volgende pushdowns worden niet ondersteund:

  • Samenvoegingen
  • Windows-functies

Toewijzingen van gegevenstypen

Gegevenstypen wijzen doorgaans een-op-een toe wanneer u Databricks-naar-Databricks-federatie gebruikt. De volgende gegevenstypen zijn echter toegewezen aan StringType:

Van Aan
ArrayType StringType
IntervalType StringType
MapType StringType
StructType StringType