.NET용 Azure Storage Files Data Lake 클라이언트 라이브러리 - 버전 12.13.1

서버 버전: 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 Storage Files Data Lake 클라이언트 라이브러리를 설치합니다.

dotnet add package Azure.Storage.Files.DataLake

필수 구성 요소

이 패키지를 사용하려면 Azure 구독스토리지 계정이 필요합니다.

새 Storage 계정을 만들려면 Azure Portal, Azure PowerShell 또는 Azure CLI를 사용할 수 있습니다. 다음은 Azure CLI 사용 예입니다.

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

주요 개념

DataLake Storage Gen2는 다음을 수행하도록 설계되었습니다.

  • 수백 기가비트의 처리량을 유지하면서 여러 페타바이트 규모의 정보를 처리합니다.
  • 대량의 데이터를 쉽게 관리할 수 있습니다.

DataLake Storage Gen2의 주요 기능은 다음과 같습니다.

  • Hadoop 호환 액세스
  • POSIX 사용 권한 상위 집합
  • 저렴한 스토리지 용량 및 트랜잭션 측면에서 비용 효율적
  • 빅 데이터 분석을 위한 최적화된 드라이버

Data Lake Storage Gen2의 기본적인 부분은 계층 구조 네임스페이스를 Blob 스토리지에 추가하는 것입니다. 계층 구조 네임스페이스는 효율적인 데이터 액세스를 위해 개체/파일을 디렉터리 계층 구조로 구성합니다.

과거 클라우드 기반 분석은 성능, 관리 및 보안 영역을 양보해야 했습니다. Data Lake Storage Gen2는 이러한 각 측면을 다음과 같은 방법으로 해결합니다.

  • 분석의 필수 구성 요소로 데이터를 복사하거나 변환할 필요가 없으므로 성능이 최적화됩니다. 계층 구조 네임스페이스는 디렉터리 관리 작업의 성능을 크게 향상시켜 전반적인 작업 성능을 향상시킵니다.
  • 디렉터리 및 하위 디렉터리를 통해 파일을 구성하고 조작할 수 있으므로 관리가 더 쉽습니다.
  • 보안은 디렉터리 또는 개별 파일에 대한 POSIX 권한을 정의할 수 있으므로 적용할 수 있습니다.
  • Data Lake Storage Gen2가 저비용 Azure Blob Storage 위에 빌드되므로 비용 효과를 얻을 수 있습니다. 추가 기능을 통해 Azure에서 빅 데이터 분석을 실행하기 위한 총 소유 비용이 더 낮아집니다.

Data Lake Storage Gen2 두 가지 유형의 리소스를 제공합니다.

  • 'DataLakeFileSystemClient'를 통해 사용되는 파일 시스템
  • 'DataLakeFileClient' 또는 'DataLakeDirectoryClient'를 통해 사용되는 경로
ADLS Gen2 Blob
파일 시스템 컨테이너
경로(파일 또는 디렉터리) Blob

참고: 이 클라이언트 라이브러리는 HNS(계층 구조 네임스페이스) 사용 안 함 스토리지 계정을 지원하지 않습니다.

스레드로부터의 안전성

모든 클라이언트 instance 메서드는 스레드로부터 안전하고 서로 독립적임을 보장합니다(지침). 이렇게 하면 스레드 간에 클라이언트 인스턴스를 다시 사용하는 것이 항상 안전합니다.

추가 개념

클라이언트 옵션 | 응답 | 에 액세스 장기 실행 작업 | 오류 | 처리 진단 | 조롱 | 클라이언트 수명

예제

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(Randomize("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(Randomize("sample-filesystem-append"));
filesystem.Create();

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

DataLakeFileClient 만들기

DataLakeDirectoryClient에서 DataLakeFileClient 만들기

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

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

DataLakeFileSystemClient에서 DataLakeFileClient 만들기

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

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

DataLake 파일에 데이터 추가

// Create a file
DataLakeFileClient file = filesystem.GetFileClient(Randomize("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(Randomize("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(Randomize("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();

문제 해결

모든 File DataLake 서비스 작업은 도움이 ErrorCode되는 s와 함께 실패 시 RequestFailedException을 throw합니다. 이러한 오류 중 대부분은 복구할 수 있습니다.

다음 단계

DataLake 샘플 시작:

  1. 헬로 월드: DataLake 파일 추가, 읽기 및 나열(또는 비동기)
  2. 인증: 공용 액세스, 공유 키, 공유 액세스 서명 및 Azure Active Directory를 사용하여 인증합니다.

참여

이 라이브러리의 빌드, 테스트 및 기여에 대한 자세한 내용은 Storage CONTRIBUTING.md 참조하세요.

이 프로젝트에 대한 기여와 제안을 환영합니다. 대부분의 경우 기여하려면 권한을 부여하며 실제로 기여를 사용할 권한을 당사에 부여한다고 선언하는 CLA(기여자 라이선스 계약)에 동의해야 합니다. 자세한 내용은 cla.microsoft.com.

이 프로젝트에는 Microsoft Open Source Code of Conduct(Microsoft 오픈 소스 준수 사항)가 적용됩니다. 자세한 내용은 Code of Conduct FAQ(규정 FAQ)를 참조하세요. 또는 추가 질문이나 의견은 opencode@microsoft.com으로 문의하세요.

Impressions