Mengelola Data Lake Analytics aplikasi .NET

Penting

Azure Data Lake Analytics pensiun pada 29 Februari 2024. Pelajari lebih lanjut dengan pengumuman ini.

Untuk analitik data, organisasi Anda dapat menggunakan Azure Synapse Analytics atau Microsoft Fabric.

Artikel ini menjelaskan cara mengelola akun, sumber data, pengguna, dan pekerjaan Azure Data Lake Analytics menggunakan aplikasi yang ditulis menggunakan Azure .NET SDK.

Prasyarat

  • Visual Studio 2015, Visual Studio 2013 pembaruan 4, atau Visual Studio 2012 dengan Visual C++ Terinstal.
  • SDK Microsoft Azure untuk .NET versi 2.5 atau yang lebih baru. Instal dengan menggunakan Alat penginstal platform web.
  • Paket NuGet yang Diperlukan

Menginstal paket NuGet

Paket Versi
Microsoft.Rest.ClientRuntime.Azure.Authentication 2.3.1
Microsoft.Azure.Management.DataLake.Analytics 3.0.0
Microsoft.Azure.Management.DataLake.Store 2.2.0
Microsoft.Azure.Management.ResourceManager 1.6.0-pratinjau
Microsoft.Azure.Graph.RBAC 3.4.0-pratinjau

Anda dapat menginstal paket-paket ini melalui baris perintah NuGet dengan perintah berikut:

Install-Package -Id Microsoft.Rest.ClientRuntime.Azure.Authentication  -Version 2.3.1
Install-Package -Id Microsoft.Azure.Management.DataLake.Analytics  -Version 3.0.0
Install-Package -Id Microsoft.Azure.Management.DataLake.Store  -Version 2.2.0
Install-Package -Id Microsoft.Azure.Management.ResourceManager  -Version 1.6.0-preview
Install-Package -Id Microsoft.Azure.Graph.RBAC -Version 3.4.0-preview

Variabel umum

string subid = "<Subscription ID>"; // Subscription ID (a GUID)
string tenantid = "<Tenant ID>"; // AAD tenant ID or domain. For example, "contoso.onmicrosoft.com"
string rg == "<value>"; // Resource  group name
string clientid = "abcdef01-2345-6789-0abc-def012345678"; // Sample client ID

Autentikasi

Anda memiliki beberapa opsi untuk masuk ke Azure Data Lake Analytics. Cuplikan berikut menunjukkan contoh autentikasi dengan autentikasi pengguna interaktif dengan pop-up.

Untuk ClientID, Anda dapat menggunakan ID pengguna, atau ID Aplikasi (Klien) dari perwakilan layanan.

using System;
using System.IO;
using System.Threading;
using System.Security.Cryptography.X509Certificates;

using Microsoft.Rest;
using Microsoft.Rest.Azure.Authentication;
using Microsoft.Azure.Management.DataLake.Analytics;
using Microsoft.Azure.Management.DataLake.Analytics.Models;
using Microsoft.Azure.Management.DataLake.Store;
using Microsoft.Azure.Management.DataLake.Store.Models;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.Azure.Graph.RBAC;

public static Program
{
   public static string TENANT = "microsoft.onmicrosoft.com";
   public static string CLIENTID = "abcdef01-2345-6789-0abc-def012345678";
   public static System.Uri ARM_TOKEN_AUDIENCE = new System.Uri( @"https://management.core.windows.net/");
   public static System.Uri ADL_TOKEN_AUDIENCE = new System.Uri( @"https://datalake.azure.net/" );
   public static System.Uri GRAPH_TOKEN_AUDIENCE = new System.Uri( @"https://graph.windows.net/" );

   static void Main(string[] args)
   {
      string MY_DOCUMENTS= System.Environment.GetFolderPath( System.Environment.SpecialFolder.MyDocuments);
      string TOKEN_CACHE_PATH = System.IO.Path.Combine(MY_DOCUMENTS, "my.tokencache");

      var tokenCache = GetTokenCache(TOKEN_CACHE_PATH);
      var armCreds = GetCreds_User_Popup(TENANT, ARM_TOKEN_AUDIENCE, CLIENTID, tokenCache);
      var adlCreds = GetCreds_User_Popup(TENANT, ADL_TOKEN_AUDIENCE, CLIENTID, tokenCache);
      var graphCreds = GetCreds_User_Popup(TENANT, GRAPH_TOKEN_AUDIENCE, CLIENTID, tokenCache);
   }
}

