【Azure Data Lake Storage】如何才能保留Blob中的文件目录结构(即使文件夹中文件数量为0的情况下)?

简介: 【Azure Data Lake Storage】如何才能保留Blob中的文件目录结构(即使文件夹中文件数量为0的情况下)?

问题描述

在使用Azure Storage Account Blob时候,发现当文件夹中的Blob(文件)被全部输出后,文件夹也会消失?

为什么它不能像Windows系统中的文件夹一样,即使是一个空文件夹。也会一直保留呢?

 

问题解答

这是因为 Azure Storage Account Blob 对 Container下的文件管理采用的是扁平化的命名方式( Flat Namespace ),它并没有Windows操作系统中的“文件夹”概念,而在页面中显示的一级一级的文件结构,只是一个虚拟结构。当其中的全部文件(Blob)被清空后,这些虚拟的文件夹结构也会被清空。

而ADLS(Azure Data Lake Storage Gen2)则提供了分层命名空间( Hierarchical Namespace ),允许使用目录和子目录组织和管理数据,就像在本地文件系统中一样。

 

扁平化的命名方式( Flat Namespace )  vs 分层命名空间( Hierarchical Namespace )

扁平命名空间(FNS):一种在 Azure 存储帐户中组织对象的模式,其中对象使用扁平结构(即对象的扁平列表)进行组织。这是存储帐户的默认配置。

Flat namespace (FNS): A mode of organization in a storage account on Azure where objects are organized using a flat structure - aka a flat list of objects. This is the default configuration for a storage account.

 

分层命名空间(HNS):使用分层命名空间,您可以将数据组织到结构化的文件夹和目录中。分层命名空间允许像文件夹重命名和删除这样的操作以单个原子操作执行,而扁平命名空间则需要与结构中对象数量成比例的操作数。分层命名空间存储您的目录和文件夹结构的附加元数据,并允许文件系统 ACL。然而,随着您的数据量增长,分层命名空间保持您的数据有组织,并且更重要的是,它为您的分析作业提供更好的存储性能,从而降低了运行分析作业的总体 TCO。

Hierarchical namespace (HNS): With hierarchical namespaces, you can organize data into structured folders and directories. A hierarchical namespace allows operations like folder renames and deletes to be performed in a single atomic operation, which with a flat namespace requires a number of operations proportionate to the number of objects in the structure. Hierarchical namespaces store additional meta-data for your directory and folder structure, and allows Filesystem ACLs. However, as your data volume grows, hierarchical namespaces keeps your data organized and more importantly yields better storage performance on your analytic jobs – thus lowering your overall TCO to run analytic jobs

 

所以,为了保留Blob的的文件夹结构(目录和子目录), 有如下两种方式:

方式一:把Stroage Account升级为ADLS Gen 2, Azure门户提供了非常方便的升级方式,只需要在页面中点击升级按钮

 

方式二:始终保留一个文件在所需要保留的文件夹(目录或子目录)中

 

参考资料

Flat namespace (FNS) vs Hierarchical namespace (HNS) : https://azure.github.io/Storage/docs/analytics/azure-storage-data-lake-gen2-billing-faq/

升级具有 Azure Data Lake Storage Gen2 功能的 Azure Blob 存储 : https://docs.azure.cn/zh-cn/storage/blobs/upgrade-to-data-lake-storage-gen2

Do we have an option for hierarchical folder options in blob storage? https://learn.microsoft.com/en-us/answers/questions/904103/do-we-have-an-option-for-hierarchical-folder-optio

相关文章
|
23天前
|
容器
【Azure ADLS】为Azure Data Lake Storage的Container赋予了操作权限后创建子文件夹遇见403报错
ADLS "This request is not authorized to perform this operation using this permission" 403
41 13
|
4月前
|
存储 容器
【Azure 存储服务】如何查看Storage Account的删除记录,有没有接口可以下载近1天删除的Blob文件信息呢?
【Azure 存储服务】如何查看Storage Account的删除记录,有没有接口可以下载近1天删除的Blob文件信息呢?
|
4月前
|
Java
File常用的方法操作、在磁盘上创建File、获取指定目录下的所有文件、File文件的重命名、将数据写入File文件
这篇文章介绍了Java中`File`类的常用方法操作,包括文件和目录路径名的抽象表示、构造方法、常用方法以及代码实例。文章通过具体的代码示例,展示了如何在磁盘上创建文件和目录、处理目录存在的情况、文件重命名、获取指定目录下的所有文件以及将数据写入文件等操作。每个代码实例都配有测试结果截图,帮助读者更好地理解和掌握`File`类的应用。
File常用的方法操作、在磁盘上创建File、获取指定目录下的所有文件、File文件的重命名、将数据写入File文件
|
4月前
|
存储 Java API
【Azure 存储服务】使用 AppendBlobClient 对象实现对Blob进行追加内容操作
【Azure 存储服务】使用 AppendBlobClient 对象实现对Blob进行追加内容操作
|
4月前
|
存储 容器
【Azure 存储服务】Azure Blob下面是否可以创建子文件夹
【Azure 存储服务】Azure Blob下面是否可以创建子文件夹
|
4月前
|
存储 监控 开发工具
【Azure 存储服务】.NET7.0 示例代码之上传大文件到Azure Storage Blob (一)
【Azure 存储服务】.NET7.0 示例代码之上传大文件到Azure Storage Blob (一)
|
4月前
|
存储
【Azure 存储服务】.NET7.0 示例代码之上传大文件到Azure Storage Blob (二)
【Azure 存储服务】.NET7.0 示例代码之上传大文件到Azure Storage Blob (二)
|
4月前
|
存储 容器
【Azure 存储服务】多设备并发往 Azure Storage Blob 的 Container 存数据是否可以
【Azure 存储服务】多设备并发往 Azure Storage Blob 的 Container 存数据是否可以
|
4月前
|
存储 C# Python
【Azure Storage Account】Azure 存储服务计算Blob的数量和大小的PowerShell代码
【Azure Storage Account】Azure 存储服务计算Blob的数量和大小的PowerShell代码
|
4月前
|
存储 分布式计算 Hadoop
【Azure 存储服务】Hadoop集群中使用ADLS(Azure Data Lake Storage)过程中遇见执行PUT操作报错
【Azure 存储服务】Hadoop集群中使用ADLS(Azure Data Lake Storage)过程中遇见执行PUT操作报错

热门文章

最新文章