@azure/storage-file-datalake

中文文档
12.31.0发布于 2026/06/24MITTypeScriptESM + CJS近 30 天下载 82.7万

微软 Azure 存储 JavaScript - DataLake

中文使用文档
文档目录22 节
  1. 开始
  2. 目前得到支持的环境
  3. 先决条件
  4. 安装软件包
  5. 认证客户端
  6. 兼容性
  7. Java 脚本套装
  8. (简体中文)
  9. 关键概念
  10. 实例
  11. 导入软件包
  12. 创建数据湖服务客户端
  13. 创建新文件系统
  14. 列出文件系统
  15. 创建并删除目录
  16. 创建文件
  17. 列出文件系统中的路径
  18. 下载一个文件并将其转换为字符串( Node.js)
  19. 下载一个文件并转换为字符串( 浏览器)
  20. 解决问题
  21. 今后的步骤
  22. 捐款

Azure 存储文件数据 JavaScript 的湖客户端库

Azure Data Lake存储(ADLS)包括所有必要的能力,使开发者,数据科学家和分析人员能够方便地存储任何大小,形状和速度的数据,并跨平台和语言进行各种类型的处理和分析. 它消除了摄取和存储您所有数据的复杂性,同时使得它更快地与批量,流体,交互分析一起起起跑.

这个项目提供了JavaScript的客户端库,方便于使用微软Azure存储数据湖服务.

使用此软件包中的客户端库 :

  • 创建/列表/删除文件系统
  • 创建/读取/列表/更新/删除路径、目录和文件

密钥链接 :

开始

目前得到支持的环境

看我们的 支助政策 更多细节.

先决条件

安装软件包

为JavaScript安装Azure存储数据湖客户端库的首选方法是使用npm包管理器. 键入下列终端窗口:

npm install @azure/storage-file-datalake

认证客户端

Azure存储器支持几种认证方法. 为了与Azure Data Lake存储服务互动,您需要创建存储客户端实例- DataLakeServiceClient, (中文(简体) ), DataLakeFileSystemClient,或 DataLakePathClient 举个例子 见 用于创建 DataLakeServiceClient 学习更多关于认证.

Azure 活动目录

Azure Data Lake存储服务支持使用Azure Active Directory来验证其API的请求. 这个 @azure/identity 软件包提供了各种证书类型,应用程序可用来做到这一点。 请看 读取 @azure/identity 需要更多的细节和样本来启动.

兼容性

这个库与Node.js和浏览器兼容,并与LTS Node.js版本(QQ8.16.0)和Chrome,Firefox和Edge等最新版本进行验证.

网络工人

这个库要求某些DOM对象在浏览器中使用时可以全局取用,而网页工人默认不会提供. 您需要多填这些, 才能让这个图书馆在网络工作人员中工作 .

详情请参见我们 在网络工人中使用Azure SDK的文档

此库依赖于在网络工人使用时需要加载外部多填充的 DOM API :

节点J和浏览器之间的差异

节点(Node.js)和浏览器运行时间有差异. 启动此库时, 请注意 API 或 标有 "绝对是无处可逃" 或者说 "绝对是活在丛生"。 。 。 .

  • 如果一个文件持有压缩数据 gzip 或者说 deflate 格式及其内容编码相应设定,下载行为在Node.js和浏览器之间有所不同. 在Node.js存储客户端会以压缩格式下载文件,而浏览器中的数据则会以去压缩格式下载.
特性、界面、类或函数仅可用于节点.js
  • 基于账户名称和账户密钥的共享密钥授权
    • StorageSharedKeyCredential
  • 共享访问签名( SAS) 生成
    • generateAccountSASQueryParameters()
    • generateDataLakeSASQueryParameters()
  • 平行上传和下载. 请注意: DataLakeFileClient.upload() 可在Node.js和浏览器中找到.
    • DataLakeFileClient.uploadFile()
    • DataLakeFileClient.uploadStream()
    • DataLakeFileClient.readToBuffer()
    • DataLakeFileClient.readToFile()
特性、 界面、 类别或函数仅可用于浏览器
  • 不详

Java 脚本套装

要在浏览器中使用此客户端库,首先需要使用捆绑器. 关于如何做到这一点的详情,请参见我们 捆绑文件。 。 。 .

(简体中文)

你需要设置 跨欧林资源共享 用于浏览器的存储账户规则。 到 Azure 门户网站和 Azure 存储探索器, 找到您的存储账户, 为 blob/ queue/ file/ table 服务创建新的 CORS 规则 .

例如,您可以按照 CORS 设置创建调试程序。 但请根据生产环境的要求,精心定制设置.

  • 允许来源: *
  • 允许动词: DELETE, GET, HEAD, MERGE, POST, OPTIONS, PUT
  • 允许的标题 : *
  • 已曝光标题 : *
  • 最大年龄(秒):86400

