Databricks 第5篇:Databricks文件系统(DBFS)
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)相关推荐
- 配置数据库文件系统(DBFS) (文档 ID 2060485.1)
适用于: Oracle Database - Enterprise Edition - 版本 11.2.0.0 和更高版本 Oracle Exadata Hardware - 版本 11.2.0.1 ...
- Databricks文档01----Azure Databricks初探
Azure Databricks 是一个已针对 Microsoft Azure 云服务平台进行优化的数据分析平台. Azure Databricks 提供了三种用于开发数据密集型应用程序的环境: Da ...
- Databricks 第8篇:把Azure Data Lake Storage Gen2 (ADLS Gen 2)挂载到DBFS
DBFS使用dbutils实现存储服务的装载(mount.挂载),用户可以把Azure Data Lake Storage Gen2和Azure Blob Storage 账户装载到DBFS中.Mou ...
- Databricks 第6篇:Spark SQL 维护数据库和表
Spark SQL 表的命名方式是db_name.table_name,只有数据库名称和数据表名称.如果没有指定db_name而直接引用table_name,实际上是引用default 数据库下的表. ...
- Databricks 第1篇:初识Databricks,创建工作区、集群和Notebook
Azure Databricks是一个可扩展的数据分析平台,基于Apache Spark.Azure Databricks 工作区(Workspace)是一个交互式的环境,工作区把对象(noteboo ...
- Databricks 第7篇:管理Secret
Azure中的Secret是指密码.凭证和密钥等,举个例子,使用Azure Databricks Secret来存储凭证,并在notebook和job中引用它们,而不是直接在notebook中输入凭据 ...
- Databricks 第10篇:Job
大家知道,用户可以在Notebook UI中以交互方式运行Notebook中的SQL.Python等代码,交互方式便于数据的调查和分析.用户还可以通过Job来自动维护数据,Job是立即运行或按计划运行 ...
- Databricks文档03----Azure Databricks 创建
1.打开Azure portal 搜索资源:Azure Databricks 2.输入相关信息 3.网络选择,由于是实验,一切从简 4.启动工作区 5.创建计算群集
- 【linux】循序渐进学运维-基础篇-修复文件系统实战
文章目录 前言: 实验环境 解决方案 1) 系统出现只读的情况的解决方案 2) 系统文件受损,可以使用fsck命令 a. 创建一个1G的分区 b. 对分区进行格式化 c. 破坏文件系统并重新挂载 d. ...
最新文章
- 关于object references an unsaved transient instance - save the transient instance before flushing的解决方法
- 确认了!MySQL 狠甩 Oracle 稳居 Top1!
- eclipse运行时出现Unable to execute dex
- vs自定义安装包的制作
- 知识图谱(二)——知识表示
- react 显示当前时间_react 日期
- IE和火狐读取XML方法比较
- 你有什么难忘的出差经历?
- C与C++关于*与的传参解析
- 百度邀您来听一场云存储的大戏!
- 【雷达通信】基于matlab GPS和INS联合导航【含Matlab源码 1814期】
- 手机微信开发上传图片到服务器,微信开发之通过微信接口上传图片到本地服务器...
- 用origin画重叠柱状图 - 三维变化
- 唐诗欣赏静夜思用html设计,古诗鉴赏:静夜思
- 梦幻109鸿蒙量星太难杀,梦幻西游:维摩诘杀怪最少攻略,20分钟轻松做完!
- 详解AD(Altium Designer)中的机械层 - 2
- cocos2dx3.16输入框:TextField和EditBox的使用
- 欢迎使通过网页免费下载全网歌曲【转载】
- mysql 表情符号 用什么类型_使MySQL能够存储emoji表情字符的设置教程
- 10004 函数模板
热门文章
- 小笨狗的编程感悟:如何成为一个优秀的程序员
- 数字后端面试100问(校招版)
- 如何从 SQL Server 中的 SELECT 更新?
- You have not agreed to the Xcode license agreements. You must agree to both license agreements below
- 蛮力法求解百元买百鸡问题
- matlab智能算法之萤火虫算法
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java大学生就业管理系统5t101
- quick-cocos2d-x 飞机大战(打飞机)小demo教程------敌人类
- 第三届北京·顺义张镇灶王文化节即将开幕
- 最新发布 Debian 系统的详细安装过程