Kode sumber untuk GetCreds_User_Popup dan kode untuk opsi autentikasi lainnya dicakup dalam opsi autentikasi .NET Data Lake Analytics

Membuat objek manajemen klien

var resourceManagementClient = new ResourceManagementClient(armCreds) { SubscriptionId = subid };

var adlaAccountClient = new DataLakeAnalyticsAccountManagementClient(armCreds);
adlaAccountClient.SubscriptionId = subid;

var adlsAccountClient = new DataLakeStoreAccountManagementClient(armCreds);
adlsAccountClient.SubscriptionId = subid;

var adlaCatalogClient = new DataLakeAnalyticsCatalogManagementClient(adlCreds);
var adlaJobClient = new DataLakeAnalyticsJobManagementClient(adlCreds);

var adlsFileSystemClient = new DataLakeStoreFileSystemManagementClient(adlCreds);

var  graphClient = new GraphRbacManagementClient(graphCreds);
graphClient.TenantID = domain;

Mengelola akun

Membuat Grup Sumber Daya Azure

Jika belum membuatnya, Anda harus memiliki Azure Resource Group untuk membuat komponen Data Lake Analytics. Anda memerlukan kredensial autentikasi, ID langganan, dan lokasi Anda. Kode berikut menunjukkan cara membuat grup sumber daya:

var resourceGroup = new ResourceGroup { Location = location };
resourceManagementClient.ResourceGroups.CreateOrUpdate(groupName, rg);

Untuk informasi selengkapnya, lihat Grup Sumber Daya Azure dan Data Lake Analytics.

Membuat akun Data Lake Storage

Akun Data Lake Analytics yang pernah memerlukan akun Azure Data Lake Storage. Jika Anda belum memilikinya untuk digunakan, Anda bisa membuatnya dengan kode berikut:

var new_adls_params = new DataLakeStoreAccount(location: _location);
adlsAccountClient.Account.Create(rg, adls, new_adls_params);

Membuat akun Data Lake Analytics

Kode berikut membuat akun Azure Data Lake Storage

var new_adla_params = new DataLakeAnalyticsAccount()
{
   DefaultDataLakeStoreAccount = adls,
   Location = location
};

adlaClient.Account.Create(rg, adla, new_adla_params);

Buat daftar akun Data Lake Storage

var adlsAccounts = adlsAccountClient.Account.List().ToList();
foreach (var adls in adlsAccounts)
{
   Console.WriteLine($"ADLS: {0}", adls.Name);
}

Buat daftar akun Data Lake Analytics

var adlaAccounts = adlaClient.Account.List().ToList();

for (var adla in AdlaAccounts)
{
   Console.WriteLine($"ADLA: {0}, adla.Name");
}

Memeriksa apakah ada akun

bool exists = adlaClient.Account.Exists(rg, adla));

Mendapatkan informasi tentang akun

bool exists = adlaClient.Account.Exists(rg, adla));
if (exists)
{
   var adla_accnt = adlaClient.Account.Get(rg, adla);
}

Menghapus akun

if (adlaClient.Account.Exists(rg, adla))
{
   adlaClient.Account.Delete(rg, adla);
}

Menemukan akun Data Lake Storage default

Setiap akun Data Lake Analytics memerlukan akun Data Lake Storage default. Gunakan kode ini untuk menentukan akun Microsoft Store default untuk akun Analitik.

if (adlaClient.Account.Exists(rg, adla))
{
  var adla_accnt = adlaClient.Account.Get(rg, adla);
  string def_adls_account = adla_accnt.DefaultDataLakeStoreAccount;
}

