Freigeben über


Ausführen von Verbundabfragen für einen anderen Databricks-Arbeitsbereich

In diesem Artikel wird beschrieben, wie Sie Lakehouse Federation einrichten, um Verbundabfragen für Databricks-Daten in einem anderen Databricks-Arbeitsbereich auszuführen. Weitere Informationen zu Lakehouse Federation finden Sie unter Was ist Lakehouse Federation?.

Wichtig

Databricks-to-Databricks Lakehouse Federation ist ein gutes Tool zum Ausführen von Abfragen zu Daten, die von einem anderen Databricks-Arbeitsbereich im Hive- oder AWS Glue-Metastore verwaltet werden. In den meisten anderen Szenarios sind andere Azure Databricks-Workflows effizienter:

  • Wenn Azure Databricks-Arbeitsbereiche denselben Unity Catalog-Metastore verwenden, können Sie arbeitsbereichsübergreifende Abfragen mithilfe von Unity Catalog-Standardabfragen und Datengovernancetools verwalten.
  • Wenn Sie schreibgeschützten Zugriff auf Daten in einem Databricks-Arbeitsbereich erhalten möchten, der an einen anderen Unity Catalog-Metastore angefügt ist, ist Delta Sharing eine bessere Wahl. Dies gilt unabhängig davon, ob Sie bei Ihrem Azure Databricks-Konto angemeldet sind.

In keinem dieser Szenarios ist das Einrichten von Lakehouse Federation erforderlich.

Um mithilfe von Lakehouse Federation eine Verbindung mit einem Databricks-Katalog in einem anderen Arbeitsbereich herzustellen, müssen Sie Folgendes in Ihrem Unity Catalog-Metastore für Azure Databricks erstellen:

  • Einen Cluster oder ein SQL-Warehouse in einem Databricks-Arbeitsbereich
  • Eine Verbindung mit dem Cluster oder SQL-Warehouse
  • Einen fremden Katalog in Ihrem Unity Catalog-Metastore, der den anderen Databricks-Katalog spiegelt, auf den über den Cluster oder das SQL-Warehouse zugegriffen werden kann. So können Sie die Unity Catalog-Abfragesyntax und Datengovernancetools verwenden, um den Azure Databricks-Benutzerzugriff auf die Daten zu verwalten.

Voraussetzungen

Anforderungen an den Arbeitsbereich:

  • Der Arbeitsbereich muss für Unity Catalog aktiviert sein.

Computeanforderungen:

  • Netzwerkkonnektivität von Ihrer Rechnerressource zu den Zieldatenbanksystemen. Weitere Informationen finden Sie unter Netzwerkempfehlungen für Lakehouse Federation.
  • Azure Databricks-Berechnungen müssen Databricks Runtime 13.3 LTS oder höher verwenden und im Standard- oder Dedizierten-Zugriffsmodus ausgeführt werden.
  • SQL-Lagerhäuser müssen pro oder serverlos sein und 2023.40 oder höher verwenden.

Erforderliche Berechtigungen:

  • Um eine Verbindung zu erstellen, müssen Sie Metastore-Administrator oder Benutzer mit der Berechtigung „CREATE CONNECTION“ für den Unity Catalog-Metastore sein, der an den Arbeitsbereich angefügt ist.
  • Um einen Fremdkatalog zu erstellen, müssen Sie über die Berechtigung „CREATE CATALOG“ für den Metastore verfügen und entweder der Besitzer der Verbindung sein oder über die Berechtigung „CREATE FOREIGN CATALOG“ für die Verbindung verfügen.

In jedem folgenden aufgabenbasierten Abschnitt werden zusätzliche Berechtigungsanforderungen angegeben.

Sie müssen auch über einen aktiven Cluster oder ein SQL-Warehouse im Azure Databricks-Arbeitsbereich verfügen, den bzw. das Sie zum Konfigurieren der Verbindung verwenden.

Erstellen einer Verbindung

Eine Verbindung gibt einen Pfad und Anmeldeinformationen für den Zugriff auf ein externes Datenbanksystem an. Zum Erstellen einer Verbindung können Sie den Katalog-Explorer oder den SQL-Befehl „CREATE CONNECTION“ in einem Azure Databricks-Notebook oder im Databricks SQL-Abfrage-Editor verwenden.

Hinweis

Sie können auch die Databricks-REST-API oder die Databricks CLI verwenden, um eine Verbindung zu erstellen. Siehe POST /api/2.1/unity-catalog/connections und Unity Catalog-Befehle.

Erforderliche Berechtigungen: Metastore-Administrator oder Benutzer mit der Berechtigung „CREATE CONNECTION“.