通知:数据 Lake目前共享 CORS 设置用于 blob 服务 .

关键概念

Azure Data Lake 存储 Gen2设计为:

  • 在维持数百千兆吨的吞吐量的同时, 提供多个字节的信息
  • 允许您轻松管理大量数据

DataLake 存储 Gen2 的关键特性包括:

  • Hadoop 兼容访问
  • POSIX 权限的超级集
  • 低成本储存能力和交易的成本效益
  • 大数据分析优化驱动程序

数据湖存储Gen2的一个基本部分是在Blob存储中添加了分级命名空间. 分级命名空间将对象/文件组织成目录的分级,以便高效地访问数据.

过去,以云为基础的分析不得不在业绩、管理和安全领域作出妥协。 Data Lake Survey Gen2 以下列方式处理所有这些方面:

  • 性能被优化,因为不需要复制或转换数据作为分析的先决条件. 分级命名空间大大提高了目录管理业务的性能,提高了整体的工作性能.
  • 管理比较容易,因为可以通过目录和子目录来组织和操纵文件.
  • 安全是可执行的,因为可以在目录或个人文件中定义POSIX权限.
  • 由于在低成本的Azure Blob存储之上建造了Data Lake存储Gen2,使得成本效益成为可能. 附加的特征进一步降低了Azure上运行大数据分析的总所有权成本.

数据 湖库提供三种资源:

  • 这个 存储账户 通过 DataLakeServiceClient
  • A 类 文件系统 通过使用的存储账户中 DataLakeFileSystemClient
  • A 类 路径 在通过的文件系统中 DataLakeDirectoryClient 或者说 DataLakeFileClient
Azure 数据湖 Gen2块
文件系统集装箱
路径( 文件或目录)块

说明: 这个客户端库只支持带有等级命名空间(HNS)启用的存储账户.

实例

导入软件包

要使用客户端, 请导入软件包到您的文件中 :

import * as AzureStorageDataLake from "@azure/storage-file-datalake";

或者,有选择地仅导入所需的类型:

import { DataLakeServiceClient, StorageSharedKeyCredential } from "@azure/storage-file-datalake";

创建数据湖服务客户端

这个 DataLakeServiceClient 需要数据湖服务的URL和访问证书。 也可以选择接受 options 参数.

与 DefaultAzureCredential 从 @azure/identity 软件包

建议的即兴演奏方式a DataLakeServiceClient

通知,长官 Azure 数据 Lake目前在AAD OAuth认证之后重复使用"Storage Blob Data Owide"等与blob相关的角色.

设置: 引用 - 授权从客户端应用程序中访问 blobs( 数据湖) 和与 Azure Active 目录的队列 - https://learn.microsoft.com/azure/storage/common/storage-auth-aad-app 互联网档案馆的存檔,存档日期2013-12-22

  • 注册一个新的 AAD 应用程序,并授权代表已签名的用户访问 Azure 存储 .

  • 与RBAC在Azure门户网站上访问Azure Data Lake数据的许可

  • 样本的环境设置

    • 从您的 AAD 应用程序的概览页面中,请注意 CLIENT ID 财务报告和审定财务报表 TENANT ID。在“证书和机密”标签中,创建一个机密,并将此记下.
    • 请确定您有 AZURE TENANT ID, AZURE CLIENT ID, AZURE CLIENT SECRET 作为环境变量来成功执行样本(可以杠杆进程.env).
import { DefaultAzureCredential } from "@azure/identity";
import { DataLakeServiceClient } from "@azure/storage-file-datalake";

// Enter your storage account name
const account = "<account>";
const defaultAzureCredential = new DefaultAzureCredential();

const datalakeServiceClient = new DataLakeServiceClient(
  `https://${account}.dfs.core.windows.net`,
  defaultAzureCredential,
);

见 Azure AD Auth 样本 对于使用这种方法的完整示例.

[注 -- -- 以上步骤只针对节点.js]

使用连接字符串

或者,你可以即时 DataLakeServiceClient 使用 fromConnectionString() 以全连接字符串作为参数的静态方法。 (连接字符串可以从Azure门户网站获得 [完全可以在 代码.JS运行]

import { DataLakeServiceClient } from "@azure/storage-file-datalake";

const connectionString = "<connection string>";

const dataLakeServiceClient = DataLakeServiceClient.fromConnectionString(connectionString);

与 StorageSharedKeyCredential

或者,你即兴表演 DataLakeServiceClient 带有 StorageSharedKeyCredential 以传递账户名称和账户键作为参数。 (账户名称和账户钥匙可从Azure门户网站获取. ) [完全可以在 代码.JS运行]

import { StorageSharedKeyCredential, DataLakeServiceClient } from "@azure/storage-file-datalake";

// Enter your storage account name and shared key
const account = "<account>";
const accountKey = "<accountkey>";

// Use StorageSharedKeyCredential with storage account and account key
// StorageSharedKeyCredential is only available in Node.js runtime, not in browsers
const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);
const datalakeServiceClient = new DataLakeServiceClient(
  `https://${account}.dfs.core.windows.net`,
  sharedKeyCredential,
);