Mengelola sumber data

Data Lake Analytics saat ini mendukung sumber data berikut:

Anda dapat membuat tautan ke akun Azure Storage.

string storage_key = "xxxxxxxxxxxxxxxxxxxx";
string storage_account = "mystorageaccount";
var addParams = new AddStorageAccountParameters(storage_key);            
adlaClient.StorageAccounts.Add(rg, adla, storage_account, addParams);

Buat daftar sumber data Azure Storage

var stg_accounts = adlaAccountClient.StorageAccounts.ListByAccount(rg, adla);

if (stg_accounts != null)
{
  foreach (var stg_account in stg_accounts)
  {
      Console.WriteLine($"Storage account: {0}", stg_account.Name);
  }
}

Buat daftar sumber Data Lake Storage

var adls_accounts = adlsClient.Account.List();

if (adls_accounts != null)
{
  foreach (var adls_accnt in adls_accounts)
  {
      Console.WriteLine($"ADLS account: {0}", adls_accnt.Name);
  }
}

Mengunggah dan mengunduh folder dan file

Anda dapat menggunakan objek manajemen klien sistem file Azure Data Lake Storage untuk mengunggah dan mengunduh file atau folder individual dari Azure ke komputer lokal Anda, menggunakan metode berikut:

  • UploadFolder
  • UploadFile
  • DownloadFolder
  • DownloadFile

Parameter pertama untuk metode ini adalah nama Akun Data Lake Storage, diikuti oleh parameter untuk jalur sumber dan jalur tujuan.

Contoh berikut menunjukkan cara mengunduh folder di Data Lake Storage.

adlsFileSystemClient.FileSystem.DownloadFolder(adls, sourcePath, destinationPath);

Membuat file di akun Data Lake Storage

using (var memstream = new MemoryStream())
{
   using (var sw = new StreamWriter(memstream, UTF8Encoding.UTF8))
   {
      sw.WriteLine("Hello World");
      sw.Flush();
      
      memstream.Position = 0;

      adlsFileSystemClient.FileSystem.Create(adls, "/Samples/Output/randombytes.csv", memstream);
   }
}

Memverifikasi jalur akun Microsoft Azure Storage

Kode berikut ini memeriksa apakah akun Microsoft Azure Storage (storageAccntName) ada di akun Data Lake Analytics (analyticsAccountName), dan jika kontainer (containerName) ada di akun Microsoft Azure Storage.

string storage_account = "mystorageaccount";
string storage_container = "mycontainer";
bool accountExists = adlaClient.Account.StorageAccountExists(rg, adla, storage_account));
bool containerExists = adlaClient.Account.StorageContainerExists(rg, adla, storage_account, storage_container));

Mengelola katalog dan pekerjaan

Objek DataLakeAnalyticsCatalogManagementClient menyediakan metode untuk mengelola database SQL yang disediakan untuk setiap akun Azure Data Lake Analytics. DataLakeAnalyticsJobManagementClient menyediakan metode untuk mengirimkan dan mengelola pekerjaan yang dijalankan pada database dengan skrip U-SQL.

Buat daftar database dan skema

Di antara beberapa hal yang dapat Anda daftarkan, yang paling umum adalah database dan skemanya. Kode berikut memperoleh kumpulan database, lalu menghitung skema untuk setiap database.

var databases = adlaCatalogClient.Catalog.ListDatabases(adla);
foreach (var db in databases)
{
  Console.WriteLine($"Database: {db.Name}");
  Console.WriteLine(" - Schemas:");
  var schemas = adlaCatalogClient.Catalog.ListSchemas(adla, db.Name);
  foreach (var schm in schemas)
  {
      Console.WriteLine($"\t{schm.Name}");
  }
}

Buat daftar kolom tabel

Kode berikut menunjukkan cara mengakses database dengan klien manajemen Katalog Data Lake Analytics untuk mencantumkan kolom dalam tabel tertentu.

var tbl = adlaCatalogClient.Catalog.GetTable(adla, "master", "dbo", "MyTableName");
IEnumerable<USqlTableColumn> columns = tbl.ColumnList;

