为Databricks开发人员介绍命令行界面

原作者:Andrew Chen

作为Unified Analytics Platform的一部分,Databricks Workspace和Databricks File System(DBFS)是促进数据科学家和数据工程师之间协作的关键组件:Databricks Workspace管理用户的笔记本,而DBFS管理文件; 两者都有REST API端点,分别用于管理笔记本和文件。

尽管REST API主要是为一般的程序设计而设计的,但是在不编写重复的样板代码的情况下,使用REST API进行探索和操纵所需内容的临时任务并不那么容易。 因此,为简化Databricks开发人员的这项任务,我们实现了一个简单的命令行界面,该界面可与Databricks工作区和文件系统API进行交互。

在针对Databricks开发人员的博客的第1部分中,我们概述了一些用例,您可以在其中使用命令行界面来与Databricks工作区进行交互并操纵文件和文件夹。

使用场景

将笔记本检入版本控制系统(VCS)

Databricks CLI的最常见用法之一是启用到VCS的替代集成点。

要将笔记本检入VCS,您需要一个基于文本的规范文件。 使用工作区API,您可以将笔记本导出和导入为这种基于文本的规范文件格式。 Databricks CLI通过将这些API封装到易于使用的命令行界面(支持递归导入和导出)中,进一步建立了这个想法。

例如,考虑具有两个用户工作区和生产工作区的方案:具有工作区A的爱丽丝(Alice),具有工作区B的鲍勃(Bob)和具有通过Databricks Job Scheduler运行的笔记本的生产工作区P。 在工作区A中开发代码后,Alice可以将其带有databricks workspace export_dir代码导出到她的git存储库中,并发起拉取请求。 然后,Bob可以审阅并批准PR,之后Alice可以将其更改合并到主数据库。 合并将触发连续交付作业,其中生产工作空间P将启动数据databricks workspace import_dir ,将所有新更改引入生产。

将小型数据集复制到DBFS

CLI的另一个用例是将小型数据集导入DBFS。

例如:

  • (递归)在本地文件系统和DBFS之间复制数据集/文件

安装

首先,通过在本地计算机上运行以下命令来安装CLI。
pip install --upgrade databricks-cli

请注意,Databricks CLI当前无法与Python 3一起运行。

安装完成后,下一步是向CLI提供身份验证信息。 第一种推荐的方法是使用从Databricks生成的访问令牌。 为此,请运行databricks configure --token 。 第二种方法是使用用户名和密码对。 为此,请运行databricks配置并按照提示进行操作。 按照提示操作后,您的访问凭据将存储在文件~/.databrickscfg.

工作区CLI示例

可以通过运行databricks workspace -h列出工作区CLI的已实现命令。 通过将命令附加到databricks workspace来运行命令。 为了使使用工作区CLI更容易,请随时将databricks工作区别名为更短的名称。 有关更多信息,请参考别名命令组和工作区API。

 $ databricks workspace -h Usage: databricks workspace [OPTIONS] COMMAND [ARGS]... Utility to interact with the Databricks Workspace. Workspace paths must be absolute and be prefixed with `/`. Options: -v, --version -h, --help Show this message and exit. Commands: delete Deletes objects from the Databricks... export Exports a file from the Databricks workspace... export_dir Recursively exports a directory from the... import Imports a file from local to the Databricks... import_dir Recursively imports a directory from local to... list List objects in the Databricks Workspace ls List objects in the Databricks Workspace mkdirs Make directories in the Databricks Workspace. rm Deletes objects from the Databricks... 

列出工作区文件

将工作空间目录导出到本地文件系统

databricks workspace export_dir命令将以递归方式将目录从Databricks工作区导出到本地文件系统。 仅导出笔记本,并且在导出时,笔记本将在其名称后附加适当的扩展名(.scala,.py,.sql,.R)。

导入笔记本的本地目录

同样, databricks workspace import_dir命令将以递归方式将目录从本地文件系统导入Databricks工作区。 仅导入扩展名为.scala,.py,.sql,.r,.R的目录和文件。 导入后,这些扩展名将被删除笔记本的名称。

要覆盖目标路径上的现有笔记本,必须添加标志-o。

DBFS CLI示例

可以通过运行databricks fs -h列出DBFS CLI的已实现命令。 通过将命令附加到数据块fs来运行命令,并且所有dbfs路径均应以dbfs:/作为前缀。 为了使该命令不再那么冗长,我们将dbfs别名为databricks fs。 有关更多信息,请参考DBFS API。

 $ databricks fs -h Usage: databricks fs [OPTIONS] COMMAND [ARGS]... Utility to interact with DBFS. DBFS paths are all prefixed with dbfs:/. Local paths can be absolute or local. Options: -v, --version -h, --help Show this message and exit. Commands: configure cp Copy files to and from DBFS. ls List files in DBFS. mkdirs Make directories in DBFS. mv Moves a file between two DBFS paths. rm Remove files from dbfs. 

将文件复制到DBFS

可以将文件从本地主机复制到DBFS,既可以逐文件又可以递归地复制。 例如,要将CSV复制到DBFS,可以运行以下命令。

对于递归复制,请添加-r标志。

从DBFS复制文件

同样,可以将文件从DBFS复制回本地文件系统。

下一步是什么

我们正在积极为开发人员开发Databricks CLI的新功能。 我们路线图上的下一项是支持集群和作业API端点。 我们将在本博客系列的第二部分中介绍。

秉承开源Apache Spark的精神,CLI的源代码已在Github上发布。 如果您对某项功能有任何反馈意见,请在我们的Github项目中保留问题。

免费试用Databricks。 立即开始