Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Auf dieser Seite wird beschrieben, wie Sie lakehouse Federation einrichten, um Verbundabfragen für Snowflake-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 Ihrer Snowflake-Datenbank herzustellen, müssen Sie Folgendes in Ihrem Azure Databricks Unity Catalog-Metastore erstellen:
- Eine Verbindung mit Ihrer Snowflake-Datenbank.
- Einen Fremdkatalog, der Ihre Snowflake-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.
Auf dieser Seite wird beschrieben, wie Verbundabfragen für Snowflake-Daten mithilfe der Standardauthentifizierung (Benutzername/Kennwort) ausgeführt werden. Weitere Authentifizierungsmethoden finden Sie auf den folgenden Seiten:
- Integriertes OAuth von Snowflake
- OAuth mit Microsoft Entra ID
- OAuth mit Okta
- OAuth-Zugriffstoken
- Privater PEM-Schlüssel
Sie können Verbundabfragen auf Snowflake mithilfe des Abfrageverbunds oder des Katalogverbunds ausführen.
Im Abfrageverbund überträgt JDBC die Abfrage des Unity-Katalogs an die externe Datenbank. Dies ist ideal für On-Demand-Berichte oder Machbarkeitsstudien an Ihren ETL-Pipelines.
Im Katalogverbund wird die Unity-Katalogabfrage direkt für den Dateispeicher ausgeführt. Dieser Ansatz ist hilfreich für die inkrementelle Migration ohne Codeanpassung oder als längerfristiges Hybridmodell für Organisationen, die einige Daten in Snowflake zusammen mit ihren im Unity-Katalog registrierten Daten verwalten müssen. Siehe "Snowflake-Katalogverbund aktivieren".
Bevor Sie anfangen
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 ein Metastore-Administrator oder ein Benutzer mit den
CREATE CONNECTIONBerechtigungen für den Unity-Katalog-Metastore sein, der dem Arbeitsbereich zugeordnet 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.
Zusätzliche Berechtigungsanforderungen werden in den folgenden aufgabenbasierten Abschnitten angegeben.
Konfigurieren der Microsoft Entra-ID
Folgen Sie den Anweisungen unter Konfigurieren von Microsoft Entra ID für externe OAuth in der Snowflake-Dokumentation.
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
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 Schnellzugriff auf die Schaltfläche Externe Daten >, wechseln Sie zur Registerkarte Verbindungen, und klicken Sie auf Verbindungerstellen.
Geben Sie auf der Seite Verbindungsgrundlagen des Assistenten Verbindung einrichten einen benutzerfreundlichen Verbindungsnamen ein.
Wählen Sie als Verbindungstypdie Option Snowflake aus.
Wählen Sie
Username and password(Standardauthentifizierung) im Dropdownmenü aus.(Optional) Fügen Sie einen Kommentar hinzu.
Klicke auf Weiter.
Geben Sie die folgenden Authentifizierungs- und Verbindungsdetails für Ihr Snowflake-Lager ein. Eigenschaften, die für die von Ihnen ausgewählte Authentifizierungsmethode spezifisch sind, werden den
Auth typein Klammern vorangestellt.-
Host: Beispiel:
snowflake-demo.east-us-2.azure.snowflakecomputing.com -
Port: Beispiel:
443 -
Benutzer: Zum Beispiel
snowflake-user -
Kennwort-: Beispiel:
password123
-
Host: Beispiel:
Klicke auf Weiter.
Geben Sie auf der Seite "Verbindungsdetails " Folgendes an:
-
Snowflake Warehouse: Zum Beispiel
my-snowflake-warehouse - (Optional) Proxyhost: Host des Proxys, der für die Verbindung mit Snowflake verwendet wird. Sie müssen auch "Proxy verwenden" auswählen und den Proxyport angeben.
- (Optional) Proxy verwenden: Gibt an, ob eine Verbindung mit Snowflake mithilfe eines Proxyservers hergestellt werden soll.
- (Optional) Proxyport: Port des Proxys, der für die Verbindung mit Snowflake verwendet wird. Sie müssen auch "Proxy verwenden" auswählen und den Proxyhost angeben.
- (Optional) Snowflake-Rolle: Die Standardsicherheitsrolle, die nach der Verbindung für die Sitzung verwendet werden soll.
-
Snowflake Warehouse: Zum Beispiel
Klicke auf Weiter.
Geben Sie auf der Seite Kataloggrundlagen einen Namen für den Fremdkatalog ein. Ein fremder Katalog spiegelt eine Datenbank in einem externen Datensystem wider, sodass Sie den Zugriff auf Daten in dieser Datenbank mithilfe von Azure Databricks und Unity Catalog abfragen und verwalten können.
(Optional) Klicken Sie auf Verbindung testen, um zu bestätigen, dass die Verbindung 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 snowflake
OPTIONS (
host '<hostname>',
port '<port>',
sfWarehouse '<warehouse-name>',
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 snowflake
OPTIONS (
host '<hostname>',
port '<port>',
sfWarehouse '<warehouse-name>',
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.
Datenbankbezeichner mit Beachtung von Groß-/Kleinschreibung
Das database-Feld des Fremdkatalogs ist einem Snowflake-Datenbankbezeichner zugeordnet. Wenn bei dem Snowflake-Datenbankbezeichner die Groß-/Kleinschreibung nicht beachtet wird, wird die Groß-/Kleinschreibung beibehalten, die Sie im Fremdkatalog <database-name> verwenden. Wenn beim Snowflake-Datenbankbezeichner jedoch die Groß-/Kleinschreibung beachtet wird, müssen Sie den Fremdkatalog <database-name> in doppelte Anführungszeichen einschließen, um die Groß-/Kleinschreibung beizubehalten.
Beispiel:
databasewird inDATABASEumgewandelt"database"wird indatabaseumgewandelt"database"""wird indatabase"umgewandeltUm ein doppeltes Anführungszeichen zu escapen, verwenden Sie ein weiteres doppeltes Anführungszeichen.
"database""führt zu einem Fehler, da das doppelte Anführungszeichen nicht richtig maskiert ist.
Weitere Informationen finden Sie unter Bezeichneranforderungen in der Snowflake-Dokumentation.
Unterstützte Pushdowns
Die folgenden Pushdowns werden unterstützt:
- Filter
- Projektionen
- Grenze
- Joins
- Aggregiert (Average, Corr, CovPopulation, CovSample, Count, Max, Min, StddevPop, StddevSamp, Sum, VariancePop, VarianceSamp)
- Funktionen (Zeichenfolgenfunktionen, mathematische Funktionen, Daten-, Zeit- und Zeitstempelfunktionen und andere verschiedene Funktionen wie Alias, Cast, SortOrder)
- Windows-Funktionen (DenseRank, Rank, RowNumber)
- Sortieren
Datentypzuordnungen
Wenn Sie von Snowflake zu Spark lesen, werden die Datentypen wie folgt zugeordnet:
| Snowflake-Typ | Spark-Typ |
|---|---|
| Dezimalzahl, Zahl, numerisch | Dezimaltyp |
| bigint, byteint, int (Ganzzahl), integer, smallint (kleinste Ganzzahl), tinyint (sehr kleine Ganzzahl) | Integer-Typ |
| float, float4, float8 | FloatType |
| double, doppelte Präzision, real | DoubleType |
| char, Zeichen, Zeichenfolge, Text, Zeit, varchar | Zeichenkettentyp |
| binär | Binärtyp |
| boolean | Boolescher Typ |
| date | Datumstyp |
| Datum, Zeitstempel, zeitstempel_ltz, zeitstempel_ntz, zeitstempel_tz | Zeitstempeltyp |