如何借助 'azure-storage' 包在 Azure Data Lake Storage Gen2 中的容器内创建文件夹

How to create a folder inside container in Azure Data Lake Storage Gen2 with the help of 'azure-storage' Package

我正在使用 Azure Data Lake Gen2 作为我的存储。在将文件上传到相关文件夹之前,我需要创建不同的文件夹结构。

我正在使用 "Azure-Storage" javascript 库。但是我不知道如何通过这个库在容器内创建文件夹。

下面是连接容器的代码。我能够连接到容器并将文件上传到容器本身。

var azure = require('azure-storage'); //connecting to container
var blobService = azure.createBlobService("DefaultEndpointsProtocol=<>;EndpointSuffix=core.windows.net");
blobService.createContainerIfNotExists("pbitestdl2",{publicAccessLevel: 'blob'},(error, result, response) => {
    if (!error) {
        console.log('connected');
    }
});

如您所知,ADLS Gen2 的官方 SDK 现已无法使用。

由于您正在为 ADLS Gen2 使用 blob 存储 sdk,因此您应该了解以下内容:

在 Azure Blob 存储中,您需要了解一件事:Blob 存储中没有 "folder","folder" 实际上是 Blob 名称的一部分。您不能在 blob 存储中创建空文件夹。

当您使用 ADLS Gen2 的 blob 存储 SDK 时,您不能直接创建文件夹,您应该创建一个名称包含文件夹名称的 blob 文件,例如 myfolder/my.txt.

所以在使用ADLS Gen2的blob存储SDK时,应该使用如下代码:

var azure = require('azure-storage'); //connecting to container
var blobService = azure.createBlobService("DefaultEndpointsProtocol=xxx;EndpointSuffix=core.windows.net");
blobService.createContainerIfNotExists("pbitestdl2",{publicAccessLevel: 'blob'},(error, result, response) => {
    if (!error) {
        console.log('connected');
    }
});

blobService.createBlockBlobFromLocalFile('pbitestdl2', 'myfolder/my.txt', 'f:\testfile.txt', function(error, result, response) {
    if (!error) {
      // file uploaded
      console.log('ok, uploaded');
    }
  });

然后就可以看到在Azure Data Lake Gen2存储中创建了文件夹,截图如下:

另一种方式,可以使用ADLS Gen2 Path - Create rest api直接创建文件夹,但是需要做很多工作为其余 api.

构建身份验证令牌