Freigeben über


Erstellen eines externen Speicherorts zum Verbinden des Cloudspeichers mit Azure Databricks

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.

Beziehung zwischen Speicheranmeldeinformationen, externen Speicherorten und Cloudspeicher

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:

  1. Katalog-Explorer

    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)

  2. SQL-Befehle in einem Notizbuch oder databricks SQL-Abfrage

  3. The Databricks CLI

  4. Terraform

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–zZiffern 0–9und allgemeine Symbole wie /, , _) -enthalten.

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 LOCATION besitzen. Metastore-Administratoren haben standardmäßig die Berechtigung CREATE EXTERNAL LOCATION im 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

  1. Melden Sie sich bei einem Arbeitsbereich an, der dem Metastore angefügt ist.

  2. Klicken Sie in der Randleiste auf das Datensymbol.Katalog.

  3. Klicken Sie auf die Schaltfläche "Externe Daten > ", wechseln Sie zur Registerkarte "Externe Speicherorte ", und klicken Sie auf " Speicherort erstellen".

  4. Geben Sie den Namen des externen Speicherorts ein.

  5. 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).

  6. 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> oder r2://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).

  7. 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.

    1. Wählen Sie in der Dropdown-Liste Speicheranmeldeinformationen die Option + Neue Speicheranmeldeinformationen erstellen.

    2. 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).

  8. (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.

  9. (Optional) Wenn der externe Speicherort für einen Hive-Metaspeicher-Partnerkatalog vorgesehen ist, klicken Sie auf "Erweiterte Optionen" , und aktivieren Sie den Fallbackmodus.

    Siehe Fallbackmodus an externen Standorten aktivieren.

  10. (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).

  11. (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.

  12. Klicken Sie auf "Erstellen".

  13. (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.

  14. 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 TABLE oder CREATE EXTERNAL VOLUME.
    1. Klicken Sie auf Gewähren.
    2. 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.
    3. Klicken Sie auf Gewähren.

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. Wenn location_name Sonderzeichen 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> oder r2://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, an myWorkspace gebunden?
  • Ist der Katalog myCat an myWorkspace mit Zugriffsebene Read & Write gebunden?

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

  1. Melden Sie sich bei einem Arbeitsbereich an, der mit dem Metastore verknüpft ist.

  2. Klicken Sie in der Randleiste auf das Datensymbol.Katalog.

  3. Klicken Sie auf die Schaltfläche "Externe Daten > ", um zur Registerkarte "Externe Speicherorte " zu wechseln.

  4. Wählen Sie den externen Speicherort aus, und wechseln Sie zur Registerkarte Arbeitsbereiche.

  5. 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.

  6. 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).

  1. Verwenden Sie den Befehl der Befehlsgruppe external-locationsupdate, um den externen Speicherort isolation mode auf ISOLATED festzulegen.

    databricks external-locations update <my-location> \
    --isolation-mode ISOLATED \
    --profile <profile-name>
    

    Die isolation-mode-Standardeinstellung ist OPEN für alle Arbeitsbereiche, die an den Metastore angefügt sind.

  2. Verwenden Sie den workspace-bindings-Befehl der Gruppe update-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_type fü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