与 SAS Token 连接

还有... 你可以即兴表演 DataLakeServiceClient 带有共享访问签名(SAS). 您可以从 Azure 端口获得 SAS 令牌或使用 generateAccountSASQueryParameters()。 。 。 .

import { DataLakeServiceClient } from "@azure/storage-file-datalake";

const account = "<account name>";
const sas = "<service Shared Access Signature Token>";
const serviceClientWithSAS = new DataLakeServiceClient(
  `https://${account}.dfs.core.windows.net${sas}`,
);

创建新文件系统

使用 DataLakeServiceClient.getFileSystemClient() 然后创建新的文件系统资源.

import { DataLakeServiceClient } from "@azure/storage-file-datalake";
import { DefaultAzureCredential } from "@azure/identity";

const account = "<account>";
const datalakeServiceClient = new DataLakeServiceClient(
  `https://${account}.dfs.core.windows.net`,
  new DefaultAzureCredential(),
);

// Create a file system
const fileSystemName = `newfilesystem${new Date().getTime()}`;
const fileSystemClient = datalakeServiceClient.getFileSystemClient(fileSystemName);
const createResponse = await fileSystemClient.create();
console.log(`Create file system ${fileSystemName} successfully`, createResponse.requestId);

列出文件系统

使用 DataLakeServiceClient.listFileSystems() 函数可以对文件系统进行迁移, 与新的 for-await-of 语法 :

import { DataLakeServiceClient } from "@azure/storage-file-datalake";
import { DefaultAzureCredential } from "@azure/identity";

const account = "<account>";
const datalakeServiceClient = new DataLakeServiceClient(
  `https://${account}.dfs.core.windows.net`,
  new DefaultAzureCredential(),
);

let i = 1;
const fileSystems = datalakeServiceClient.listFileSystems();
for await (const fileSystem of fileSystems) {
  console.log(`File system ${i++}: ${fileSystem.name}`);
}

或者不使用 for-await-of数字 :

import { DataLakeServiceClient } from "@azure/storage-file-datalake";
import { DefaultAzureCredential } from "@azure/identity";

const account = "<account>";
const datalakeServiceClient = new DataLakeServiceClient(
  `https://${account}.dfs.core.windows.net`,
  new DefaultAzureCredential(),
);

let i = 1;
const fileSystems = datalakeServiceClient.listFileSystems();
let { value, done } = await fileSystems.next();
while (!done) {
  console.log(`File system ${i++}: ${value.name}`);
  ({ value, done } = await fileSystems.next());
}

此外,还支持通过Pagination将它列入清单 byPage()数字 :

import { DataLakeServiceClient } from "@azure/storage-file-datalake";
import { DefaultAzureCredential } from "@azure/identity";

const account = "<account>";
const datalakeServiceClient = new DataLakeServiceClient(
  `https://${account}.dfs.core.windows.net`,
  new DefaultAzureCredential(),
);

let i = 1;
for await (const response of datalakeServiceClient.listFileSystems().byPage({ maxPageSize: 20 })) {
  if (response.fileSystemItems) {
    for (const fileSystem of response.fileSystemItems) {
      console.log(`File System ${i++}: ${fileSystem.name}`);
    }
  }
}

创建并删除目录

import { DataLakeServiceClient } from "@azure/storage-file-datalake";
import { DefaultAzureCredential } from "@azure/identity";

const account = "<account>";
const datalakeServiceClient = new DataLakeServiceClient(
  `https://${account}.dfs.core.windows.net`,
  new DefaultAzureCredential(),
);

const fileSystemName = "<file system name>";
const fileSystemClient = datalakeServiceClient.getFileSystemClient(fileSystemName);
const directoryClient = fileSystemClient.getDirectoryClient("directory");
await directoryClient.create();
await directoryClient.delete();

创建文件

import { DataLakeServiceClient } from "@azure/storage-file-datalake";
import { DefaultAzureCredential } from "@azure/identity";

const account = "<account>";
const datalakeServiceClient = new DataLakeServiceClient(
  `https://${account}.dfs.core.windows.net`,
  new DefaultAzureCredential(),
);

const fileSystemName = "<file system name>";
const fileSystemClient = datalakeServiceClient.getFileSystemClient(fileSystemName);

const content = "Hello world!";
const fileName = `newfile${+new Date()}`;
const fileClient = fileSystemClient.getFileClient(fileName);
await fileClient.create();
await fileClient.append(content, 0, content.length);
await fileClient.flush(content.length);
console.log(`Create and upload file ${fileName} successfully`);

