Aanbevolen procedures voor DBFS en Unity Catalog
Unity Catalog introduceert een aantal nieuwe configuraties en concepten die gegevensbeheer volledig anders benaderen dan DBFS. In dit artikel worden verschillende aanbevolen procedures beschreven voor het werken met externe locaties van Unity Catalog en DBFS.
Databricks raadt aan om DBFS en gekoppelde cloudobjectopslag te gebruiken voor de meeste gebruiksvoorbeelden in Azure Databricks-werkruimten met Unity Catalog. In dit artikel worden enkele scenario's beschreven waarin u gekoppelde cloudobjectopslag moet gebruiken. Databricks raadt het gebruik van de DBFS-hoofdmap niet aan in combinatie met Unity Catalog, tenzij u bestanden of gegevens die daar zijn opgeslagen, moet migreren naar Unity Catalog.
Hoe wordt DBFS gebruikt in werkruimten met Unity Catalog?
Acties die worden uitgevoerd op tabellen in de hive_metastore
verouderde patronen voor gegevenstoegang, waaronder mogelijk gegevens en opslagreferenties die worden beheerd door DBFS. Beheerde tabellen in het werkruimtebereik hive_metastore
worden opgeslagen in de DBFS-hoofdmap.
Hoe werkt DBFS in de modus voor toegang tot één gebruiker?
Clusters die zijn geconfigureerd met de modus voor toegang van één gebruiker, hebben volledige toegang tot DBFS, inclusief alle bestanden in de DBFS-hoofdmap en gekoppelde gegevens.
Hoe werkt DBFS in de modus voor gedeelde toegang?
De modus voor gedeelde toegang combineert Unity Catalog-gegevensbeheer met verouderde Azure Databricks-tabel-ACL's. Toegang tot gegevens in de gegevens hive_metastore
is alleen beschikbaar voor gebruikers die expliciet machtigingen hebben.
Als u rechtstreeks met DBFS wilt werken met bestanden, moet u machtigingen hebben ANY FILE
verleend. Omdat ANY FILE
gebruikers verouderde tabellen ACL's kunnen omzeilen in de hive_metastore
database en toegang kunnen krijgen tot alle gegevens die worden beheerd door DBFS, raadt Databricks aan om voorzichtig te zijn bij het verlenen van deze bevoegdheid.
DBFS niet gebruiken met externe locaties van Unity Catalog
Unity Catalog beveiligt de toegang tot gegevens op externe locaties met behulp van volledige cloud-URI-paden om subsidies te identificeren voor beheerde objectopslagmappen. DBFS-koppelingen maken gebruik van een volledig ander gegevenstoegangsmodel waarmee Unity Catalog volledig wordt overgeslagen. Databricks raadt u aan om cloudobjectopslagvolumes tussen DBFS-koppels en UC-externe volumes niet opnieuw te gebruiken, inclusief bij het delen van gegevens in werkruimten of accounts.
Uw door de Unity-catalogus beheerde opslag beveiligen
Unity Catalog met beheerde opslaglocaties voor het opslaan van gegevensbestanden voor beheerde tabellen en volumes.
Databricks raadt het volgende aan voor beheerde opslaglocaties:
- Gebruik nieuwe opslagaccounts of buckets.
- Definieer een aangepast identiteitsbeleid voor Unity Catalog.
- Beperk alle toegang tot Azure Databricks die wordt beheerd door Unity Catalog.
- Alle toegang tot identiteitstoegangsbeleid beperken dat is gemaakt voor Unity Catalog.
Bestaande gegevens toevoegen aan externe locaties
Het is mogelijk om bestaande opslagaccounts in Unity Catalog te laden met behulp van externe locaties. Voor de beste beveiliging raadt Databricks aan om alleen opslagaccounts naar externe locaties te laden nadat alle andere opslagreferenties en toegangspatronen zijn in gebruik.
U moet nooit een opslagaccount laden dat wordt gebruikt als dbFS-hoofdmap als een externe locatie in Unity Catalog.
Clusterconfiguraties worden genegeerd door toegang tot het Bestandssysteem van Unity Catalog
Unity Catalog respecteert geen clusterconfiguraties voor bestandssysteeminstellingen. Dit betekent dat Hadoop-bestandssysteeminstellingen voor het configureren van aangepast gedrag met cloudobjectopslag niet werken bij het openen van gegevens met behulp van Unity Catalog.
Beperking rond toegang tot meerdere paden
Hoewel u in het algemeen Unity Catalog en DBFS samen kunt gebruiken, kunnen paden die gelijk zijn aan een bovenliggende/onderliggende relatie, niet worden verwezen in dezelfde opdracht of notebookcel met behulp van verschillende toegangsmethoden.
Als er bijvoorbeeld een externe tabel foo
is gedefinieerd op de hive_metastore
locatie a/b/c
en een externe locatie is gedefinieerd in Unity Catalog op a/b/
, treedt met de volgende code een fout op:
spark.read.table("foo").filter("id IS NOT NULL").write.mode("overwrite").save("a/b/c")
Deze fout treedt niet op als deze logica in twee cellen is onderverdeeld:
df = spark.read.table("foo").filter("id IS NOT NULL")
df.write.mode("overwrite").save("a/b/c")