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.
In diesem Artikel wird beschrieben, wie Sie ein externes Standortobjekt im Unity-Katalog konfigurieren, um den Zugriff auf Cloudspeicher von Azure Databricks zu steuern.
Übersicht über externe Standorte
Externe Speicherorte verknüpfen Speicheranmeldeinformationen mit Cloud-Objektspeichercontainern. Externe Speicherorte werden verwendet, um Folgendes zu definieren:
Verwaltete Speicherorte für verwaltete Tabellen und Volumes. Verwaltete Speicher können auf Metastore-, Katalog- oder Schemaebene liegen. Weitere Informationen finden Sie unter Angeben eines verwalteten Speicherorts in Unity Catalog.
Speicherorte für externe Tabellen und externe Volumes.
Externe Standorte können auf den Speicher in einem Azure Data Lake Storage-Container, AWS S3-Bucket oder Cloudflare R2-Bucket verweisen.
Das folgende Diagramm zeigt, wie externe Speicherorte auf Speicheranmeldeinformationen und Cloudspeicherorte verweisen.
In diesem Diagramm:
- Jeder externe Speicherort verweist auf eine Speicheranmeldeinformation und einen Cloudspeicherort.
- Auf eine Speicheranmeldeinformation kann von mehreren externen Speicherorten verwiesen werden.
Speicheranmeldeinformationen 1 gewähren Zugriff auf alles unter dem Pfad
bucket/tables/*, sodass sowohl der externe Speicherort A als auch der externe Speicherort B darauf verweisen.
Übersicht über die Erstellung externer Speicherorte
Sie können eine der folgenden Schnittstellen verwenden, um einen externen Speicherort zu erstellen:
-
Diese Option bietet eine grafische Benutzeroberfläche. Sie können den Katalog-Explorer verwenden, um externe Speicherorte zu erstellen, die referenzieren: Azure Data Lake Storage-Container, S3-Buckets (schreibgeschützt), Cloudflare R2-Buckets und DBFS-Stamm (Legacy)
In diesem Artikel werden die Optionen 1 und 2 behandelt.
Note
Das Speichern von Daten im DBFS-Stammspeicherort ist eine veraltete Praxis, und Databricks empfiehlt davon ab. Wenn Ihr Arbeitsbereich Daten jedoch im DBFS-Stamm speichert, können Sie einen externen Speicherort erstellen, um den Zugriff auf diese Daten mithilfe des Unity-Katalogs zu steuern. Ausführliche Informationen finden Sie unter Herstellen einer Verbindung mit einem externen DBFS-Stammspeicherort (Legacy).
Weitere Informationen zur Verwendung externer Speicherorte und der Beziehung zwischen Speicheranmeldeinformationen und externen Speicherorten finden Sie unter Herstellen einer Verbindung mit Cloudobjektspeicher mithilfe von Unity Catalog.
Bevor Sie beginnen
Prerequisites:
Sie müssen den Azure Data Lake Storage-Speichercontainer, AWS S3-Bucket oder Cloudflare R2-Bucket erstellen, den Sie als externen Speicherort verwenden möchten, bevor Sie das externe Standortobjekt in Azure Databricks erstellen.
Azure Data Lake Storage-Speicherkonten, die Sie als externe Speicherorte verwenden, müssen über einen hierarchischen Namespace verfügen.
Sie können keine Azure-Speichercontainer mit unveränderlichen Richtlinien (WORM – Einmal schreiben, Viele lesen) als externe Speicherorte verwenden. Unity Catalog erfordert DELETE-Berechtigungen für Speicherbehälter, die durch Richtlinien zur Unveränderlichkeit verhindert werden. Weitere Informationen zu Unveränderlichkeitsrichtlinien finden Sie unter Konfigurieren von Unveränderlichkeitsrichtlinien für Container.
Wenn der Zugriff auf öffentliche Netzwerke für das Speicherkonto deaktiviert ist, müssen Sie die Option " Vertrauenswürdige Azure-Dienste zulassen " aktivieren, damit Azure Databricks eine Verbindung mit dem Speicherkonto herstellen kann. Sie können diese Einstellung mithilfe der Azure CLI konfigurieren:
# Check current network rule set az storage account show --name <storage_account_name> --resource-group <resource_group_name> --query "networkRuleSet" # Set bypass for Azure Services az storage account update \ --name <storage_account_name> \ --resource-group <resource_group_name> \ --bypass AzureServices
Verwenden Sie keine Punktnotation (z. B.
incorrect.bucket.name.notation) in S3-Bucketnamen. Obwohl AWS Punkte in Bucketnamen zulässt, unterstützt Databricks keine S3-Buckets mit Punktnotation. Buckets mit Punkten können Kompatibilitätsprobleme mit Features wie Delta Sharing aufgrund von SSL-Zertifikatsüberprüfungsfehlern verursachen. Weitere Informationen finden Sie in den bewährten Methoden für die Benennung von AWS-Buckets.Externe Speicherortpfade dürfen nur Standard-ASCII-Zeichen (Buchstaben
A–Z,a–zZiffern0–9und allgemeine Symbole wie/, ,_)-enthalten.
- Sie müssen über eine in Azure Databricks definierte Speicheranmeldeinformationen verfügen, die Zugriff auf den Pfad des Cloudspeicherorts erhalten. Siehe Erstellen einer Speicheranmeldeinformation zum Herstellen einer Verbindung mit Azure Data Lake Storage, Erstellen einer Speicheranmeldeinformation zum Herstellen einer Verbindung mit Cloudflare R2 oder Erstellen einer Speicheranmeldeinformationen für die Verbindung mit AWS S3 (schreibgeschützt).
Berechtigungsanforderungen:
- Sie müssen sowohl für den Metaspeicher als auch für die Speicheranmeldung, auf die im externen Speicherort verwiesen wird, die Berechtigung
CREATE EXTERNAL LOCATIONbesitzen. Metastore-Administratoren haben standardmäßig die BerechtigungCREATE EXTERNAL LOCATIONim Metastore. - Wenn Sie einen externen Speicherort für den DBFS-Stammspeicherort erstellen, kann das System die Speicheranmeldeinformationen für Sie erstellen, aber Sie müssen ein Arbeitsbereichsadministrator sein. Ausführliche Informationen finden Sie unter Herstellen einer Verbindung mit einem externen DBFS-Stammspeicherort (Legacy)
Option 1: Erstellen eines externen Speicherorts mithilfe des Katalog-Explorers
Sie können manuell einen externen Speicherort mithilfe des Catalog-Explorers erstellen.
Berechtigungen und erforderliche Komponenten: siehe Bevor Sie beginnen.
So erstellen Sie den externen Speicherort
Melden Sie sich bei einem Arbeitsbereich an, der dem Metastore angefügt ist.
Klicken Sie in der Randleiste auf das
Katalog.
Klicken Sie auf die Schaltfläche "Externe Daten > ", wechseln Sie zur Registerkarte "Externe Speicherorte ", und klicken Sie auf " Speicherort erstellen".
Geben Sie den Namen des externen Speicherorts ein.
Wählen Sie den Speichertyp aus: Azure Data Lake Storage, S3 (Schreibgeschützt), R2 oder DBFS-Stamm.
Das Speichern von Daten im DBFS-Stamm ist eine nicht empfohlene, veraltete Vorgehensweise. Ausführliche Informationen finden Sie unter Herstellen einer Verbindung mit einem externen DBFS-Stammspeicherort (Legacy).
Geben Sie unter DER URL den Pfad zum externen Speicherort ein, oder wählen Sie ihn aus.
Für Azure Data Lake Storage, S3 und R2 haben Sie die folgenden Optionen:
Um den Containerpfad von einem vorhandenen DBFS-Bereitstellungspunkt zu kopieren, klicken Sie auf "Aus DBFS kopieren".
Wenn Sie nicht von einem vorhandenen Bereitstellungspunkt kopieren, verwenden Sie das URL-Feld , um den Container- oder Bucketpfad einzugeben, den Sie als externen Speicherort verwenden möchten.
Zum Beispiel:
abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path>oderr2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>.
Für den DBFS-Stamm:
- Das System füllt den Unterpfad zum DBFS-Stammspeicherort auf. Wenn Sie ein Arbeitsbereichsadministrator sind, erstellt das System auch die Speicheranmeldeinformationen für Sie.
Siehe Herstellen einer Verbindung mit einem externen DBFS-Stammspeicherort (Legacy).
Wählen Sie die Speicheranmeldeinformationen aus, die Zugriff auf den externen Speicherort gewähren.
Note
Wenn Ihr externer Speicherort für den DBFS-Stamm bestimmt ist und Sie ein Arbeitsbereichsadministrator sind, erstellt das System die Speicheranmeldeinformationen für Sie, und Sie müssen keins auswählen.
Wenn Sie keine Speicheranmeldedaten haben, können Sie eine erstellen.
Wählen Sie in der Dropdown-Liste Speicheranmeldeinformationen die Option + Neue Speicheranmeldeinformationen erstellen.
Die von Ihnen eingegebenen Anmeldeinformationen hängen vom Speichertyp ab:
Geben Sie für Azure Data Lake Storage die Zugriffsconnector-ID und (optional) die vom Benutzer zugewiesene verwaltete Identität ein, die Zugriff auf den Speicherort gewährt. Siehe Erstellen einer Speicheranmeldeinformation, die auf Azure Data Lake Storage zugreift
Geben Sie für Cloudflare-API-Token das Cloudflare-Konto, zugriffstasten-ID und geheimen Zugriffsschlüssel ein. Siehe Erstellen einer Speicheranmeldeinformation zum Herstellen einer Verbindung mit Cloudflare R2.
Geben Sie für AWS S3 die IAM-Rolle ARN ein, die Zugriff auf den Speicherort gewährt. Siehe Erstellen von Anmeldeinformationen für das Storage zur Verbindung mit AWS S3 (schreibgeschützt).
(Optional:) Wenn Benutzer*innen schreibgeschützten Zugriff auf den externen Speicherort haben sollen, klicken Sie auf Erweiterte Optionen, und wählen Sie Schreibgeschützt aus. Weitere Informationen finden Sie unter Markieren eines externen Speicherorts als schreibgeschützt.
Externe Speicherorte, die auf AWS S3-Pfade verweisen, sind von Natur aus schreibgeschützt.
(Optional) Wenn der externe Speicherort für einen Hive-Metaspeicher-Partnerkatalog vorgesehen ist, klicken Sie auf "Erweiterte Optionen" , und aktivieren Sie den Fallbackmodus.
(Optional, nur für AWS S3-Standorte) Wenn der S3-Bucket SSE-Verschlüsselung erfordert, können Sie einen Verschlüsselungsalgorithmus konfigurieren, damit externe Tabellen und Volumes im Unity-Katalog auf Daten in Ihrem S3-Bucket zugreifen können.
Anweisungen finden Sie unter Konfigurieren eines Verschlüsselungsalgorithmus an einem externen Standort (nur AWS S3).
(Optional) Wenn Sie die Möglichkeit zum Abonnieren von Änderungsbenachrichtigungen am externen Speicherort aktivieren möchten, klicken Sie auf "Erweiterte Optionen" , und wählen Sie " Dateiereignisse aktivieren" aus.
Ausführliche Informationen finden Sie unter (Empfohlen) Aktivieren von Dateiereignissen für einen externen Speicherort.
Klicken Sie auf "Erstellen".
(Optional) Binden des externen Speicherorts an bestimmte Arbeitsbereiche.
Standardmäßig kann jeder privilegierte Benutzer den externen Speicherort in jedem Arbeitsbereich verwenden, der an den Metastore angefügt ist. Wenn Sie den Zugriff nur aus bestimmten Arbeitsbereichen zulassen möchten, wechseln Sie zur Registerkarte Arbeitsbereiche, und weisen Sie Arbeitsbereiche zu. Siehe (Optional) Zuweisen eines externen Speicherorts zu bestimmten Arbeitsbereichen.
Wechseln Sie zur Registerkarte "Berechtigungen ", um berechtigungen für die Verwendung des externen Speicherorts zu erteilen.
Wenn eine Person den externen Speicherort verwenden soll, müssen Sie Berechtigungen erteilen:
- Um den externen Speicherort als verwalteten Speicherort für einen Metastore, einen Katalog oder ein Schema hinzuzufügen, erteilen Sie die Berechtigung
CREATE MANAGED LOCATION. - Um externe Tabellen oder Volumes zu erstellen, erteilen Sie
CREATE EXTERNAL TABLEoderCREATE EXTERNAL VOLUME.
- Klicken Sie auf Gewähren.
- Wählen Sie im Dialogfeld Erteilen für
<external location>Benutzer*innen, Gruppen oder Dienstprinzipale im Feld Prinzipale aus, und wählen Sie dann die Berechtigungen aus, die Sie erteilen möchten. - Klicken Sie auf Gewähren.
- Um den externen Speicherort als verwalteten Speicherort für einen Metastore, einen Katalog oder ein Schema hinzuzufügen, erteilen Sie die Berechtigung
Option 2: Erstellen eines externen Speicherorts mithilfe von SQL
Führen Sie zum Erstellen eines externen Speicherorts mit SQL den folgenden Befehl in einem Notebook oder dem SQL-Abfrage-Editor aus. Ersetzen Sie die folgenden Platzhalterwerte. Informationen zu den erforderlichen Berechtigungen und Voraussetzungen finden Sie unter Bevor Sie beginnen.
-
<location-name>Quelle: : Ein Name für den externen Speicherort. Wennlocation_nameSonderzeichen wie Bindestriche (-) enthält, muss es von Backticks (` `) umgeben sein. Siehe Namen.
-
<bucket-path>Quelle: : Der Pfad in Ihrem Cloud-Mandanten, auf den dieser externe Speicherort Zugriff gewährt. Zum Beispiel:abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path>oderr2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>. -
<storage-credential-name>: Der Name der Speicheranmeldeinformation, die das Lesen aus und das Schreiben in den Speichercontainer- oder Bucketpfad autorisiert. Wenn der Name der Speicheranmeldeinformationen Sonderzeichen enthält, z. B. Bindestriche (-), muss er von Backticks (` `) umgeben sein.
CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<bucket-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];
Wenn Sie den Zugriff auf externe Speicherorte auf bestimmte Arbeitsbereiche in Ihrem Konto beschränken möchten (auch Arbeitsbereichsbindung oder externe Standortisolation genannt) lesen Sie (Optional) Zuweisen eines externen Speicherorts zu bestimmten Arbeitsbereichen.
Zuweisen eines externen Speicherorts zu spezifischen Arbeitsbereichen
Standardmäßig kann auf externe Speicherorte aus allen Arbeitsbereichen im Metastore zugegriffen werden. Dies bedeutet: Wenn Benutzer*innen eine Berechtigung (z. B. READ FILES) für diese externen Speicherorte gewährt wurde, können sie diese Berechtigung von jedem Arbeitsbereich ausüben, der dem Metastore zugeordnet ist. Wenn Sie Arbeitsbereiche verwenden, um den Benutzerdatenzugriff zu isolieren, sollten Sie möglicherweise den Zugriff auf externe Speicherorte nur aus bestimmten Arbeitsbereichen zulassen. Diese Funktion wird als Arbeitsbereichsbindung oder externe Standortisolation bezeichnet.
Typische Anwendungsfälle für die Bindung eines externen Speicherorte an bestimmte Arbeitsbereiche sind:
- Sicherstellen, dass Technische Fachkräfte für Daten, die über die
CREATE EXTERNAL TABLE-Berechtigung für einen externen Speicherort, der Produktionsdaten enthält, verfügen, externe Tabellen an diesem Speicherort nur in einem Produktionsarbeitsbereich erstellen können. - Sicherstellen, dass Technische Fachkräfte für Daten, die über die
READ FILES-Berechtigung für einen externen Speicherort, der vertrauliche Daten enthält, verfügen, nur bestimmte Arbeitsbereiche verwenden können, um auf diese Daten zuzugreifen.
Weitere Informationen zum Einschränken anderer Arten des Datenzugriffs nach Arbeitsbereich finden Sie unter Einschränken des Katalogzugriffs auf bestimmte Arbeitsbereiche.
Important
Arbeitsbereichsbindungen werden an dem Punkt referenziert, an dem Berechtigungen für den externen Speicherort ausgeübt werden. Wenn ein Benutzer beispielsweise eine externe Tabelle erstellt, indem er die Anweisung CREATE TABLE myCat.mySch.myTable LOCATION 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance' aus dem Arbeitsbereich myWorkspace ausführt, werden zusätzlich zu den regulären Benutzerberechtigungsprüfungen die folgenden Arbeitsbereichsbindungsschecks durchgeführt:
- Ist der externe Speicherort, der
'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance'abdeckt, anmyWorkspacegebunden? - Ist der Katalog
myCatanmyWorkspacemit ZugriffsebeneRead & Writegebunden?
Wenn der externe Speicherort anschließend von „myWorkspace“ gelöst wird, funktioniert die externe Tabelle weiterhin.
Diese Funktion ermöglicht es Ihnen auch, einen Katalog von einem zentralen Arbeitsbereich aus aufzufüllen und ihn anderen Arbeitsbereichen mithilfe von Katalogbindungen verfügbar zu machen, ohne dass der externe Speicherort in diesen anderen Arbeitsbereichen ebenfalls verfügbar gemacht werden muss.
Wenn die serverlose Egress-Kontrolle nicht konfiguriert ist, werden externe Standortbindungen nur überprüft, wenn direkt auf den externen Speicherort verwiesen wird, z. B. in einer CREATE TABLE oder CREATE EXTERNAL TABLE Anweisung.
Wenn das Serverlose Ausgangssteuerelement konfiguriert ist, werden Bindungen auch indirekt überprüft, z. B. wenn Benutzer auf Daten in einem Katalog oder einer externen Tabelle zugreifen, die von diesem externen Speicherort abhängig ist. In diesem Fall müssen die externen Speicherortbindungen entweder mit den Katalogbindungen übereinstimmen oder deaktiviert werden, indem auf dem externen Speicherort die Option "Alle Arbeitsbereiche haben Zugriff" ausgewählt oder die Einstellung von isolation-mode zu OPEN geändert wird.
Binden Sie einen externen Speicherort an einen oder mehrere Arbeitsbereiche
Um einen externen Speicherort bestimmten Arbeitsbereichen zuzuweisen, können Sie den Katalog-Explorer oder die Databricks CLI verwenden.
Erforderliche Berechtigungen: Metastore-Administrator, besitzer des externen Speicherorts oder MANAGE am externen Speicherort.
Note
Metastore-Administrator*innen können alle externen Speicherorte in einem Metastore mithilfe des Katalog-Explorers anzeigen. Besitzer*innen externer Speicherorte können alle externen Speicherorte sehen, die sie in einem Metastore besitzen, unabhängig davon, ob der externe Speicherort dem aktuellen Arbeitsbereich zugewiesen ist. Externe Speicherorte, die dem Arbeitsbereich nicht zugewiesen sind, werden ausgegraut angezeigt.
Katalog-Explorer
Melden Sie sich bei einem Arbeitsbereich an, der mit dem Metastore verknüpft ist.
Klicken Sie in der Randleiste auf das
Katalog.
Klicken Sie auf die Schaltfläche "Externe Daten > ", um zur Registerkarte "Externe Speicherorte " zu wechseln.
Wählen Sie den externen Speicherort aus, und wechseln Sie zur Registerkarte Arbeitsbereiche.
Deaktivieren Sie auf der Registerkarte Arbeitsbereiche das Kontrollkästchen Alle Arbeitsbereiche haben Zugriff.
Wenn Ihr externer Speicherort bereits an einen oder mehrere Arbeitsbereiche gebunden ist, ist dieses Kontrollkästchen bereits deaktiviert.
Klicken Sie auf Arbeitsbereichen zuordnen und geben Sie die Arbeitsbereiche ein, die Sie zuordnen möchten, oder suchen Sie diese.
Um den Zugriff zu widerrufen, wechseln Sie zur Registerkarte Arbeitsbereiche, wählen Sie den Arbeitsbereich aus, und klicken Sie auf Widerrufen. Um den Zugriff von allen Arbeitsbereichen zuzulassen, aktivieren Sie das Kontrollkästchen Alle Arbeitsbereiche haben Zugriff.
CLI
Es gibt zwei CLI-Befehlsgruppen für Databricks und zwei Schritte, die zum Zuweisen eines externen Speicherorts zu einem Arbeitsbereich erforderlich sind.
In den folgenden Beispielen, ersetzen Sie <profile-name> mit dem Namen Ihres Azure Databricks-Authentifizierungskonfigurationsprofils. Sie sollte den Wert eines persönlichen Zugriffstokens zusätzlich zu dem Arbeitsbereichsinstanznamen und der Arbeitsbereichs-ID des Arbeitsbereichs enthalten, in dem Sie das persönliche Zugriffstoken generiert haben. Siehe Authentifizierung für persönliche Zugriffstoken (veraltet).
Verwenden Sie den Befehl der Befehlsgruppe
external-locationsupdate, um den externen Speicherortisolation modeaufISOLATEDfestzulegen.databricks external-locations update <my-location> \ --isolation-mode ISOLATED \ --profile <profile-name>Die
isolation-mode-Standardeinstellung istOPENfür alle Arbeitsbereiche, die an den Metastore angefügt sind.Verwenden Sie den
workspace-bindings-Befehl der Gruppeupdate-bindings, um die Arbeitsbereiche dem externen Speicherort zuzuweisen:databricks workspace-bindings update-bindings external-location <my-location> \ --json '{ "add": [{"workspace_id": <workspace-id>}...], "remove": [{"workspace_id": <workspace-id>}...] }' --profile <profile-name>Verwenden Sie die Eigenschaften
"add"und"remove", um Arbeitsbereichsbindungen hinzuzufügen oder zu entfernen.Note
Schreibgeschützte Bindung (
BINDING_TYPE_READ_ONLY) ist für externe Speicherorte nicht verfügbar. Daher gibt es keinen Grund,binding_typefür die Bindung externer Speicherorte festzulegen.
Wenn Sie alle Arbeitsbereichszuweisungen für einen externen Speicherort auflisten möchten, verwenden Sie den Befehl der workspace-bindings Befehlsgruppe get-bindings :
databricks workspace-bindings get-bindings external-location <my-location> \
--profile <profile-name>
Siehe auch Arbeitsbereichsbindungen in der REST-API-Referenz.
Herauslösen eines externen Speicherorts aus einem Arbeitsbereich
Anweisungen zum Widerrufen des Arbeitsbereichszugriffs auf externe Speicherorte mithilfe des Katalog-Explorers oder der workspace-bindings CLI-Befehlsgruppe sind in Binden von externen Speicherorten an einen oder mehrere Arbeitsbereiche enthalten.
Nächste Schritte
- Erteilen Sie anderen Benutzern die Berechtigung, externe Speicherorte zu verwenden. Siehe Verwalten externer Speicherorte.
- Definieren Sie verwaltete Speicherorte mithilfe externer Speicherorte. Weitere Informationen finden Sie unter Angeben eines verwalteten Speicherorts in Unity Catalog.
- Definieren Sie externe Tabellen mithilfe externer Speicherorte. Weitere Informationen finden Sie unter Verwenden verwalteter Tabellen.
- Definieren Sie externe Volumes mithilfe externer Speicherorte. Siehe Was sind Unity Catalog-Volumes?.