Azure Data Lake(一) 在NET Core 控制檯中操作 Data Lake Storage

一,引言

  Azure Data Lake Storage Gen2 是一組專用於大數據分析的功能,基於 Azure Blob Storage 構建的。Data Lake Storage Gen2 包含了 Gen1 和 Blob Storage 的存儲功能。但是在實際項目中如何使用,如何讀取數據?如何操作數據?我們可以先從官方概念中先了解什麼是 Azure Data Lake

以下引用於官方的術語--------------------

Data Lake Storage Gen2 使 Azure 存儲成爲在 Azure 上構建企業 Data Lake 的基礎。 Data Lake Storage Gen2 從一開始就設計爲存儲數千萬億字節的信息,同時保持數百千兆位的吞吐量,允許你輕鬆管理大量數據。

Data Lake Storage Gen2 在 Blob 存儲的基礎上構建,並通過以下方式增強了性能、管理和安全性:

  • 優化了性能,因爲你不需要將複製或轉換數據作爲分析的先決條件。 與 Blob 存儲上的平面命名空間相比,分層命名空間極大地提高了目錄管理操作的性能,從而提高了整體作業性能。

  • 管理更爲容易,因爲你可以通過目錄和子目錄來組織和操作文件。

  • 安全性是可以強制實施的,因爲可以在目錄或單個文件上定義 POSIX 權限。

巴拉巴拉說了一大堆,我們該如何使用呢,接下來我們就通過實踐(代碼操作)的方式進一步瞭解Azure Data Lake

二,正文

1,創建 Azure Data Lake Gen2

 Azure Portal 點擊 “Create a resource”, 選擇 “Storage account",並點擊 “Create”

輸入以下相關參數

Resource group:“Web_Test_AC_RG”

Storage account name:“cnbatedatalake”

Region:“East Asia”

Performance:“Standard”

Redundancy:“Locally-redundant storage(LRS)”

點擊 “Next:Advanced >” 進行下一步操作

是否啓用“分層命名空間”,可以在下圖圈中的部分進行設置,並點擊 “Review + create”

預校驗完成後,點擊 “Create” 進行創建

2,通過控制檯代碼操作 Azure Data Lake 

2.1 創建新的NET Core 控制檯程序,添加 Azure Data Lake Storage 的 Nuget 程序包

也可以使用程序包管理器控制檯進行安裝

Install-Package Azure.Storage.Files.DataLake -Version 12.8.0

訪問 Azure Data Lake 得通過授權,需要安裝 “Azure.Identity”

使用程序包管理器進行安裝

Install-Package Azure.Identity -Version 1.5.0

代碼部分 Program.cs

重點:接下來,需要將之前在Azure上註冊的服務主體的 AZURE_CLIENT_ID(應用程序ID)AZURE_CLIENT_SECRET(客戶端密碼)AZURE_TENANT_ID(租戶ID)配置到代碼變量中去。

該代碼的主要目的在 storage account 的 container(如果沒有 "cdl" 容器,則創建) 下創建文件目錄 父目錄=》"my-directory",子目錄=》"my-subdirectory"

 1 class Program
 2     {
 3          static async Task Main(string[] args)
 4         {
 5             var accountName = "cnbatedatalake";
 6             var clientID = "xxxxxxxxx-xxx-xxxx-xxxx-xxxxxxxxx";
 7             var clientSecret = "JJxxxxxxxxxxxxxxbB6gIrxxxxxxxxNnI";
 8             var tenantID = "9bda686c-xxxx-xxxxx-xxxxx-xxxx-xxxx";
 9 
10             var fileSystemName = "cdl";
11 
12             DataLakeServiceClient dataLakeServiceClient = null;
13             GetDataLakeServiceClient(ref dataLakeServiceClient, accountName, clientID, clientSecret, tenantID);
14             15             16             
17 
18             var filedirClient= await CreateDirectory(dataLakeServiceClient, fileSystemName);
19 
20             Console.ReadLine();
21         }
22 
23         public static async Task<DataLakeDirectoryClient> CreateDirectory
24     (DataLakeServiceClient serviceClient, string fileSystemName)
25         {
26 
27             DataLakeFileSystemClient fileSystemClient =
28     serviceClient.GetFileSystemClient(fileSystemName);
29             if (!await fileSystemClient.ExistsAsync())
30             {
31                 await serviceClient.CreateFileSystemAsync(fileSystemName);
32             }
33             
34             DataLakeDirectoryClient directoryClient =
35                 await fileSystemClient.CreateDirectoryAsync("my-directory");
36 
37             return await directoryClient.CreateSubDirectoryAsync("my-subdirectory");
38         }
39 
40         public static void GetDataLakeServiceClient(ref DataLakeServiceClient dataLakeServiceClient,
41     String accountName, String clientID, string clientSecret, string tenantID)
42         {
43 
44             TokenCredential credential = new ClientSecretCredential(tenantID, clientID, clientSecret);
45 
46             string dfsUri = "https://" + accountName + ".dfs.core.windows.net/";
47 
48             //dataLakeServiceClient = new DataLakeServiceClient(new Uri(dfsUri), credential: new DefaultAzureCredential());
49 
50             dataLakeServiceClient = new DataLakeServiceClient(new Uri(dfsUri), credential);
51         }
52     }

接下啦,我們直接運行代碼,並在 cnbatedatalake 這個 Azure Data Lake 中查看是否創建容器以及文件目錄

父目錄 “my-directory”

子目錄 “my-subdirectory”

OK,成功。這裏我就不在演示文件/文件目錄的添加,刪除等操作了,稍後我會重新補充一下代碼,供大家參考。

*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。🎉🎉🎉🎉🎉

三,結尾

  ok,今天所演示的就是通過代碼 service principal 的權限創建Azure Data Lake 的容器,然後在該容器中創建文件目錄。在實際項目中,我們其實是需要將不同的數據寫入到 Azure Data Lake 中。同時也要避免掉把一些重要的機密信息通過硬編碼的方式保留在系統中。

作者:Allen 

參考鏈接:Azure Data Lake Storage Gen2 簡介

版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章