Sdílet prostřednictvím


Interakce se soubory pracovního prostoru prostřednictvím kódu programu

S pracovními soubory uloženými v Azure Databricks můžete pracovat programově. To umožňuje úlohy, jako jsou:

  • Ukládání malých datových souborů spolu s poznámkovými bloky a kódem
  • Zápis souborů protokolu do adresářů synchronizovaných s Gitem
  • Import modulů pomocí relativních cest
  • Vytvoření nebo úprava souboru specifikace prostředí
  • Zápis výstupu z poznámkových bloků
  • Zápis výstupu ze spouštění knihoven, jako je Tensorboard.

Soubory pracovního prostoru můžete vytvářet, upravovat, přejmenovat a odstraňovat prostřednictvím kódu programu v Databricks Runtime 11.3 LTS a novějších. Tato funkce je podporována pro poznámkové bloky v Databricks Runtime 16.2 a novějších a v bezserverových prostředích 2 a novějších.

Poznámka

Pokud chcete zakázat zápis do souborů pracovního prostoru, nastavte proměnnou prostředí clusteru WSFS_ENABLE_WRITE_SUPPORT=false. Další informace naleznete v tématu Proměnné prostředí.

Poznámka

Ve službě Databricks Runtime 14.0 a vyšší je výchozí aktuální pracovní adresář (CWD) pro kód spuštěný místně, je adresář obsahující spuštěný poznámkový blok nebo skript. Jedná se o změnu chování z Databricks Runtime 13.3 LTS a níže. Viz Co je výchozí aktuální pracovní adresář?.

Přečíst umístění souborů

Příkazy shellu slouží ke čtení umístění souborů, například v úložišti nebo v místním systému souborů.

Pokud chcete určit umístění souborů, zadejte následující:

%sh ls
  • Soubory nejsou v úložišti: Příkaz vrátí systém /databricks/driversouborů .
  • Soubory jsou v úložišti: Příkaz vrátí virtualizované úložiště, například /Workspace/Repos/name@domain.com/public_repo_2/repos_file_system.

Čtení souborů pracovního prostoru dat

Malé datové soubory, jako jsou soubory .csv nebo .json, můžete programově načíst z kódu v poznámkových blocích. Následující příklad používá Pandas k dotazování souborů uložených v adresáři /data vzhledem ke kořenovému adresáři úložiště projektu:

import pandas as pd
df = pd.read_csv("./data/winequality-red.csv")
df

Spark můžete použít ke čtení datových souborů. Musíte poskytnout Sparku plně kvalifikovanou cestu.

  • Soubory pracovního prostoru ve složkách Gitu používají cestu file:/Workspace/Repos/<user-folder>/<repo-name>/path/to/file.
  • Soubory pracovního prostoru ve vašem osobním adresáři používají cestu: file:/Workspace/Users/<user-folder>/path/to/file.

Absolutní nebo relativní cestu k souboru můžete zkopírovat z rozevírací nabídky vedle souboru:

rozevírací nabídka souboru

Následující příklad ukazuje použití {os.getcwd()} k získání úplné cesty.

import os
spark.read.format("csv").load(f"file:{os.getcwd()}/my_data.csv")

Poznámka

V pracovních prostorech, kde jsou zakázány kořenové a připojené soubory DBFS, můžete také použít dbfs:/Workspace pro přístup k souborům pracovního prostoru pomocí nástrojů Databricks. To vyžaduje Databricks Runtime 13.3 LTS nebo vyšší. Viz Zakázání přístupu ke kořenovému adresáři DBFS a připojení v existujícím pracovním prostoru Azure Databricks.

Další informace o souborech v Azure Databricks najdete v tématu Práce se soubory v azure Databricks.

Vytváření, aktualizace a odstraňování souborů a adresářů prostřednictvím kódu programu

Soubory pracovního prostoru v Azure Databricks můžete manipulovat prostřednictvím kódu programu podobně jako se soubory v libovolném standardním systému souborů.

Poznámka

Ve verzích Databricks Runtime 16.2 a novějších a bezserverových prostředích 2 a novějších jsou pro poznámkové bloky k dispozici všechny programové interakce se soubory. Informace o převodu souboru na poznámkový blok najdete v tématu Převod souboru do poznámkového bloku.

Následující příklady používají standardní balíčky a funkce Pythonu k vytváření a manipulaci se soubory a adresáři.

import os

# Create a new directory

os.mkdir('dir1')

# Create a new file and write to it

with open('dir1/new_file.txt', "w") as f:
    f.write("new content")

# Append to a file

with open('dir1/new_file.txt', "a") as f:
    f.write(" continued")

# Delete a file

os.remove('dir1/new_file.txt')

# Delete a directory

os.rmdir('dir1')
import shutil

# Copy a dashboard

shutil.copy("my-dashboard.lvdash.json", "my-dashboard-copy.lvdash.json")

# Move a query to a shared folder

shutil.move("test-query.dbquery","shared-queries/")