You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启用分层命名空间后无法创建ADLS Gen2虚拟目录问题咨询

问题原因与解决方案

你的错误源于启用分层命名空间的ADLS Gen2不支持通过hdi_isfolder元数据模拟目录——这个方法是针对无分层命名空间的普通Blob存储(通过空Blob模拟目录)的旧方案,不适用于有原生目录语义的ADLS Gen2。

ADLS Gen2启用分层命名空间后,提供了原生的目录操作API,无需通过创建空Blob加元数据的方式模拟目录,直接调用目录创建接口即可,这也是避免400错误的核心解决办法。

正确代码示例

使用Azure Storage C++ SDK的DataLake客户端直接创建目录:

// 假设已初始化DataLakeServiceClient实例,获取对应文件系统(原容器)的客户端
auto fileSystemClient = m_dataLakeServiceClient->GetFileSystemClient("your-file-system-name");

// 要创建的目录路径,比如"parent-folder/sub-folder"
std::string directoryPath = "your-target-directory-path";

Azure::Storage::Files::DataLake::CreateDirectoryOptions createOptions;
// 执行目录创建
auto directoryClient = fileSystemClient.CreateDirectory(directoryPath, createOptions);

关键说明

  • 启用分层命名空间的ADLS Gen2使用文件系统语义,目录是真实的存储对象,而非Blob模拟,因此不需要依赖hdi_isfolder这类元数据标记。
  • 原代码中调用SetMetadata设置hdi_isfolder时,ADLS Gen2会识别到不支持的HTTP头,从而返回400错误。

内容的提问来源于stack exchange,提问作者John Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 16:12:06