你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

适用于 .NET 的 Azure 存储文件 Data Lake 客户端库 - 版本 12.17.0

服务器版本:2021-02-12、2020-12-06、2020-10-02、 2020-08-04、2020-06-12、2020-04-08、2020-02-10、2019-12-12、2019-07-07 和 2019-02-02

Azure Data Lake 包括了所有所需的功能,使开发人员、数据专家和分析师可以更轻松地存储任何大小、形状和速度的数据以及跨平台和语言进行各种类型的处理和分析。 它消除了插入和存储所有数据的复杂性,同时启动更快,可与批量、流式、交互式分析一起运行。

源代码 | 包 (NuGet) | API 参考文档 | REST API 文档 | 产品文档

入门

安装包

使用 NuGet 安装适用于 .NET 的 Azure 存储文件 Data Lake 客户端库:

dotnet add package Azure.Storage.Files.DataLake

先决条件

需要 Azure 订阅存储帐户 才能使用此包。

若要创建新的存储帐户,可以使用 Azure 门户Azure PowerShellAzure CLI。 下面是使用 Azure CLI 的示例:

az storage account create --name MyStorageAccount --resource-group MyResourceGroup --location westus --sku Standard_LRS

关键概念

DataLake Storage Gen2 旨在:

  • 维护数 PB 级信息,同时保持数百吉比特的吞吐量
  • 使你能够轻松管理大量数据

DataLake Storage Gen2 的主要功能包括:

  • Hadoop 兼容访问
  • POSIX 权限的超集
  • 在低成本存储容量和事务方面经济高效
  • 用于大数据分析的优化驱动程序

Data Lake Storage Gen2 的一个基本部分是向 Blob 存储添加分层命名空间。 分层命名空间将对象/文件组织到目录层次结构中,以便进行有效的数据访问。

过去,基于云的分析必须在性能、管理和安全性方面做出妥协。 Data Lake Storage Gen2 通过以下方式解决这些方面中的每个问题:

  • 优化了性能,因为你不需要将复制或转换数据作为分析的先决条件。 分层命名空间极大地提高了目录管理操作的性能,从而提高了整体作业性能。
  • 管理更为容易,因为你可以通过目录和子目录来组织和操作文件。
  • 安全性是可以强制实施的,因为可以在目录或单个文件上定义 POSIX 权限。
  • 由于 Data Lake Storage Gen2 基于低成本的 Azure Blob 存储而构建,因此,可以实现成本效益。 这些新增功能进一步降低了在 Azure 上运行大数据分析的总拥有成本。

Data Lake Storage Gen2提供两种类型的资源:

  • 通过“DataLakeFileSystemClient”使用的文件系统
  • 通过“DataLakeFileClient”或“DataLakeDirectoryClient”使用的路径
ADLS Gen2 Blob
Filesystem 容器
路径 (文件或目录) Blob

注意:此客户端库不支持分层命名空间 (HNS) 禁用的存储帐户。

线程安全

我们保证所有客户端实例方法都是线程安全的,并且相互独立, (准则) 。 这可确保重用客户端实例的建议始终是安全的,即使跨线程也是如此。

其他概念

客户端选项 | 访问响应 | 长时间运行的操作 | 处理失败 | 诊断 | 嘲笑 | 客户端生存期

示例

创建 DataLakeServiceClient

StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(storageAccountName, storageAccountKey);

// Create DataLakeServiceClient using StorageSharedKeyCredentials
DataLakeServiceClient serviceClient = new DataLakeServiceClient(serviceUri, sharedKeyCredential);

创建 DataLakeFileSystemClient

StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(storageAccountName, storageAccountKey);

// Create DataLakeServiceClient using StorageSharedKeyCredentials
DataLakeServiceClient serviceClient = new DataLakeServiceClient(serviceUri, sharedKeyCredential);

// Create a DataLake Filesystem
DataLakeFileSystemClient filesystem = serviceClient.GetFileSystemClient("sample-filesystem");
filesystem.Create();