列出文件系统中的路径

类似于列出文件系统.

import { DataLakeServiceClient } from "@azure/storage-file-datalake";
import { DefaultAzureCredential } from "@azure/identity";

const account = "<account>";
const datalakeServiceClient = new DataLakeServiceClient(
  `https://${account}.dfs.core.windows.net`,
  new DefaultAzureCredential(),
);

const fileSystemName = "<file system name>";
const fileSystemClient = datalakeServiceClient.getFileSystemClient(fileSystemName);

let i = 1;
const paths = fileSystemClient.listPaths();
for await (const path of paths) {
  console.log(`Path ${i++}: ${path.name}, is directory: ${path.isDirectory}`);
}

下载一个文件并将其转换为字符串( Node.js)

import { DataLakeServiceClient } from "@azure/storage-file-datalake";
import { DefaultAzureCredential } from "@azure/identity";
import { buffer } from "node:stream/consumers";

const account = "<account>";
const datalakeServiceClient = new DataLakeServiceClient(
  `https://${account}.dfs.core.windows.net`,
  new DefaultAzureCredential(),
);

const fileSystemName = "<file system name>";
const fileName = "<file name>";
const fileSystemClient = datalakeServiceClient.getFileSystemClient(fileSystemName);
const fileClient = fileSystemClient.getFileClient(fileName);

// Get file content from position 0 to the end
// In Node.js, get downloaded data by accessing downloadResponse.readableStreamBody
const downloadResponse = await fileClient.read();
if (downloadResponse.readableStreamBody) {
  // Download the raw bytes of the file. Use `text` from "node:stream/consumers"
  // instead if you want to read the content as a string directly.
  const downloaded = await buffer(downloadResponse.readableStreamBody);
  console.log("Downloaded file content:", downloaded.toString());
}

下载一个文件并转换为字符串( 浏览器)

import { DataLakeServiceClient } from "@azure/storage-file-datalake";

const account = "<account>";
const sas = "<sas token>";
const datalakeServiceClient = new DataLakeServiceClient(
  `https://${account}.dfs.core.windows.net${sas}`,
);

const fileSystemName = "<file system name>";
const fileName = "<file name>";
const fileSystemClient = datalakeServiceClient.getFileSystemClient(fileSystemName);
const fileClient = fileSystemClient.getFileClient(fileName);

// Get file content from position 0 to the end
// In browsers, get downloaded data by accessing downloadResponse.contentAsBlob
const downloadResponse = await fileClient.read();
if (downloadResponse.contentAsBlob) {
  const blob = await downloadResponse.contentAsBlob;
  const downloaded = await blob.text();
  console.log(`Downloaded file content ${downloaded}`);
}

解决问题

允许伐木可能有助于发现有关失败的有用信息。 为了查看 HTTP 请求和回复的日志,设置 AZURE_LOG_LEVEL 环境变量改为 info。或者,可以在运行时拨打 setLogLevel 输入 @azure/logger数字 :

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

今后的步骤

更多代码样本 :

捐款

如果您想为图书馆捐钱 请读一下 贡献指南 学习如何构建和测试密码.

版本与发布记录

@azure/storage-file-datalake 共发布 525 个版本,首次发布于 2019/12/05;过去 12 个月发布了 49 个版本。

版本发布日期距今
12.31.0latest2026/06/244 个月前
12.30.02026/06/055 个月前
12.31.0-beta.1beta2026/05/095 个月前
12.30.0-alpha.20260310.1dev2026/03/117 个月前
12.30.0-beta.12026/03/107 个月前
12.30.0-alpha.20260306.12026/03/078 个月前

其他发布通道:next → 12.28.0-beta.1,dev → 12.30.0-alpha.20260310.1,beta → 12.31.0-beta.1。

关于 @azure/storage-file-datalake 的常见问题

@azure/storage-file-datalake 是什么?

微软 Azure 存储 JavaScript - DataLake

如何安装 @azure/storage-file-datalake?

在项目目录运行 npm install @azure/storage-file-datalake,或使用 pnpm add / yarn add / bun add。

@azure/storage-file-datalake 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@azure/storage-file-datalake 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@azure/storage-file-datalake 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@azure/storage-file-datalake 可以商用吗?

@azure/storage-file-datalake 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@azure/storage-file-datalake 的下载量有多少?

根据 npm 官方下载统计,@azure/storage-file-datalake 在 2026/10/08 – 2026/11/06 这 30 天内被下载 826,531 次,日均约 27,551 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@azure/storage-file-datalake 还在维护吗?

最新版本 12.31.0 发布于 2026/06/24(4 个月前);至今共发布 525 个版本,其中过去 12 个月发布了 49 个;首次发布于 2019/12/05。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。