Bewährte Methoden für DBFS und Unity-Katalog
Unity Catalog führt eine Reihe neuer Konfigurationen und Konzepte ein, die datengovernance völlig anders als DBFS angehen. In diesem Artikel werden mehrere bewährte Methoden für die Arbeit mit externen Speicherorten des Unity-Katalogs und DBFS beschrieben.
Databricks rät von der Verwendung von DBFS und montiertem Cloud-Objektspeicher für die meisten Anwendungsfälle in Unity-Katalog-aktivierten Azure Databricks-Arbeitsbereichen ab. In diesem Artikel werden einige Szenarien beschrieben, in denen Sie den bereitgestellten Cloudobjektspeicher verwenden sollten. Beachten Sie, dass Databricks nicht die Verwendung des DBFS-Stamms in Verbindung mit Dem Unity-Katalog empfiehlt, es sei denn, Sie müssen Dateien oder Daten migrieren, die dort im Unity-Katalog gespeichert sind.
Wie werden DBFS in Unity Catalog-fähigen Arbeitsbereichen verwendet?
Aktionen, die gegen Tabellen in der hive_metastore
durchgeführt werden, verwenden ältere Datenzugriffsmuster, die möglicherweise Daten und Speicheranmeldeinformationen einschließen, die von DBFS verwaltet werden. Verwaltete Tabellen im für den Arbeitsbereich geltenden hive_metastore
werden im DBFS-Stamm gespeichert.
Wie funktioniert DBFS im Einzelbenutzerzugriffsmodus?
Cluster, die mit dem Einzelbenutzerzugriffsmodus konfiguriert sind, haben vollzugriff auf DBFS, einschließlich aller Dateien im DBFS-Stamm und bereitgestellten Daten.
Wie funktioniert DBFS im Modus für gemeinsam genutzten Zugriff?
Der Modus für den gemeinsamen Zugriff kombiniert Unity Catalog Data Governance mit Azure Databricks legacy table ACLs. Der Zugriff auf Daten in der hive_metastore
ist nur für Benutzer verfügbar, die explizit Berechtigungen erteilt haben.
Um mit Dateien direkt mit DBFS zu interagieren, müssen Sie über ANY FILE
Berechtigungen verfügen. Da ANY FILE
Es Benutzern ermöglicht, acLs aus älteren Tabellen im hive_metastore
zu umgehen und auf alle von DBFS verwalteten Daten zuzugreifen, empfiehlt Databricks beim Erteilen dieser Berechtigung Vorsicht.
DBFS nicht mit externen Unity Catalog-Speicherorten verwenden
Unity Catalog sichert den Zugriff auf Daten an externen Speicherorten, indem vollständige Cloud-URI-Pfade verwendet werden, um Berechtigungen für verwaltete Objektspeicherverzeichnisse zu identifizieren. DBFS-Bereitstellungen verwenden ein völlig anderes Datenzugriffsmodell, das Unity Catalog vollständig umgeht. Databricks empfiehlt, Cloudobjektspeichervolumes zwischen DBFS-Bereitstellungen und UC-externen Volumes nicht wiederzuverwenden, auch nicht bei der arbeitsbereichs- oder kontenübergreifenden Freigabe von Daten.
Sichern des vom Unity-Katalog verwalteten Speichers
Unity-Katalog mit verwalteten Speicherorten zum Speichern von Datendateien für verwaltete Tabellen und Volumes.
Databricks empfiehlt Folgendes für verwaltete Speicherorte:
- Verwenden Sie neue Speicherkonten oder Buckets.
- Definieren Sie eine benutzerdefinierte Identitätsrichtlinie für den Unity-Katalog.
- Beschränken Sie den gesamten Zugriff auf Azure Databricks, die vom Unity-Katalog verwaltet werden.
- Beschränken Sie den gesamten Zugriff auf Identitätszugriffsrichtlinien, die für den Unity-Katalog erstellt wurden.
Hinzufügen vorhandener Daten zu externen Speicherorten
Es ist möglich, vorhandene Speicherkonten mithilfe externer Speicherorte in den Unity-Katalog zu laden. Für größtmögliche Sicherheit empfiehlt Databricks, Speicherkonten nur an externe Speicherorte zu laden, nachdem alle anderen Speicheranmeldeinformationen und Zugriffsmuster widerrufen wurden.
Sie sollten niemals ein Speicherkonto laden, das als DBFS-Stamm als externer Speicherort im Unity-Katalog verwendet wird.
Clusterkonfigurationen werden von Unity Catalog-Dateisystemzugriff ignoriert.
Der Unity-Katalog berücksichtigt keine Clusterkonfigurationen für Dateisystemeinstellungen. Dies bedeutet, dass Hadoop-Dateisystemeinstellungen zum Konfigurieren des benutzerdefinierten Verhaltens mit Cloudobjektspeicher nicht funktionieren, wenn sie mithilfe des Unity-Katalogs auf Daten zugreifen.
Einschränkung für den Zugriff auf mehrere Pfade
Generell können Sie Unity Catalog und DBFS zusammen verwenden, jedoch dürfen Pfade, die gleich sind oder eine übergeordnete/untergeordnete Beziehung haben, nicht in derselben Befehls- oder Notebookzelle mit unterschiedlichen Zugriffsmethoden verwendet werden.
Wenn beispielsweise eine externe Tabelle foo
in der hive_metastore
an Position a/b/c
definiert ist und ein externer Speicherort im Unity-Katalog auf a/b/
definiert ist, würde der folgende Code einen Fehler auslösen:
spark.read.table("foo").filter("id IS NOT NULL").write.mode("overwrite").save("a/b/c")
Dieser Fehler tritt nicht auf, wenn diese Logik in zwei Zellen unterteilt ist:
df = spark.read.table("foo").filter("id IS NOT NULL")
df.write.mode("overwrite").save("a/b/c")