Katalog-Explorer

  1. Klicken Sie im Azure Databricks-Arbeitsbereich auf das Datensymbol.Katalog.

  2. Klicken Sie oben im Bereich Katalog auf das Symbol Symbol zum Hinzufügen bzw. PlussymbolHinzufügen, und wählen Sie im Menü Verbindung hinzufügen aus.

    Klicken Sie alternativ auf der Seite Schnellzugriff auf die Schaltfläche Externe Daten >, navigieren Sie zur Registerkarte Verbindungen, und klicken Sie auf Verbindung erstellen.

  3. Geben Sie auf der Seite Verbindungsgrundlagen des Assistenten Verbindung einrichten einen benutzerfreundlichen Verbindungsnamen ein.

  4. Wählen Sie einen Verbindungstyp von Databricks aus.

  5. (Optional) Fügen Sie einen Kommentar hinzu.

  6. Klicken Sie auf Weiter.

  7. Geben Sie auf der Seite Authentication die folgenden Verbindungseigenschaften für die andere Databricks-Instanz ein:

    • Host: Name der Arbeitsbereichsinstanz. Informationen zum Abrufen des Namens der Arbeitsbereichsinstanz finden Sie unter Abrufen von Bezeichnern für Arbeitsbereichsobjekte.
    • Persönliches Zugriffstoken: Ein persönliches Azure Databricks-Zugriffstoken, das den Zugriff auf den Zielarbeitsbereich ermöglicht. Informationen zum Abrufen eines Tokens finden Sie unter Authentifizieren mit Azure Databricks persönlichen Zugriffstoken (Legacy). Für Verbindungen wird bei Databricks das Verwenden eines persönlichen Zugriffstokens für einen Dienstprinzipal empfohlen.
    • HTTP-Pfad: Der HTTP-Pfad für Ihr SQL-Warehouse. Um den Pfad abzurufen, wechseln Sie in der Randleiste zu SQL > SQL-Warehouses, wählen Sie das SQL-Warehouse aus, wechseln Sie zur Registerkarte Verbindungsdetails, und kopieren Sie den Wert für den HTTP-Pfad.
  8. Klicken Sie auf Verbindung herstellen.

  9. Geben Sie auf der Seite Kataloggrundlagen den Katalognamen im anderen Azure Databricks-Arbeitsbereich ein, der einem Katalogobjekt in diesem Metastore zugeordnet werden kann.

  10. (Optional) Klicken Sie auf Verbindung testen, um zu überprüfen, ob sie funktioniert.

  11. Klicken Sie auf Katalog erstellen.

  12. Wählen Sie auf der Seite Access die Arbeitsbereiche aus, in denen Benutzer auf den von Ihnen erstellten Katalog zugreifen können. Sie können Alle Arbeitsbereichen haben Zugriff auswählen oder auf Arbeitsbereichen zuweisen klicken, die Arbeitsbereiche auswählen und dann auf Zuweisen klicken.

  13. Ändern Sie unter Besitzer die Person, die den Zugriff auf alle Objekte im Katalog verwalten kann. Beginnen Sie mit der Eingabe eines Prinzipals im Textfeld, und klicken Sie dann in den zurückgegebenen Ergebnissen auf den Prinzipal.

  14. Gewähren Sie Berechtigungen für den Katalog. Klicken Sie auf Gewähren:

    1. Geben Sie die Prinzipale an, die Zugriff auf Objekte im Katalog haben sollen. Beginnen Sie mit der Eingabe eines Prinzipals im Textfeld, und klicken Sie dann in den zurückgegebenen Ergebnissen auf den Prinzipal.
    2. Wählen Sie die Berechtigungsvoreinstellungen aus, die den einzelnen Prinzipalen gewährt werden sollen. Standardmäßig werden allen Kontobenutzern BROWSE gewährt.
      • Wählen Sie im Dropdownmenü Datenleser aus, um read-Berechtigungen für Objekte im Katalog zu gewähren.
      • Wählen Sie Daten-Editor aus dem Dropdownmenü aus, um read und modify Berechtigungen für Objekte im Katalog zu gewähren.
      • Wählen Sie die Berechtigungen manuell aus, die gewährt werden sollen.
    3. Klicken Sie auf Gewähren.
  15. Klicken Sie auf Weiter.

  16. Geben Sie auf der Seite Metadaten Tag-Schlüssel-Wert-Paare an. Weitere Informationen finden Sie unter Anwenden von Tags auf sicherbare Unity-Katalog-Objekte.

  17. (Optional) Fügen Sie einen Kommentar hinzu.

  18. Klicken Sie auf Speichern.

SQL

Führen Sie den folgenden Befehl in einem Notebook oder im Databricks SQL-Abfrage-Editor aus, und ersetzen Sie dabei Folgendes:

  • <connection-name>: Benutzerfreundlicher Name für die Verbindung, die Sie erstellen.
  • <workspace-instance>: Die Zielarbeitsbereichsinstanz. Informationen zum Abrufen des Namens der Arbeitsbereichsinstanz finden Sie unter Abrufen von Bezeichnern für Arbeitsbereichsobjekte.
  • <sql-warehouse-path>: Der HTTP-Pfad für Ihr SQL-Warehouse. Um den Pfad abzurufen, wechseln Sie in der Randleiste zu SQL > SQL-Warehouses, wählen Sie das SQL-Warehouse aus, wechseln Sie zur Registerkarte Verbindungsdetails, und kopieren Sie den Wert für den HTTP-Pfad.
  • <personal-access-token>: Ein persönliches Azure Databricks-Zugriffstoken, das den Zugriff auf den Zielarbeitsbereich ermöglicht. Informationen zum Abrufen eines Tokens finden Sie unter Authentifizieren mit Azure Databricks persönlichen Zugriffstoken (Legacy). Für Verbindungen empfiehlt Databricks, das persönliche Zugriffstoken eines Dienstprinzipals zu verwenden.
