Dela via


Vad är Unity Catalog-volymer?

Volymer är Unity Catalog-objekt som möjliggör styrning över datauppsättningar som inte är tabellbaserade. Volymer representerar en logisk lagringsvolym på en lagringsplats för molnobjekt. Volymer ger funktioner för åtkomst, lagring, styrning och organisering av filer.

Tabeller ger styrning över tabelldatauppsättningar, men volymer lägger till styrning över datauppsättningar som inte är tabellbaserade. Du kan använda volymer för att lagra och komma åt filer i valfritt format, inklusive strukturerade, halvstrukturerade och ostrukturerade data.

Databricks rekommenderar att du använder volymer för att styra åtkomsten till alla icke-tabelldata. Precis som tabeller kan volymer hanteras eller externa.

Viktigt!

Du kan inte använda volymer som en plats för tabeller. Volymer är endast avsedda för sökvägsbaserad dataåtkomst. Använd tabeller när du vill arbeta med tabelldata i Unity Catalog.

Följande artiklar innehåller mer information om hur du arbetar med volymer:

Kommentar

När du arbetar med volymer måste du använda ett SQL-lager eller ett kluster som kör Databricks Runtime 13.3 LTS eller senare, såvida du inte använder Azure Databricks UIs som Catalog Explorer.

Vad är en hanterad volym?

En hanterad volym är en Unity Catalog-styrd lagringsvolym som skapats på den hanterade lagringsplatsen för det innehållande schemat. Se Ange en hanterad lagringsplats i Unity Catalog.

Hanterade volymer gör det möjligt att skapa styrd lagring för att arbeta med filer utan kostnader för externa platser och autentiseringsuppgifter för lagring. Du behöver inte ange någon plats när du skapar en hanterad volym, och all filåtkomst för data i hanterade volymer sker via sökvägar som hanteras av Unity Catalog.

Vad är en extern volym?

En extern volym är en Unity Catalog-styrd lagringsvolym som registrerats mot en katalog på en extern plats med autentiseringsuppgifter för Unity Catalog-styrd lagring.

Unity Catalog hanterar inte livscykeln och layouten för filerna i externa volymer. När du släpper en extern volym tar Unity Catalog inte bort underliggande data.

Vilken sökväg används för att komma åt filer i en volym?

Volymer finns på den tredje nivån i Unity Catalog-namnområdet på tre nivåer (catalog.schema.volume):

Objektmodelldiagram för Unity Catalog, fokuserat på volym

Sökvägen till volymer är densamma oavsett om du använder Apache Spark, SQL, Python eller andra språk och bibliotek. Detta skiljer sig från äldre åtkomstmönster för filer i objektlagring som är bundna till en Azure Databricks-arbetsyta.

Sökvägen för att komma åt filer i volymer använder följande format:

/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

Azure Databricks stöder också ett valfritt dbfs:/ schema när du arbetar med Apache Spark, så följande sökväg fungerar också:

dbfs:/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

Sekvensen /<catalog>/<schema>/<volume> i sökvägen motsvarar de tre Unity Catalog-objektnamnen som är associerade med filen. Dessa sökvägselement är skrivskyddade och kan inte skrivas direkt av användare, vilket innebär att det inte går att skapa eller ta bort dessa kataloger med hjälp av filsystemsåtgärder. De hanteras automatiskt och synkroniseras med motsvarande Unity Catalog-entiteter.

Kommentar

Du kan också komma åt data i externa volymer med hjälp av URI:er för molnlagring.

Exempel på notebook-fil: Skapa och arbeta med volymer

Följande notebook-fil visar den grundläggande SQL-syntaxen för att skapa och interagera med Unity Catalog-volymer.

Självstudie: Notebook-fil för Unity Catalog-volymer

Hämta notebook-fil

Reserverade sökvägar för volymer

Volymer introducerar följande reserverade sökvägar som används för att komma åt volymer:

  • dbfs:/Volumes
  • /Volumes

Kommentar

Sökvägar är också reserverade för potentiella stavfel för dessa sökvägar från Apache Spark-API:er och dbutils, inklusive /volumes, /Volume, /volume, oavsett om de föregås av dbfs:/. Sökvägen /dbfs/Volumes är också reserverad, men kan inte användas för att komma åt volymer.

Volymer stöds endast på Databricks Runtime 13.3 LTS och senare. I Databricks Runtime 12.2 LTS och nedan kan åtgärder mot /Volumes sökvägar lyckas, men kan skriva data till tillfälliga lagringsdiskar som är anslutna till beräkningskluster i stället för att spara data till Unity Catalog-volymer som förväntat.

Viktigt!

Om du har befintliga data lagrade i en reserverad sökväg i DBFS-roten kan du skicka ett supportärende för att få tillfällig åtkomst till dessa data för att flytta dem till en annan plats.

Begränsningar

Du måste använda Unity Catalog-aktiverad beräkning för att interagera med Unity Catalog-volymer. Volymer stöder inte alla arbetsbelastningar.

Kommentar

Volymer stöder dbutils.fs inte kommandon som distribueras till köre.

Följande begränsningar gäller:

I Databricks Runtime 14.3 LTS och senare:

  • I enanvändarkluster kan du inte komma åt volymer från trådar och underprocesser i Scala.

I Databricks Runtime 14.2 och nedan:

  • Vid beräkning som konfigurerats med läget för delad åtkomst kan du inte använda UDF:er för att komma åt volymer.
    • Både Python eller Scala har åtkomst till FUSE från drivrutinen men inte från exekutorer.
    • Scala-kod som utför I/O-åtgärder kan köras på drivrutinen men inte körarna.
  • Vid beräkning som konfigurerats med åtkomstläge för en användare finns det inget stöd för FUSE i Scala, Scala IO-kod som kommer åt data med hjälp av volymsökvägar eller Scala UDF:er. Python-UDF:er stöds i enanvändarläge.

På alla Databricks Runtime-versioner som stöds:

  • UDF:er för Unity-katalogen stöder inte åtkomst till volymfilsökvägar.

  • Du kan inte komma åt volymer från RDD:er.

  • Du kan inte använda spark-submit med JAR:er som lagras i en volym.

  • Du kan inte definiera beroenden till andra bibliotek som nås via volymsökvägar i ett hjul eller en JAR-fil.

  • Du kan inte lista Unity Catalog-objekt med hjälp av /Volumes/<catalog-name> eller /Volumes/<catalog-name>/<schema-name> mönster. Du måste använda en fullständigt kvalificerad sökväg som innehåller ett volymnamn.

  • DBFS-slutpunkten för REST API stöder inte volymsökvägar.

  • Du kan inte ange volymer som mål för klusterloggleverans.

  • %sh mv stöds inte för att flytta filer mellan volymer. Använd dbutils.fs.mv eller %sh cp i stället.

  • Du kan inte skapa ett anpassat Hadoop-filsystem med volymer, vilket innebär att följande inte stöds:

    import org.apache.hadoop.fs.Path
    val path =  new Path("dbfs:/Volumes/main/default/test-volume/file.txt")
    val fs = path.getFileSystem(sc.hadoopConfiguration)
    fs.listStatus(path)
    
  • Volymer är inte tillgängliga i Azure Government-regioner eller arbetsytor med FedRAMP-efterlevnad.

  • Du måste använda sökvägsformatet med ett dbfs:/ schema i konfigurationspanelen för Azure Data Factory-biblioteket. Exempel: dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file