Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Auf dieser Seite wird beschrieben, wie Sie die Lakehouse Federation einrichten, um föderierte Abfragen für PostgreSQL-Daten auszuführen, die nicht von Azure Databricks verwaltet werden. Weitere Informationen zur Lakehouse Federation finden Sie unter Was ist Lakehouse Federation?
Um mithilfe von Lakehouse Federation eine Verbindung mit Ihren Run-Abfragen in einer PostgreSQL-Datenbank herzustellen, müssen Sie Folgendes in Ihrem Azure Databricks Unity Catalog-Metastore erstellen:
- Eine Verbindung mit Ihrer PostgreSQL-Datenbank
- Einen Fremdkatalog, der Ihre PostgreSQL-Datenbank in Unity Catalog spiegelt, sodass Sie die Abfragesyntax und Datengovernancetools von Unity Catalog zum Verwalten des Azure Databricks-Benutzerzugriffs auf die Datenbank verwenden können.
Vorbereitung
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.
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.
Note
Sie können auch die Databricks REST-API oder die Databricks CLI verwenden, um eine Verbindung zu erstellen. Weitere Informationen finden Sie unter POST /api/2.1/unity-catalog/connections und Unity Catalog-Befehle.
Erforderliche Berechtigungen: Metastore-Admin oder Benutzer mit der Berechtigung CREATE CONNECTION.
Katalog-Explorer
Klicken Sie im Azure Databricks-Arbeitsbereich auf das
Katalog.
Klicken Sie oben im Bereich Katalog auf das Symbol
Hinzufügen, und wählen Sie im Menü Verbindung hinzufügen aus.Klicken Sie alternativ auf der Seite Quick access (Schnellzugriff) auf die Schaltfläche External data > (Externe Daten), navigieren Sie zur Registerkarte Connections (Verbindungen), und klicken Sie auf Create connection (Verbindung erstellen).
Geben Sie auf der Seite Verbindungsgrundlagen des Assistenten Verbindung einrichten einen benutzerfreundlichen Verbindungsnamen ein.
Wählen Sie als Verbindungstyp die Option PostgreSQL aus.
(Optional) Fügen Sie einen Kommentar hinzu.
Klicke auf Weiter.
Geben Sie auf der Seite " Authentifizierung " die folgenden Verbindungseigenschaften für Ihre PostgreSQL-Instanz ein.
-
Host: Zum Beispiel
postgres-demo.lb123.us-west-2.rds.amazonaws.com -
Port: Zum Beispiel
5432 -
Benutzer: Zum Beispiel
postgres_user -
Kennwort: Zum Beispiel
password123
-
Host: Zum Beispiel
Klicken Sie auf Verbindung herstellen.
Geben Sie auf der Seite Kataloggrundlagen einen Namen für den Fremdkatalog ein. Ein Fremdkatalog spiegelt eine Datenbank in einem externen Datensystem, sodass Sie Abfragen und die Verwaltung des Zugriffs auf Daten in dieser Datenbank mithilfe von Azure Databricks und Unity Catalog steuern können.
(Optional) Klicken Sie auf Verbindung testen, um zu überprüfen, ob sie funktioniert.
Klicken Sie auf Katalog erstellen.
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 Arbeitsbereiche haben Zugriff oder Arbeitsbereichen zuweisen, anschließend die Arbeitsbereiche und dann Zuweisen auswählen.
Ändern Sie den Eigentümer, der in der Lage sein wird, den Zugriff auf alle Objekte im Katalog zu verwalten. Beginnen Sie mit der Eingabe eines Prinzipals im Textfeld, und wählen Sie den Prinzipal dann in den zurückgegebenen Ergebnissen aus.
Gewähren Sie Berechtigungen für den Katalog. Klicken Sie auf Gewähren:
- Geben Sie die Prinzipale an, die Zugriff auf Objekte im Katalog haben sollen. Beginnen Sie mit der Eingabe eines Prinzipals im Textfeld, und wählen Sie den Prinzipal dann in den zurückgegebenen Ergebnissen aus.
- Wählen Sie die Berechtigungsvoreinstellungen aus, die den einzelnen Prinzipalen gewährt werden sollen. Standardmäßig werden allen Kontobenutzern
BROWSEgewährt.- Wählen Sie Data Reader aus dem Dropdown-Menü aus, um
readBerechtigungen für Objekte im Katalog zu gewähren. - Wählen Sie Daten-Editor aus dem Dropdownmenü aus, um
readundmodifyBerechtigungen für Objekte im Katalog zu gewähren. - Wählen Sie manuell die Berechtigungen aus, die Sie vergeben möchten.
- Wählen Sie Data Reader aus dem Dropdown-Menü aus, um
- Klicken Sie auf Gewähren.
Klicke auf Weiter.
Geben Sie auf der Seite Metadaten Schlüssel-Wert-Paare für Tags an. Weitere Informationen finden Sie unter Anwenden von Tags auf sicherbare Unity-Katalog-Objekte.
(Optional) Fügen Sie einen Kommentar hinzu.
Klicken Sie auf "Speichern".
SQL
Führen Sie in einem Notebook oder im Databricks SQL-Abfrage-Editor den folgenden Befehl aus.
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Es wird empfohlen, Azure Databricks-Geheimnisse anstelle von Klartext-Zeichenfolgen für vertrauliche Werte wie Anmeldeinformationen zu verwenden. Beispiel:
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>')
)
Informationen zum Einrichten von Geheimnissen finden Sie unter Verwaltung von Geheimnissen.
Erstellen eines Fremdkatalogs
Note
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 Fremdkatalog spiegelt eine Datenbank in einem externen Datensystem, sodass Sie Abfragen und die Verwaltung des Zugriffs auf Daten in dieser Datenbank mithilfe von Azure Databricks und Unity Catalog steuern können. Um einen fremden Katalog zu erstellen, verwenden Sie eine Verbindung mit der bereits definierten Datenquelle.
Zum Erstellen eines Fremdkatalogs können Sie den Katalog-Explorer oder den SQL-Befehl CREATE FOREIGN CATALOG in einem Azure Databricks-Notebook oder im 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:CREATE CATALOG Berechtigung auf dem Metastore und entweder die Eigentümerschaft an der Verbindung oder die CREATE FOREIGN CATALOG Berechtigung auf der Verbindung.
Katalog-Explorer
Klicken Sie im Azure Databricks-Arbeitsbereich auf das
Katalog zum Öffnen des Katalog-Explorers.
Klicken Sie oben im Bereich Katalog auf das Symbol
Hinzufügen und wählen Sie im Menü Katalog hinzufügen.Klicken Sie alternativ auf der Seite Schnellzugriff auf die Schaltfläche Kataloge, und klicken Sie dann auf die Schaltfläche Katalog erstellen.
Befolgen Sie die Anweisungen zum Erstellen von Fremdkataloge unter Erstellen von Katalogen.
SQL
Führen Sie den folgenden SQL-Befehl in einem Notebook oder SQL-Abfrage-Editor aus. Elemente in Klammern sind optional. Ersetzen Sie die folgenden Platzhalterwerte:
-
<catalog-name>: Name für den Katalog in Azure Databricks. -
<connection-name>: Das Verbindungsobjekt, das die Datenquelle, den Pfad und die Anmeldeinformationen angibt. -
<database-name>: Name der Datenbank, die Sie als Katalog in Azure Databricks spiegeln möchten.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
Unterstützte Pushdowns
Die folgenden Pushdowns werden für alle Computeressourcen unterstützt:
- Filters
- Projections
- Limit
- Funktionen: teilweise, nur für Filterausdrücke. (Zeichenfolgenfunktionen, mathematische Funktionen und andere verschiedene Funktionen, z. B. Alias, Cast, SortOrder)
Die folgenden Pushdowns werden in Databricks Runtime 13.3 LTS und höher sowie in SQL-Warehouses unterstützt:
- Die folgenden Aggregationsfunktionen: MIN, MAX, COUNT, SUM, AVG, VAR_POP, VAR_SAMP, STDDEV_POP, STDDEV_SAMP, GREATEST, LEAST, COVAR_POP, COVAR_SAMP, CORR, REGR_INTERCEPT, REGR_R2, REGR_SLOPE, REGR_SXY
- Die folgenden booleschen Funktionen: =, <, <, =>, >=, <=>
- Die folgenden mathematischen Funktionen (nicht unterstützt, wenn ANSI deaktiviert ist): +, -, *, %, /
- Verschiedene Operatoren: | und ~
- Sortierung bei Verwendung mit einem Grenzwert
Die folgenden Pushdowns werden nicht unterstützt:
- Joins
- Windows-Funktionen
Datentypzuordnungen
Wenn Sie von PostgreSQL zu Spark lesen, werden die Datentypen wie folgt zugeordnet:
| PostgreSQL-Typ | Spark-Typ |
|---|---|
| numeric | DecimalType |
| int2 | ShortType |
| int4 (falls ohne Vorzeichen) | IntegerType |
| int8, oid, xid, int4 (falls mit Vorzeichen) | LongType |
| float4 | FloatType |
| doppelte Genauigkeit, float8 | DoubleType |
| char | CharType |
| name, varchar, tid | VarcharType |
| bpchar, Zeichenkette variabler Länge, json, money, point, super, text | StringType |
| Bytea, Geometrie, Varbyte | BinaryType |
| bit, bool | BooleanType |
| date | DateType |
| tabstime, Zeit, Zeit mit Zeitzone, timetz, Zeit ohne Zeitzone, Zeitstempel mit Zeitzone, Zeitstempel, timestamptz, Zeitstempel ohne Zeitzone* | TimestampType/TimestampNTZType |
| PostgreSQL-Arraytyp** | ArrayType |
*Wenn Sie aus PostgreSQL lesen, wird Timestamp aus PostgreSQL dem TimestampType in Spark zugeordnet, wenn preferTimestampNTZ = false ist (Standard). PostgreSQL-Timestamp wird TimestampNTZType zugeordnet, wenn preferTimestampNTZ = true ist.
**Eingeschränkte Arraytypen werden unterstützt.