CREATE CONNECTION <connection-name> TYPE databricks
OPTIONS (
  host '<workspace-instance>',
  httpPath '<sql-warehouse-path>',
  personalAccessToken '<personal-access-token>'
);

Es wird empfohlen, Aure Databricks-Geheimnisse anstelle von Klartext-Zeichenfolgen für vertrauliche Werte wie Anmeldeinformationen zu verwenden. Beispiele:

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

Informationen zum Einrichten von Geheimnissen finden Sie unter Verwaltung von Geheimnissen.

Erstellen eines fremden Katalogs

Hinweis

Wenn Sie die Benutzeroberfläche zum Erstellen einer Verbindung mit der Datenquelle verwenden, ist die Erstellung fremder Kataloge enthalten, und Sie können diesen Schritt überspringen.

Ein fremder Katalog spiegelt einen Katalog im externen Databricks-Arbeitsbereich, sodass Sie den Zugriff auf Daten in diesem externen Databricks-Katalog abfragen und verwalten können, als wäre der Katalog in Ihrem eigenen Arbeitsbereich. Um einen fremden Katalog zu erstellen, verwenden Sie eine bereits definierte Verbindung mit dem externen Databricks-Arbeitsbereich.

Zum Erstellen eines fremden Katalogs können Sie den Katalog-Explorer oder den SQL-Befehl „CREATE FOREIGN CATALOG“ in einem Azure Databricks-Notebook oder im Databricks SQL-Abfrage-Editor verwenden. Sie können auch die Databricks-REST-API oder die Databricks CLI verwenden, um einen Katalog zu erstellen. Siehe POST /api/2.1/unity-catalog/catalogs und Unity Catalog-Befehle.

Erforderliche Berechtigungen: Sie benötigen die Berechtigung CREATE CATALOG für den Metastore und müssen entweder Besitzer der Verbindung sein oder die Berechtigung CREATE FOREIGN CATALOG für diese haben.

Katalog-Explorer

  1. Klicken Sie im Azure Databricks-Arbeitsbereich auf das Datensymbol.Katalog zum Öffnen des Katalog-Explorers.

  2. Klicken Sie oben im Bereich Katalog auf das Symbol Symbol zum Hinzufügen bzw. PlussymbolHinzufügen, und wählen Sie im Menü Katalog hinzufügen aus.

    Klicken Sie alternativ auf der Seite Schnellzugriff auf die Schaltfläche Kataloge, und klicken Sie dann auf die Schaltfläche Katalog erstellen.

  3. Befolgen Sie die Anweisungen zum Erstellen von Fremdkataloge unter Erstellen von Katalogen.

SQL

Führen Sie den folgenden SQL-Befehl in einem Notebook oder im Databricks SQL-Editor aus. Elemente in Klammern sind optional. Ersetzen Sie folgende Platzhalterwerte:

  • <catalog-name>: Name des fremden Katalogs, den Sie erstellen
  • <connection-name>: Das Verbindungsobjekt, das die Datenquelle, den Pfad und die Anmeldeinformationen für den Zugriff angibt.
  • <external-catalog-name>: Name des Katalogs im externen Databricks-Arbeitsbereich, den Sie spiegeln
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (catalog '<external-catalog-name>');

Unterstützte Pushdowns

Die folgenden Pushdowns werden für alle Computeressourcen unterstützt:

  • Filter
  • Projektionen
  • Begrenzung
  • Funktionen: Nur Filterausdrücke werden unterstützt (Zeichenfolgenfunktionen, mathematische Funktionen, Daten-, Zeit- und Zeitstempelfunktionen und andere verschiedene Funktionen wie Alias, Cast, SortOrder).

Die folgenden Pushdowns werden in Databricks Runtime 13.3 LTS und höher sowie in SQL Warehouse Compute unterstützt:

  • Aggregate
  • Die folgenden booleschen Operatoren: =, <, <=, >, >=, <=>
  • Die folgenden mathematischen Funktionen (werden nicht unterstützt, wenn ANSI deaktiviert ist): +, -, *, %, /
  • Die folgenden verschiedenen Operatoren: ^, |, ~
  • Sortierung bei Verwendung mit einem Grenzwert

Die folgenden Pushdowns werden nicht unterstützt:

  • Verknüpfungen
  • Windows-Funktionen

Datentypzuordnungen

Datentypen werden in der Regel 1:1 abgebildet, wenn Sie die Databricks-zu-Databricks-Föderation verwenden. Die folgenden Datentypen werden wie folgt zu StringType zugeordnet:

Von An
ArrayType StringType
IntervalType StringType
MapType StringType
StructType StringType