Skapa och arbeta med volymer

Den här artikeln introducerar volymer, som är Unity Catalog-objekt som möjliggör styrning över datauppsättningar som inte är tabellbaserade. Den beskriver också hur du skapar, hanterar och arbetar med volymer.

Mer information om hur du laddar upp och hanterar filer i volymer finns i Ladda upp filer till en Unity Catalog-volym och Filhanteringsåtgärder för Unity Catalog-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 Unity Catalog-volymer?

Volymer är Unity Catalog-objekt som 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.

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 för att lagra tabelldata med Unity Catalog.

Vad är en hanterad volym?

En hanterad volym är en Unity Catalog-styrd lagringsvolym som skapats inom standardlagringsplatsen för det innehållande schemat. 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. Se Vilken sökväg används för att komma åt filer i en volym?.

När du tar bort en hanterad volym tas även filerna som lagras i den här volymen bort från molnklientorganisationen inom 30 dagar.

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. Med externa volymer kan du lägga till datastyrning i Unity Catalog till befintliga lagringskataloger för molnobjekt. Några användningsfall för externa volymer är följande:

  • Lägga till styrning till datafiler utan migrering.
  • Styr filer som skapats av andra system som måste matas in eller nås av Azure Databricks.
  • Styra data som produceras av Azure Databricks som måste nås direkt från molnobjektlagring av andra system.

Externa volymer måste vara kataloger på externa platser som styrs av autentiseringsuppgifter för Unity Catalog-lagring. Unity Catalog hanterar inte livscykeln eller layouten för filerna i externa volymer. När du släpper en extern volym tar Unity Catalog inte bort underliggande data.

Kommentar

När du definierar en volym styrs moln-URI-åtkomst till data under volymsökvägen av volymens behörigheter.

Vilken sökväg används för att komma åt filer i en 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 hålls synkroniserade med motsvarande UC-entiteter.

Kommentar

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

Vilka är behörigheterna för volymer?

Volymer använder samma grundläggande behörighetsmodell som tabeller, men där behörigheter för tabeller fokuserar på att ge åtkomst till frågor och manipulera rader i en tabell fokuserar behörigheter för volymer på att arbeta med filer. Därför medför volymer följande behörigheter:

Se Behörigheter och skyddsbara objekt i Unity Catalog.

Vem kan hantera volymbehörigheter?

Du måste ha ägarbehörigheter på en volym för att hantera volymbehörigheter eller släppa volymer. Varje objekt i Unity Catalog kan bara ha ett huvudnamn tilldelat som ägare, och även om ägarskapet inte överlappar (dvs. ägaren av en katalog blir inte automatiskt ägare till alla objekt i katalogen), gäller behörigheterna som är associerade med ägarskap för alla objekt som ingår i ett objekt.

Det innebär att för Unity Catalog-volymer kan följande huvudnamn hantera volymprivilegier:

  • Ägaren till den överordnade katalogen.
  • Ägaren till det överordnade schemat.
  • Volymens ägare.

Även om varje objekt bara kan ha en enda ägare rekommenderar Databricks att du tilldelar ägarskap för de flesta objekt till en grupp i stället för en enskild användare. Det initiala ägarskapet för alla objekt tilldelas till den användare som skapar objektet. Se Hantera objektägarskap för Unity Catalog.

Skapa en hanterad volym

Du måste ha följande behörigheter för att skapa en hanterad volym:

Resurs Behörigheter som krävs
Schema USE SCHEMA, CREATE VOLUME
Katalog USE CATALOG

SQL

Om du vill skapa en hanterad volym använder du följande syntax:

CREATE VOLUME <catalog>.<schema>.<volume-name>;

Katalogutforskaren

Så här skapar du en hanterad volym i Catalog Explorer:

  1. På din Azure Databricks-arbetsyta klickar du på KatalogikonKatalog.
  2. Sök eller bläddra efter det schema som du vill lägga till volymen i och välj den.
  3. Klicka på knappen Skapa volym . (Du måste ha tillräcklig behörighet.)
  4. Ange ett namn på volymen.
  5. Ange en kommentar (valfritt).
  6. Klicka på Skapa.

Skapa en extern volym

Du måste ha följande behörigheter för att skapa en extern volym:

Resurs Behörigheter som krävs
Extern plats CREATE EXTERNAL VOLUME
Schema USE SCHEMA, CREATE VOLUME
Katalog USE CATALOG

SQL

Om du vill skapa en extern volym anger du en sökväg på en extern plats med hjälp av följande syntax:

CREATE EXTERNAL VOLUME <catalog>.<schema>.<external-volume-name>
LOCATION 'abfss://<container-name>@<storage-account>.dfs.core.windows.net/<path>/<directory>';

Katalogutforskaren

Så här skapar du en extern volym i Catalog Explorer:

  1. På din Azure Databricks-arbetsyta klickar du på KatalogikonKatalog.
  2. Sök eller bläddra efter det schema som du vill lägga till volymen i och välj den.
  3. Klicka på knappen Skapa volym . (Du måste ha tillräcklig behörighet.)
  4. Ange ett namn på volymen.
  5. Välj en extern plats där volymen ska skapas.
  6. Redigera sökvägen för att återspegla den underkatalog där du vill skapa volymen.
  7. Ange en kommentar (valfritt).
  8. Klicka på Skapa.

Släppa en volym

Endast användare med ägarbehörighet kan släppa en volym. Se Vem kan hantera volymbehörigheter?.

Använd följande syntax för att släppa en volym:

DROP VOLUME IF EXISTS <volume-name>;

När du släpper en hanterad volym tar Azure Databricks bort underliggande data inom 30 dagar. När du släpper en extern volym tar du bort volymen från Unity Catalog, men underliggande data förblir oförändrade på den externa platsen.

Läsa filer på en volym

Du måste ha följande behörigheter för att visa innehållet i en volym eller åtkomst till filer som lagras på volymer:

Resurs Behörigheter som krävs
Volume READ
Schema USE SCHEMA
Katalog USE CATALOG

Du interagerar med innehållet i volymer med hjälp av sökvägar. Se Vilken sökväg används för att komma åt filer i en volym?.

Skapa, ta bort och utföra andra filhanteringsåtgärder på en volym

Du måste ha följande behörigheter för att utföra filhanteringsåtgärder på filer som lagras på volymer:

Resurs Behörigheter som krävs
Volume READ, WRITE
Schema USE SCHEMA
Katalog USE CATALOG

Du kan utföra filhanteringsåtgärder på volymer med följande verktyg:

Fullständig information om hur du interagerar programmatiskt med filer på volymer finns i Arbeta med filer i Unity Catalog-volymer.

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 en Wheel- eller 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.

  • Volymer undantas från globala sökresultat på Azure Databricks-arbetsytan.

  • 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