Skip to main content

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的其他对象存储都严格的限制在DBFSmnt
  • 无论什么云对象存储系统通过DBFSmount过来之后,都是可以直接简单的使用文件操作命令进行操作,例如Azure Storage Data Lake或者AWS S3等等。

另外需要注意的是DBFS有几个特殊的根目录:

  • /FileStore: 这个目录可以用于个人用户存储,上传以及导出的一些文件,还可以用于上传一个基于workspaceLibrary等。
  • /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.fsDatabricks提供的工具dbutils
  • 各个语言中可以使用的文件操作函数或者库。

需要注意的是:

  • %fsdbutils.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快速的熟悉一下就好了。