Biblioteca cliente de Data Lake de Azure Storage Files para .NET: versión 12.17.0

Versión del servidor: 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 y 2019-02-02

Azure Data Lake incluye todas las funcionalidades necesarias para facilitar a los desarrolladores, científicos de datos y analistas el almacenamiento de datos de cualquier tamaño, forma y velocidad, y realizar todos los tipos de procesamiento y análisis entre plataformas y lenguajes. Quita las complejidades de ingesta y almacenamiento de todos los datos acelerando al mismo tiempo la puesta en marcha y ejecución con análisis de lotes, streaming e interactivos.

Código | fuentePaquete (NuGet) | Documentación | de referencia de APIDocumentación | de la API RESTDocumentación del producto

Introducción

Instalar el paquete

Instale la biblioteca cliente de Data Lake de Azure Storage Files para .NET con NuGet:

dotnet add package Azure.Storage.Files.DataLake

Requisitos previos

Necesita una suscripción de Azure y una cuenta de almacenamiento para usar este paquete.

Para crear una cuenta de almacenamiento, puede usar Azure Portal, Azure PowerShell o la CLI de Azure. A continuación se facilita un ejemplo mediante el uso de la CLI de Azure:

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

Conceptos clave

DataLake Storage Gen2 se diseñó para:

  • Servicio de varios petabytes de información al tiempo que mantiene cientos de gigabits de rendimiento
  • Le permite administrar fácilmente grandes cantidades de datos.

Entre las características clave de DataLake Storage Gen2 se incluyen:

  • Acceso compatible con Hadoop
  • Superconjunto de permisos POSIX
  • Rentable en términos de capacidad de almacenamiento y transacciones de bajo costo
  • Controlador optimizado para el análisis de macrodatos

Parte fundamental de Data Lake Storage Gen2 es la incorporación de un espacio de nombres jerárquico en Blob Storage. El espacio de nombres jerárquico organiza los objetos o archivos en una jerarquía de directorios para un acceso eficaz a los datos.

Anteriormente, los análisis basados en la nube tenían que llegar a un acuerdo en materia de rendimiento, administración y seguridad. Data Lake Storage Gen2 aborda cada uno de estos aspectos de las siguientes formas:

  • El rendimiento se optimiza porque no es necesario copiar ni transformar datos como requisito previo para el análisis. El espacio de nombres jerárquico mejora considerablemente el rendimiento de las operaciones de administración de directorios y, consecuentemente, el rendimiento general del trabajo.
  • La administración es más fácil, ya que puede organizar y manipular archivos a través de directorios y subdirectorios.
  • La seguridad se aplicable porque se pueden definir permisos POSIX en los directorios o archivos individuales.
  • La rentabilidad se hace posible gracias a que Data Lake Storage Gen2 se ha diseñado a partir de Azure Blob Storage de bajo costo. Las características adicionales reducen aún más el costo total de propiedad para la ejecución de análisis de macrodatos en Azure.

Data Lake Storage Gen2 ofrece dos tipos de recursos:

  • El sistema de archivos usado a través de "DataLakeFileSystemClient"
  • La ruta de acceso usada a través de "DataLakeFileClient" o "DataLakeDirectoryClient"
ADLS Gen2 Blob
Sistema de archivos Contenedor
Ruta de acceso (archivo o directorio) Blob

Nota: Esta biblioteca cliente no admite cuentas de almacenamiento deshabilitadas del espacio de nombres jerárquico (HNS).

Seguridad para subprocesos

Garantizamos que todos los métodos de instancia de cliente sean seguros para subprocesos e independientes entre sí (guía). Esto garantiza que la recomendación de reutilizar instancias de cliente siempre es segura, incluso entre subprocesos.

Conceptos adicionales

Opciones | de clienteAcceso a la respuesta | Operaciones | de larga duraciónControl de errores | Diagnóstico | Burla | Duración del cliente

Ejemplos

Creación de un objeto DataLakeServiceClient

StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(storageAccountName, storageAccountKey);

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

Creación de un 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();

Creación de un 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();

Creación de un dataLakeFileClient

Creación de DataLakeFileClient desde dataLakeDirectoryClient

// 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();

Creación de DataLakeFileClient desde dataLakeFileSystemClient

// 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();

Anexar datos a un archivo 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);

Leer datos de un archivo DataLake

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

Enumeración o recorrido a través de un sistema de archivos de DataLake

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

Establecer permisos en un archivo 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);

Establecer controles de acceso (ACL) en un archivo DataLake

// 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);

Obtener controles de acceso (ACL) en un archivo DataLake

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

Cambiar el nombre de un archivo DataLake

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

Cambiar el nombre de un directorio de DataLake

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

Obtener propiedades en un archivo DataLake

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

Obtener propiedades en un directorio DataLake

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

Solución de problemas

Todas las operaciones del servicio File DataLake producirán una excepción RequestFailedException en caso de error con s útilesErrorCode. Muchos de estos errores son recuperables.

Pasos siguientes

Introducción a nuestros ejemplos de DataLake:

  1. Hola mundo: Anexar, leer y enumerar archivos dataLake (o de forma asincrónica)
  2. Autenticación: autenticación con acceso público, claves compartidas, firmas de acceso compartido y Azure Active Directory.

Contribuciones

Consulte storage CONTRIBUTING.md para obtener más información sobre la compilación, las pruebas y la contribución a esta biblioteca.

Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución. Para más información, visite cla.microsoft.com.

Este proyecto ha adoptado el Código de conducta de Microsoft Open Source. Para más información, consulte las preguntas más frecuentes del código de conducta o póngase en contacto con opencode@microsoft.com si tiene cualquier otra pregunta o comentario.

Impresiones