Azure Databricks入门 - 认识一下DBFS
分类: Azure Databricks ◆ 标签: #Azure #基础 #入门 ◆ 发布于: 2023-07-27 9:54:28

Databricks File System
简称DBFS
, 在Databricks
的部署中,它是一个分布式文件系统,是基于云的文件系统,为Spark
计算引擎提供统一文件存取接口,这主要体现在如下几个方面:
DBFS
是跟随Worksapce
的,一个Workspace
共享一个根DBFS
文件系统。- 每个在
Workspace
里启动的集群都会自动挂载DBFS
到根目录/dbfs
- 通过
DBFS
文件系统mount
进入到workspace
的其他对象存储都严格的限制在DBFS
的mnt
下 - 无论什么云对象存储系统通过
DBFS
的mount
过来之后,都是可以直接简单的使用文件操作命令进行操作,例如Azure Storage Data Lake
或者AWS S3
等等。
另外需要注意的是DBFS
有几个特殊的根目录:
/FileStore
: 这个目录可以用于个人用户存储,上传以及导出的一些文件,还可以用于上传一个基于workspace
的Library
等。/databricks-datasets
: 用于存放一些databricks
的实例数据集。/databricks-results
: 当在notebook
中运行完一个查询之后,从菜单里选择download full result
, 会被i存储在这里。/databricks/init
: 用于存储全局或者集群级别的初始化脚本。/user/hive/warehouse
: 使用hive metastore
时,默认用于存放数据和meta数据的位置。
这些是一个workspace
新建之后,默认已经有的根目录,虽然对于workspace
里的所有用户来说DBFS
都是可读写的,不过建议不要在根目录随意写入不必要的数据。而是按照DBFS
的推荐来放置和读写数据。
使用Databricks CLi
来浏览DBFS
再次重申一下, DBFS
是不依附集群存在而存在的,例如我们之前刚刚创建的新集群,虽然创建了一个集群,但是该集群并没有启动,使用Databricks CLi
工具仍然是可以访问DBFS
的。
注意
请按照之前的文章配置好Databricks cli
工具
运行如下的命令浏览DBFS
的根目录:
dbfs ls
返回如下结果:
PS D:\MyProjects\PowerShell> dbfs ls -l
dir 0 FileStore 1658033203000
dir 0 databricks-results 0
dir 0 local_disk0 1657984126000
dir 0 mnt 1657951447000
dir 0 tmp 1657984614000
dir 0 user 1655907661000
PS D:\MyProjects\PowerShell>
我们之前讨论到的根目录,会发现这些目录在命令行工具中没有返回,例如/databricks-datasets
。
需要注意的是命令行工具浏览的根目录即是DBFS
的根目录。
启动集群观察DBFS
启动我们上一章创建的集群:登录到workspace
, 选择左侧菜单compute
, 选择创建的集群start
, 等待集群启动成功之后,创建一个基于python
的notebook。
我们先观察几个可以直接在notebook
中可以使用的工具:
%sh
: 魔法命令sh
%fs
: 魔法命令fs
dbutils.fs
:Databricks
提供的工具dbutils
- 各个语言中可以使用的文件操作函数或者库。
需要注意的是:
%fs
和dbutils.fs
的根目录是DBFS
的根目录。%sh
和其他语言的文件操作库其根目录是操作系统的根目录,如果要访问DBFS
需要加上路径/dbfs/
作为前缀。
如下是一些操作的结果:
%fs ls
%sh ls -l --color /dbfs/

display(dbutils.fs.ls("dbfs:/"))

import os
os.listdir('/dbfs/')

使用Python
的代码演示一下如何读取和写入DBFS
文件系统的实例:

以上DBFS
快速的熟悉一下就好了。