foreach (USqlTableColumn utc in columns)
{
  Console.WriteLine($"\t{utc.Name}");
}

Mengirim pekerjaan U-SQL

Kode berikut menunjukkan cara menggunakan klien manajemen Pekerjaan Data Lake Analytics untuk mengirimkan pekerjaan.

string scriptPath = "/Samples/Scripts/SearchResults_Wikipedia_Script.txt";
Stream scriptStrm = adlsFileSystemClient.FileSystem.Open(_adlsAccountName, scriptPath);
string scriptTxt = string.Empty;
using (StreamReader sr = new StreamReader(scriptStrm))
{
    scriptTxt = sr.ReadToEnd();
}

var jobName = "SR_Wikipedia";
var jobId = Guid.NewGuid();
var properties = new USqlJobProperties(scriptTxt);
var parameters = new JobInformation(jobName, JobType.USql, properties, priority: 1, degreeOfParallelism: 1, jobId: jobId);
var jobInfo = adlaJobClient.Job.Create(adla, jobId, parameters);
Console.WriteLine($"Job {jobName} submitted.");

Buat daftar tugas yang gagal

Kode berikut mencantumkan informasi tentang pekerjaan yang gagal.

var odq = new ODataQuery<JobInformation> { Filter = "result eq 'Failed'" };
var jobs = adlaJobClient.Job.List(adla, odq);
foreach (var j in jobs)
{
   Console.WriteLine($"{j.Name}\t{j.JobId}\t{j.Type}\t{j.StartTime}\t{j.EndTime}");
}

Buat daftar alur

Kode berikut mencantumkan informasi tentang setiap alur pekerjaan yang dikirimkan ke akun.

var pipelines = adlaJobClient.Pipeline.List(adla);
foreach (var p in pipelines)
{
   Console.WriteLine($"Pipeline: {p.Name}\t{p.PipelineId}\t{p.LastSubmitTime}");
}

Buat daftar pengulangan

Kode berikut mencantumkan informasi tentang setiap pengulangan pekerjaan yang dikirimkan ke akun.

var recurrences = adlaJobClient.Recurrence.List(adla);
foreach (var r in recurrences)
{
   Console.WriteLine($"Recurrence: {r.Name}\t{r.RecurrenceId}\t{r.LastSubmitTime}");
}

Skenario grafik umum

Mencari pengguna di direktori Microsoft Entra ID

var userinfo = graphClient.Users.Get( "bill@contoso.com" );

Mendapatkan ObjectId pengguna di direktori Microsoft Entra ID

var userinfo = graphClient.Users.Get( "bill@contoso.com" );
Console.WriteLine( userinfo.ObjectId )

Mengelola kebijakan komputasi

Objek DataLakeAnalyticsAccountManagementClient menyediakan metode untuk mengelola kebijakan komputasi untuk akun Data Lake Analytics.

Mencantumkan kebijakan komputasi

Kode berikut mengambil daftar kebijakan komputasi untuk akun Data Lake Analytics.

var policies = adlaAccountClient.ComputePolicies.ListByAccount(rg, adla);
foreach (var p in policies)
{
   Console.WriteLine($"Name: {p.Name}\tType: {p.ObjectType}\tMax AUs / job: {p.MaxDegreeOfParallelismPerJob}\tMin priority / job: {p.MinPriorityPerJob}");
}

Membuat kebijakan komputasi baru

Kode berikut membuat kebijakan komputasi baru untuk akun Data Lake Analytics, menetapkan AU maksimum yang tersedia untuk pengguna yang ditentukan menjadi 50, dan prioritas pekerjaan minimum ke 250.

var userAadObjectId = "3b097601-4912-4d41-b9d2-78672fc2acde";
var newPolicyParams = new ComputePolicyCreateOrUpdateParameters(userAadObjectId, "User", 50, 250);
adlaAccountClient.ComputePolicies.CreateOrUpdate(rg, adla, "GaryMcDaniel", newPolicyParams);

Langkah berikutnya