Databricks 文件系统 (DBFS,Databricks File System) 是一个装载到 Azure Databricks 工作区的分布式文件系统,可以在 Azure Databricks 群集上使用。 一个存储对象是一个具有特定格式的文件,不同的格式具有不同的读取和写入的机制。

DBFS 是基于可缩放对象存储的抽象,可以根据用户的需要动态增加和较少存储空间的使用量,Azure Databricks中装载的DBFS具有以下优势:

  • 装载(mount)存储对象,无需凭据即可无缝访问数据。
  • 使用目录和文件语义(而不是存储 URL)与对象存储进行交互。
  • 将文件保存到对象存储,因此在终止群集后不会丢失数据。

Azure Databricks是一个分布式的计算系统,Cluster提供算力资源,包括CPU、内存和网络等资源,而DBFS提供数据和文件的存储空间、对文件的读写能力,它是Azure Databricks中一个非常重要基础设施。

一,DBFS根

DBFS 中默认的存储位置称为 DBFS 根(root),以下 DBFS 根位置中存储了几种类型的数据:

  • /FileStore:导入的数据文件、生成的绘图以及上传的库
  • /databricks-datasets:示例公共数据集,用于学习Spark或者测试算法。
  • /databricks-results:通过下载查询的完整结果生成的文件。
  • /tmp:存储临时数据的目录
  • /user:存储各个用户的文件
  • /mnt:(默认是不可见的)装载(挂载)到DBFS的文件,写入装载点路径(/mnt)中的数据存储在DBFS根目录之外。

在新的工作区中,DBFS 根具有以下默认文件夹:

DBFS 根还包含不可见且无法直接访问的数据,包括装入点元数据(mount point metadata)和凭据(credentials )以及某些类型的日志。

DBFS还有两个特殊根位置是:FileStore 和 Azure Databricks Dataset。

  • FileStore是一个用于存储文件的存储空间,可以存储的文件有多种格式,主要包括csv、parquet、orc和delta等格式。
  • Dataset是一个示例数据集,用户可以通过该示例数据集来测试算法和Spark。

访问DBFS,通常是通过pysaprk.sql 模块、dbutils和SQL。

二,使用pyspark.sql模块访问DBFS

使用pyspark.sql模块时,通过相对路径"/temp/file" 引用parquet文件,以下示例将parquet文件foo写入 DBFS /tmp 目录。

#df.write.format("parquet").save("/tmp/foo",mode="overwrite")
df.write.parquet("/tmp/foo",mode="overwrite")

并通过Spark API读取文件中的内容:

#df =  spark.read.format("parquet").load("/tmp/foo")
df = spark.read.parquet("/tmp/foo")

三,使用SQL 访问DBFS

对于delta格式和parquet格式的文件,可以在SQL中通过 delta.`file_path`  或 parquet.`file_path`来访问DBFS:

select *
from delta.`/tmp/delta_file`select *
from parquet.`/tmp/parquet_file`

注意,文件的格式必须跟扩展的命令相同,否则报错;文件的路径不是通过单引号括起来的,而是通过 `` 来实现的。

四,使用dbutils访问DBFS

dbutils.fs 提供与文件系统类似的命令来访问 DBFS 中的文件。 本部分提供几个示例,说明如何使用 dbutils.fs 命令在 DBFS 中写入和读取文件。

1,查看DBFS的目录

在python环境中,可以通过dbutils.fs来查看路径下的文件:

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

2,读写数据

在 DBFS 根中写入和读取文件,就像它是本地文件系统一样。

# create folder
dbutils.fs.mkdirs("/foobar/")# write data
dbutils.fs.put("/foobar/baz.txt", "Hello, World!")# view head
dbutils.fs.head("/foobar/baz.txt")# remove file
dbutils.fs.rm("/foobar/baz.txt")# copy file
dbutils.fs.cp("/foobar/a.txt","/foobar/b.txt")

3,命令的帮助文档

dbutils.fs.help()

dbutils.fs 主要包括两跟模块:操作文件的fsutils和装载文件的mount

fsutils

cp(from: String, to: String, recurse: boolean = false): boolean -> Copies a file or directory, possibly across FileSystemshead(file: String, maxBytes: int = 65536): String -> Returns up to the first 'maxBytes' bytes of the given file as a String encoded in UTF-8ls(dir: String): Seq -> Lists the contents of a directorymkdirs(dir: String): boolean -> Creates the given directory if it does not exist, also creating any necessary parent directoriesmv(from: String, to: String, recurse: boolean = false): boolean -> Moves a file or directory, possibly across FileSystemsput(file: String, contents: String, overwrite: boolean = false): boolean -> Writes the given String out to a file, encoded in UTF-8rm(dir: String, recurse: boolean = false): boolean -> Removes a file or directory

mount

