如何从 Azure Databricks 在 Azure Blob 中创建一个空文件夹

Posted

技术标签:

【中文标题】如何从 Azure Databricks 在 Azure Blob 中创建一个空文件夹【英文标题】:How to create a empty folder in Azure Blob from Azure databricks 【发布时间】:2020-10-14 18:11:55 【问题描述】:

我有一个场景,我想列出 Azure Blob 目录中的所有文件夹。如果没有文件夹存在,则创建一个具有特定名称的新文件夹。

我正在尝试使用 dbutils.fs.ls(path) 列出文件夹。

但上述命令的问题是,如果路径不存在,它会失败,这对我来说是一个有效的场景。

如果我的程序第一次运行,路径将不存在,dbutils.fs.ls 命令将失败。 有什么方法可以从 Databricks 动态处理这种情况。

如果我可以在执行作业之前从 Databricks 在 Azure Blob 中创建一个空文件夹,这对我也有用。

我已尝试从 databricks 笔记本中运行以下命令

   %sh mkdir -p /mnt/<mountName>/path/folderName 

这里命令运行成功,即使我在 Azure Blob 中的容器已挂载,它也不会创建文件夹。 对不起,这么长的帖子。任何帮助深表感谢。提前致谢

【问题讨论】:

仅供参考,blob 存储(不是 ADLS Gen2)不允许创建空文件夹,除非该文件夹包含至少一个文件。因此,您可以尝试在其中创建一个文件夹以及一个文件/blob。 是的,这正是问题所在。我想我会简单地处理 dbutils.fs.ls 命令在路径不存在时使用 try 和 except 失败。如果路径或文件不存在,则无法创建文件夹 【参考方案1】:

dbutils.fs.mkdirs("/mnt/&lt;mountName&gt;/path/folderName")

我发现这可以创建一个安装了 blob 存储的文件夹

【讨论】:

就我而言,这成功了:dbutils.fs.mkdirs("dbfs:/mnt/folder_desktop/test/uploads")

以上是关于如何从 Azure Databricks 在 Azure Blob 中创建一个空文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Azure Databricks 在 Azure Blob 中创建一个空文件夹

如何在 Azure Databricks 中使用 JDBC 从 PostgreSQL 读取表数据?

作业终止后如何将生成的文件从 Azure Databricks 导出到 Azure DevOps?

如何使用 python 从 azure databricks notebook 连接到本地 Windows 服务器?

如何将大量 DDL 从 Dev 导入/重新创建到 Azure Databricks 的 Prod 实例

如何将所有文件从 blob 存储容器导入和处理到 azure databricks