创建 DataLakeDirectoryClient

StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(storageAccountName, storageAccountKey);

// Create DataLakeServiceClient using StorageSharedKeyCredentials
DataLakeServiceClient serviceClient = new DataLakeServiceClient(serviceUri, sharedKeyCredential);

// Get a reference to a filesystem named "sample-filesystem-append" and then create it
DataLakeFileSystemClient filesystem = serviceClient.GetFileSystemClient("sample-filesystem-append");
filesystem.Create();

// Create
DataLakeDirectoryClient directory = filesystem.GetDirectoryClient("sample-file");
directory.Create();

创建 DataLakeFileClient

从 DataLakeDirectoryClient 创建 DataLakeFileClient

// Create a DataLake Directory
DataLakeDirectoryClient directory = filesystem.CreateDirectory("sample-directory");
directory.Create();

// Create a DataLake File using a DataLake Directory
DataLakeFileClient file = directory.GetFileClient("sample-file");
file.Create();

从 DataLakeFileSystemClient 创建 DataLakeFileClient

// Create a DataLake Filesystem
DataLakeFileSystemClient filesystem = serviceClient.GetFileSystemClient("sample-filesystem");
filesystem.Create();

// Create a DataLake file using a DataLake Filesystem
DataLakeFileClient file = filesystem.GetFileClient("sample-file");
file.Create();

将数据追加到 DataLake 文件

// Create a file
DataLakeFileClient file = filesystem.GetFileClient("sample-file");
file.Create();

// Append data to the DataLake File
file.Append(File.OpenRead(sampleFilePath), 0);
file.Flush(SampleFileContent.Length);

从 DataLake 文件读取数据

Response<FileDownloadInfo> fileContents = file.Read();

列出/遍历 DataLake 文件系统

foreach (PathItem pathItem in filesystem.GetPaths())
{
    names.Add(pathItem.Name);
}

设置对 DataLake 文件的权限

// Create a DataLake file so we can set the Access Controls on the files
DataLakeFileClient fileClient = filesystem.GetFileClient("sample-file");
fileClient.Create();

// Set the Permissions of the file
PathPermissions pathPermissions = PathPermissions.ParseSymbolicPermissions("rwxrwxrwx");
fileClient.SetPermissions(permissions: pathPermissions);

) DataLake 文件设置访问控制 (ACL

// Create a DataLake file so we can set the Access Controls on the files
DataLakeFileClient fileClient = filesystem.GetFileClient("sample-file");
fileClient.Create();

// Set Access Control List
IList<PathAccessControlItem> accessControlList
    = PathAccessControlExtensions.ParseAccessControlList("user::rwx,group::r--,mask::rwx,other::---");
fileClient.SetAccessControlList(accessControlList);

获取对 DataLake 文件) (ACL 的访问控制

// Get Access Control List
PathAccessControl accessControlResponse = fileClient.GetAccessControl();

重命名 DataLake 文件

DataLakeFileClient renamedFileClient = fileClient.Rename("sample-file2");

重命名 DataLake 目录

DataLakeDirectoryClient renamedDirectoryClient = directoryClient.Rename("sample-directory2");

获取 DataLake 文件的属性

// Get Properties on a File
PathProperties filePathProperties = fileClient.GetProperties();

获取 DataLake 目录的属性

// Get Properties on a Directory
PathProperties directoryPathProperties = directoryClient.GetProperties();

故障排除

所有文件 DataLake 服务操作都会在失败时引发 RequestFailedException ,并具有有用的 ErrorCodes。 其中许多错误是可恢复的。

后续步骤

DataLake 示例入门:

  1. Hello World: (或异步) 追加、读取和列出 DataLake 文件
  2. 身份验证:使用公共访问、共享密钥、共享访问签名和 Azure Active Directory 进行身份验证。

贡献

有关生成、测试和参与此库的详细信息,请参阅 存储 CONTRIBUTING.md

本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 cla.microsoft.com

此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。

曝光数