以编程方式与工作区文件交互

可以以编程方式与存储在 Azure Databricks 中的工作区文件交互。 这可以实现以下任务:

  • 将小数据文件与笔记本和代码一起存储。
  • 将日志文件写入与 Git 同步的目录。
  • 使用相对路径导入模块。
  • 创建或修改环境规范文件。
  • 写入源自笔记本的输出。
  • 写入执行 Tensorboard 之类的库时的输出。

可以在 Databricks Runtime 11.2 及更高版本中以编程方式创建、编辑和删除工作区文件。

备注

若要禁止将内容写入到工作区文件,请设置群集环境变量 WSFS_ENABLE_WRITE_SUPPORT=false。 有关详细信息,请参阅环境变量

注意

在 Databricks Runtime 14.0 及更高版本中,本地执行的代码的默认当前工作目录 (CWD) 是包含正在运行的笔记本或脚本的目录。 这是 Databricks Runtime 13.3 LTS 及更低版本的行为更改。 请参阅什么是默认的当前工作目录?

读取文件的位置

使用 shell 命令读取文件的位置,例如,在存储库或本地文件系统中。

若要确定文件的位置,请输入以下内容:

%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 提供完全限定的路径。

  • Repos 中的工作区文件使用路径 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")

若要详细了解 Azure Databricks 上的文件,请参阅使用 Azure Databricks 中的文件

以编程方式创建、更新和删除文件和目录

在 Databricks Runtime 11.2 及更高版本中,可以直接操作 Azure Databricks 中的工作区文件。 以下示例使用标准 Python 包和功能来创建和操作文件和目录。

# 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')