mount(source: String, mountPoint: String, encryptionType: String = "", owner: String = null, extraConfigs: Map = Map.empty[String, String]): boolean -> Mounts the given source directory into DBFS at the given mount pointmounts: Seq -> Displays information about what is mounted within DBFSrefreshMounts: boolean -> Forces all machines in this cluster to refresh their mount cache, ensuring they receive the most recent informationunmount(mountPoint: String): boolean -> Deletes a DBFS mount point

参考文档:

Databricks 文件系统 (DBFS)

Databricks 第5篇:Databricks文件系统(DBFS)相关推荐

  1. 配置数据库文件系统(DBFS) (文档 ID 2060485.1)

    适用于: Oracle Database - Enterprise Edition - 版本 11.2.0.0 和更高版本 Oracle Exadata Hardware - 版本 11.2.0.1 ...

  2. Databricks文档01----Azure Databricks初探

    Azure Databricks 是一个已针对 Microsoft Azure 云服务平台进行优化的数据分析平台. Azure Databricks 提供了三种用于开发数据密集型应用程序的环境: Da ...

  3. Databricks 第8篇:把Azure Data Lake Storage Gen2 (ADLS Gen 2)挂载到DBFS

    DBFS使用dbutils实现存储服务的装载(mount.挂载),用户可以把Azure Data Lake Storage Gen2和Azure Blob Storage 账户装载到DBFS中.Mou ...

  4. Databricks 第6篇:Spark SQL 维护数据库和表

    Spark SQL 表的命名方式是db_name.table_name,只有数据库名称和数据表名称.如果没有指定db_name而直接引用table_name,实际上是引用default 数据库下的表. ...

  5. Databricks 第1篇:初识Databricks,创建工作区、集群和Notebook

    Azure Databricks是一个可扩展的数据分析平台,基于Apache Spark.Azure Databricks 工作区(Workspace)是一个交互式的环境,工作区把对象(noteboo ...

  6. Databricks 第7篇:管理Secret

    Azure中的Secret是指密码.凭证和密钥等,举个例子,使用Azure Databricks Secret来存储凭证,并在notebook和job中引用它们,而不是直接在notebook中输入凭据 ...

  7. Databricks 第10篇:Job

    大家知道,用户可以在Notebook UI中以交互方式运行Notebook中的SQL.Python等代码,交互方式便于数据的调查和分析.用户还可以通过Job来自动维护数据,Job是立即运行或按计划运行 ...

  8. Databricks文档03----Azure Databricks 创建

    1.打开Azure portal 搜索资源:Azure Databricks 2.输入相关信息 3.网络选择,由于是实验,一切从简 4.启动工作区 5.创建计算群集

  9. 【linux】循序渐进学运维-基础篇-修复文件系统实战

    文章目录 前言: 实验环境 解决方案 1) 系统出现只读的情况的解决方案 2) 系统文件受损,可以使用fsck命令 a. 创建一个1G的分区 b. 对分区进行格式化 c. 破坏文件系统并重新挂载 d. ...

最新文章

  1. 关于object references an unsaved transient instance - save the transient instance before flushing的解决方法
  2. 确认了!MySQL 狠甩 Oracle 稳居 Top1!
  3. eclipse运行时出现Unable to execute dex
  4. vs自定义安装包的制作
  5. 知识图谱(二)——知识表示
  6. react 显示当前时间_react 日期
  7. IE和火狐读取XML方法比较
  8. 你有什么难忘的出差经历?
  9. C与C++关于*与的传参解析
  10. 百度邀您来听一场云存储的大戏!
  11. 【雷达通信】基于matlab GPS和INS联合导航【含Matlab源码 1814期】
  12. 手机微信开发上传图片到服务器,微信开发之通过微信接口上传图片到本地服务器...
  13. 用origin画重叠柱状图 - 三维变化
  14. 唐诗欣赏静夜思用html设计,古诗鉴赏:静夜思
  15. 梦幻109鸿蒙量星太难杀,梦幻西游:维摩诘杀怪最少攻略,20分钟轻松做完!
  16. 详解AD(Altium Designer)中的机械层 - 2
  17. cocos2dx3.16输入框:TextField和EditBox的使用
  18. 欢迎使通过网页免费下载全网歌曲【转载】
  19. mysql 表情符号 用什么类型_使MySQL能够存储emoji表情字符的设置教程
  20. 10004 函数模板

热门文章

  1. 小笨狗的编程感悟:如何成为一个优秀的程序员
  2. 数字后端面试100问(校招版)
  3. 如何从 SQL Server 中的 SELECT 更新?
  4. You have not agreed to the Xcode license agreements. You must agree to both license agreements below
  5. 蛮力法求解百元买百鸡问题
  6. matlab智能算法之萤火虫算法
  7. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java大学生就业管理系统5t101
  8. quick-cocos2d-x 飞机大战(打飞机)小demo教程------敌人类
  9. 第三届北京·顺义张镇灶王文化节即将开幕
  10. 最新发布 Debian 系统的详细安装过程