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: 魔法命令fsdbutils.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快速的熟悉一下就好了。