Delen via


Wat is queryfederatie?

Met query-federatie worden query's naar de externe database gepusht met behulp van JDBC-API's. De query wordt zowel in Databricks uitgevoerd als met behulp van externe rekenkracht. Queryfederatie wordt gebruikt voor bronnen zoals MySQL, PostgreSQL, BigQuery, Redshift, Teradata en meer.

Overzichtsdiagram federatie van query's

Waarom Lakehouse Federation gebruiken?

Het Lakehouse benadrukt de centrale opslag van gegevens om gegevensredundantie en isolatie te verminderen. Uw organisatie heeft mogelijk talloze gegevenssystemen in productie en u wilt mogelijk om verschillende redenen query's uitvoeren op gegevens in verbonden systemen:

  • Rapportage op aanvraag.
  • Bewijs van concept project.
  • De verkennende fase van nieuwe ETL-pijplijnen of -rapporten.
  • Ondersteuning van werkbelastingen tijdens incrementele migratie.

In elk van deze scenario's krijgt u met queryfederatie sneller inzicht, omdat u query's op de gegevens kunt uitvoeren en complexe en tijdrovende ETL-verwerking kunt voorkomen.

Vraagfederatie is bedoeld voor gebruikssituaties waarin:

  • U wilt geen gegevens opnemen in Azure Databricks.
  • U wilt dat uw query's profiteren van berekeningen in het externe databasesysteem.
  • U wilt de voordelen van Unity Catalog-interfaces en gegevensbeheer, waaronder gedetailleerd toegangsbeheer, gegevensherkomst en zoekopdrachten.

Query federatie versus Lakeflow Connect

Met queryfederatie kunt u externe gegevensbronnen opvragen zonder uw gegevens te verplaatsen. Databricks raadt het gebruik van beheerde connectors aan voor gegevensopname, omdat ze geschikt zijn voor grote gegevensvolumes, query's met lage latentie en API-beperkingen van derden. Mogelijk wilt u echter query's uitvoeren op uw gegevens zonder deze te verplaatsen. Wanneer u een keuze hebt tussen beheerde invoerconnectors en queryfederatie, kies dan queryfederatie voor ad hoc-rapportage of proof-of-concept-werk aan uw ETL-processen.

Overzicht van de configuratie van queryfederatie

Als u een gegevensset beschikbaar wilt maken voor alleen-lezen query's met Lakehouse Federation, maakt u het volgende:

  • Een verbinding, een beveiligbaar object in Unity Catalog dat een pad en referenties opgeeft voor toegang tot een extern databasesysteem.
  • Een buitenlandse catalogus, een beveiligbaar object in Unity Catalog dat een database in een extern gegevenssysteem spiegelt, waardoor u alleen-lezenquery's kunt uitvoeren op dat gegevenssysteem in uw Azure Databricks-werkruimte, waarbij de toegang wordt beheerd met behulp van Unity Catalog.

Ondersteunde gegevensbronnen

Queryfederatie ondersteunt verbindingen met de volgende bronnen:

Verbindingsvereisten

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 toestemmingen:

  • 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 ofwel de eigenaar van de verbinding zijn of het privilege CREATE FOREIGN CATALOG voor de verbinding hebben.

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.

Note

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 Toevoegen- of pluspictogramToevoegen pictogram en selecteer 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.

  3. Voer een gebruiksvriendelijke verbindingsnaam in.

  4. Selecteer het verbindingstype (databaseprovider, zoals MySQL of PostgreSQL).

  5. (Optioneel) Voeg een opmerking toe.

  6. Klik op Volgende.

  7. Voer de verbindingseigenschappen in (zoals hostgegevens, pad en toegangsreferenties).

    Voor elk verbindingstype zijn verschillende verbindingsgegevens vereist. Zie het artikel voor uw verbindingstype, vermeld in de inhoudsopgave aan de linkerkant.

  8. Klik op Verbinding maken.

  9. Voer een naam in voor de buitenlandse catalogus.

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

  11. Klik op Catalogus maken.

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

  13. Wijzig de eigenaar die de toegang tot alle objecten in de catalogus kan beheren. Begin met het typen van een principe in het tekstvak en klik vervolgens op het principe in de weergegeven resultaten.

  14. Verleen privileges aan de catalogus. Klik op Toestaan:

    1. Geef de principals op die toegang hebben tot objecten in de catalogus. Begin met het typen van een principe in het tekstvak en klik vervolgens op het principe in de weergegeven resultaten.
    2. Selecteer de vooraf ingestelde bevoegdheden om aan elke principal toe te kennen. Alle accountgebruikers krijgen standaard BROWSE toegewezen.
      • Selecteer Gegevenslezer in de vervolgkeuzelijst om bevoegdheden voor objecten in de catalogus te verlenen read .
      • Selecteer Gegevenseditor in de vervolgkeuzelijst om read en modify rechten toe te kennen op objecten in de catalogus.
      • Selecteer handmatig de bevoegdheden die u wilt verlenen.
    3. Klik op Toestaan.
    4. Klik op Volgende.
    5. Op de pagina Metagegevens geef je sleutel-waardeparen voor tags op. Zie Tags toepassen op beveiligbare objecten in Unity Catalog voor meer informatie.
    6. (Optioneel) Voeg een opmerking toe.
    7. Klik op Opslaan.

SQL

