以编程方式与工作区文件交互
可以编程方式与 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 及更低版本的行为更改。 请参阅什么是默认的当前工作目录?。
读取文件的位置信息
使用 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 提供完全限定的路径。
- 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")
若要详细了解 Azure Databricks 上的文件,请参阅使用 Azure Databricks 中的文件。
以编程方式创建、更新和删除文件和目录
在 Databricks Runtime 11.3 LTS 及更高版本中,您可以直接操作 Azure Databricks 中的工作区文件。 笔记本被视为 Databricks Runtime 16.2 及更高版本以及无服务器环境 2 及更高版本中的工作区文件。 以下示例使用标准 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')
笔记本作为工作区文件
注释
此功能适用于 Databricks Runtime 16.2 及更高版本以及无服务器环境 2 及更高版本。
所有与文件的编程交互也可用于笔记本。 如果在以下情况下,工作区中的资产被识别为笔记本:
- 它具有
.ipynb
扩展名, - 或包含第一行注释中的字符串
Databricks notebook source
,并具有以下扩展名之一:.py
、.r
、.scala
、.sql
。
更改这些条件的笔记本或文件的任何写入或重命名,也会更改笔记本或文件的类型。 例如,如果一个文件 myfile.txt myfile.txt
,其中包含 Databricks 笔记本源代码 # Databricks notebook source
作为第一行,将该文件重命名为 myfile.py myfile.py
,以将其转换为笔记本。
有关将文件转换为笔记本的信息,请参阅 导入文件并将其转换为笔记本。