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:
Menautkan ke akun Azure Storage
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);