Поделиться через


Программное взаимодействие с файлами рабочей области

Вы можете взаимодействовать с файлами рабочей области, хранящимися в Azure Databricks программным способом. Это позволяет выполнять такие задачи, как:

  • Хранение небольших файлов данных вместе с записными книжками и кодом.
  • Запись файлов журналов в каталоги, синхронизированные с Git.
  • Импорт модулей с помощью относительных путей.
  • Создание или изменение файла спецификации среды.
  • Запись выходных данных из записных книжек.
  • Запись результатов выполнения таких библиотек, как Tensorboard.

Вы можете программно создавать, изменять, переименовать и удалять файлы рабочей области в Databricks Runtime 11.3 LTS и более поздних версиях. Эта функция поддерживается для записных книжек в Databricks Runtime 16.2 и выше, а также в бессерверной архитектуре версии 2 и выше.

Заметка

Чтобы отключить запись в файлы рабочей области, задайте переменную среды кластера WSFS_ENABLE_WRITE_SUPPORT=false. Дополнительные сведения см. в переменных среды .

Заметка

В Databricks Runtime 14.0 и выше текущий рабочий каталог по умолчанию (CWD) для кода, выполняемого локально, — это каталог, содержащий записную книжку или скрипт, выполняемый. Это изменение поведения в Databricks Runtime 13.3 LTS и ниже. См. Что такое текущий рабочий каталог по умолчанию?.

Чтение расположений файлов

Используйте команды оболочки для чтения расположений файлов, например в репозитории или локальной файловой системе.

Чтобы определить расположение файлов, введите следующее:

%sh ls
  • Файлы не в репозитории: Команда возвращает файловую систему /databricks/driver.
  • Файлы находятся в репозитории: команда возвращает виртуализированное репозиторие, например /Workspace/Repos/name@domain.com/public_repo_2/repos_file_system.

Чтение файлов рабочей области данных

Вы можете программно считывать небольшие файлы данных, такие как файлы .csv или .json, из кода в ваших записных книжках. В следующем примере Pandas используется для запроса файлов, хранящихся в каталоге /data относительно корневого каталога репозитория проекта:

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

С помощью Spark можно считывать файлы данных. Необходимо предоставить Spark полный путь.

  • Файлы рабочей области в папках Git используют путь file:/Workspace/Repos/<user-folder>/<repo-name>/path/to/file.
  • Файлы рабочей области в личном каталоге используют путь: file:/Workspace/Users/<user-folder>/path/to/file.

Абсолютный или относительный путь к файлу можно скопировать из раскрывающегося меню рядом с файлом:

файловое раскрывающееся меню

В приведенном ниже примере показано использование {os.getcwd()} для получения полного пути.

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

Заметка

В рабочих областях, где корневой каталог и подключения DBFS отключены, можно также использовать dbfs:/Workspace для доступа к файлам рабочих областей с помощью служебных программ Databricks. Для этого требуется Databricks Runtime 13.3 LTS или более поздней версии. См. Отключить доступ к корневому каталогу DBFS и точкам монтирования в существующей рабочей области Azure Databricks.

Дополнительные сведения о файлах в Azure Databricks см. в статье Работа с файлами в Azure Databricks.

Программное создание, обновление и удаление файлов и каталогов

Вы можете программно управлять файлами рабочей области в Azure Databricks, как и с файлами в любой стандартной файловой системе.

Заметка

В Databricks Runtime 16.2 и выше и бессерверной среде 2 и выше все программные взаимодействия с файлами также доступны для записных книжек. Сведения о преобразовании файла в записную книжку см. в разделе "Преобразование файла в записную книжку".

В следующих примерах используются стандартные пакеты и функции Python для создания файлов и каталогов и управления ими.

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/")