Voer de volgende opdracht uit in een notebook of de SQL-queryeditor. Dit voorbeeld is bedoeld voor verbindingen met een PostgreSQL-database. De opties verschillen per verbindingstype. Zie het artikel voor uw verbindingstype, vermeld in de inhoudsopgave aan de linkerkant.

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

We raden aan Azure Databricks secrets te gebruiken in plaats van gewone tekststrings voor gevoelige waarden, zoals inloggegevens. Voorbeeld:

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>')
)

Zie Geheimbeheer voor informatie over het instellen van geheimen.

Zie Verbindingen beheren voor Lakehouse Federation voor informatie over het beheren van bestaande verbindingen.

Maak een buitenlandse catalogus

Note

Als u de UI gebruikt om een verbinding met de gegevensbron te maken, is de creatie van een buitenlandse catalogus inbegrepen en kunt u deze stap overslaan.

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. Om een buitenlandse catalogus te maken, gebruikt u een verbinding met de gegevensbron 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-query-editor. U kunt ook de Unity Catalog-API gebruiken. Raadpleeg de referentiedocumentatie voor Azure Databricks.

Metagegevens van externe catalogi worden bij elke interactie met de catalogus gesynchroniseerd met Unity Catalog. Voor het in kaart brengen van het gegevenstype tussen Unity Catalog en de gegevensbron kunt u de sectie Gegevenstypetoewijzingen in de documentatie van elke gegevensbron raadplegen.

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 boven aan het deelvenster Catalogus op het pictogram Gegevens toevoegen of plus en selecteer Een catalogus maken 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 Catalogussen maken.

SQL

Voer de volgende SQL-opdracht uit in een notebook of de SQL-queryeditor. 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.
  • <database-name>: de naam van de database die u wilt spiegelen als catalogus in Azure Databricks. Niet vereist voor MySQL, die gebruikmaakt van een naamruimte met twee lagen.
  • <external-catalog-name>: Databricks-to-Databricks alleen: Naam van de catalogus in de externe Databricks-werkruimte die u aan het spiegelen bent. Zie Buitenlandse catalogus maken.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Zie Beheren en werken met buitenlandse catalogi voor informatie over het beheren en werken met buitenlandse catalogi.

Gegevens uit externe tabellen laden met gerealiseerde weergaven

Databricks raadt aan externe gegevens te laden met behulp van queryfederatie wanneer u gematerialiseerde weergaven maakt. Bekijk gematerialiseerde weergaven.

Wanneer u queryfederatie gebruikt, kunnen gebruikers als volgt verwijzen naar de federatieve gegevens:

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

Door het systeem gegenereerde federatieve query's weergeven

Query-federatie vertaalt Databricks SQL-instructies naar instructies die naar de federatieve gegevensbron kunnen worden doorgestuurd. Als u de gegenereerde SQL-instructie wilt weergeven, klikt u op het scanknooppunt van de externe gegevensbron in de grafische weergave van Queryprofielof voert u de geformatteerde SQL-instructieEXPLAIN uit. Raadpleeg de sectie Ondersteunde pushdown in de documentatie van elke gegevensbron voor meer informatie over dekking.

Limitations

  • Query's hebben het kenmerk Alleen-lezen.

    De enige uitzondering is wanneer Lakehouse Federation wordt gebruikt om de verouderde Hive-metastore van een werkruimte te verbinden (catalogusfederatie). Refererende tabellen in dat scenario zijn schrijfbaar. Zie Wat betekent het schrijven naar een refererende catalogus in een federatieve Hive-metastore?

  • De beperking van verbindingen wordt bepaald door de gelijktijdige querylimiet van Databricks SQL. Er geldt geen limiet voor magazijnen per verbinding. Zie Logica voor wachtrijen en automatisch schalen.

  • Tabellen en schema's met namen die ongeldig zijn in Unity Catalog worden niet ondersteund en worden genegeerd door Unity Catalog bij het creëren van een externe catalogus. Zie de lijst met naamgevingsregels en beperkingen in Beperkingen.

  • Tabelnamen en schemanamen worden geconverteerd naar kleine letters in Unity Catalog. Als dit naamconflicten veroorzaakt, kan Databricks niet garanderen welk object wordt geïmporteerd in de externe catalogus.

  • Voor elke verwijzing naar een buitenlandse tabel plant Databricks een subquery in het externe systeem om een subset van gegevens uit die tabel op te halen en stuurt het resultaat vervolgens via een enkele stream naar een Databricks-uitvoertaak. Als de resultatenset te groot is, is het mogelijk dat de uitvoerders onvoldoende geheugen hebben.

  • De toegewezen toegangsmodus (voorheen de modus voor toegang van één gebruiker) is alleen beschikbaar voor gebruikers die eigenaar zijn van de verbinding.

  • Lakehouse Federation kan buitenlandse tabellen met hoofdlettergevoelige identificaties niet federeren voor Azure Synapse-verbindingen of Redshift-verbindingen.

Resourcequota

Azure Databricks dwingt resourcequota af voor alle beveiligbare objecten van Unity Catalog. Deze quota worden vermeld in resourcelimieten. Vreemde catalogi en alle objecten die ze bevatten, worden opgenomen in uw totaalquotumgebruik.

Als u verwacht deze resourcelimieten te overschrijden, neemt u contact op met uw Azure Databricks-accountteam.

U kunt uw quotumgebruik bewaken met behulp van de quota-API's voor Unity Catalog-resources. Zie Controleer uw gebruik van Unity Catalog resource quota's.

Aanvullende bronnen