.NET uygulaması ile Azure Data Lake Analytics’i yönetme
Önemli
Azure Data Lake Analytics 29 Şubat 2024'te kullanımdan kaldırıldı. Bu duyuru ile daha fazla bilgi edinin.
Veri analizi için kuruluşunuz Azure Synapse Analytics veya Microsoft Fabric kullanabilir.
Bu makalede Azure .NET SDK kullanılarak yazılmış bir uygulama kullanılarak Azure Data Lake Analytics hesaplarının, veri kaynaklarının, kullanıcıların ve işlerin nasıl yönetileceğini açıklanmaktadır.
Önkoşullar
- Visual Studio 2015, Visual Studio 2013 Güncelleştirme 4 veya Visual C++ Yüklü Visual Studio 2012.
- .NET sürüm 2.5 veya üzeri için Microsoft Azure SDK. Web platformu yükleyicisini kullanarak yükleyin.
- Gerekli NuGet Paketleri
NuGet paketlerini yükleme
Paket | Sürüm |
---|---|
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-önizleme |
Microsoft.Azure.Graph.RBAC | 3.4.0-önizleme |
Aşağıdaki komutlarla NuGet komut satırı aracılığıyla bu paketleri yükleyebilirsiniz:
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
Ortak değişkenler
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
Kimlik Doğrulaması
Azure Data Lake Analytics oturum açmak için birden çok seçeneğiniz vardır. Aşağıdaki kod parçacığında, açılır pencereyle etkileşimli kullanıcı kimlik doğrulaması ile kimlik doğrulaması örneği gösterilmektedir.
ClientID için bir kullanıcının kimliğini veya hizmet sorumlusunun Uygulama (İstemci) Kimliğini kullanabilirsiniz.
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);
}
}
GetCreds_User_Popup kaynak kodu ve diğer kimlik doğrulaması seçeneklerinin kodu Data Lake Analytics .NET kimlik doğrulama seçeneklerinde ele alınmıştır
İstemci yönetim nesnelerini oluşturma
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;
Hesapları yönetme
Azure Kaynak Grubu oluşturma
Henüz oluşturmadıysanız, Data Lake Analytics bileşenlerinizi oluşturmak için bir Azure Kaynak Grubunuz olmalıdır. Kimlik doğrulama kimlik bilgilerinize, abonelik kimliğinize ve bir konuma ihtiyacınız vardır. Aşağıdaki kodda kaynak grubunun nasıl oluşturulacağı gösterilmektedir:
var resourceGroup = new ResourceGroup { Location = location };
resourceManagementClient.ResourceGroups.CreateOrUpdate(groupName, rg);
Daha fazla bilgi için bkz. Azure Kaynak Grupları ve Data Lake Analytics.
Data Lake Store hesabı oluşturma
ADLA hesabı için bir ADLS hesabı gerekir. Kullanmak istediğiniz bir tane yoksa aşağıdaki kodla bir tane oluşturabilirsiniz:
var new_adls_params = new DataLakeStoreAccount(location: _location);
adlsAccountClient.Account.Create(rg, adls, new_adls_params);
Data Lake Analytics hesabı oluşturma
Aşağıdaki kod bir ADLS hesabı oluşturur
var new_adla_params = new DataLakeAnalyticsAccount()
{
DefaultDataLakeStoreAccount = adls,
Location = location
};
adlaClient.Account.Create(rg, adla, new_adla_params);
Data Lake Store hesaplarını listeleme
var adlsAccounts = adlsAccountClient.Account.List().ToList();
foreach (var adls in adlsAccounts)
{
Console.WriteLine($"ADLS: {0}", adls.Name);
}
Data Lake Analytics hesaplarını listeleme
var adlaAccounts = adlaClient.Account.List().ToList();
for (var adla in AdlaAccounts)
{
Console.WriteLine($"ADLA: {0}, adla.Name");
}
Bir hesabın mevcut olup olmadığını denetleme
bool exists = adlaClient.Account.Exists(rg, adla));
Hesap hakkında bilgi alma
bool exists = adlaClient.Account.Exists(rg, adla));
if (exists)
{
var adla_accnt = adlaClient.Account.Get(rg, adla);
}
Hesap silme
if (adlaClient.Account.Exists(rg, adla))
{
adlaClient.Account.Delete(rg, adla);
}
Varsayılan Data Lake Store hesabını alma
Her Data Lake Analytics hesabı için varsayılan bir Data Lake Store hesabı gerekir. Bir Analytics hesabının varsayılan Mağaza hesabını belirlemek için bu kodu kullanın.
if (adlaClient.Account.Exists(rg, adla))
{
var adla_accnt = adlaClient.Account.Get(rg, adla);
string def_adls_account = adla_accnt.DefaultDataLakeStoreAccount;
}
Veri kaynaklarını yönetme
Data Lake Analytics şu anda aşağıdaki veri kaynaklarını destekler:
Azure Depolama hesabına bağlantı
Azure Depolama hesaplarına bağlantılar oluşturabilirsiniz.
string storage_key = "xxxxxxxxxxxxxxxxxxxx";
string storage_account = "mystorageaccount";
var addParams = new AddStorageAccountParameters(storage_key);
adlaClient.StorageAccounts.Add(rg, adla, storage_account, addParams);
Azure Depolama veri kaynaklarını listeleme
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);
}
}
Data Lake Store veri kaynaklarını listeleme
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);
}
}
Klasörleri ve dosyaları karşıya yükleme ve indirme
Data Lake Store dosya sistemi istemci yönetim nesnesini kullanarak aşağıdaki yöntemleri kullanarak Azure'dan yerel bilgisayarınıza tek tek dosyaları veya klasörleri karşıya yükleyebilir ve indirebilirsiniz:
- UploadFolder
- Uploadfile
- İndirKlasör
- Downloadfile
Bu yöntemlerin ilk parametresi Data Lake Store Hesabının adı ve ardından kaynak yol ve hedef yol için parametrelerdir.
Aşağıdaki örnekte Data Lake Store'da klasör indirme işlemi gösterilmektedir.
adlsFileSystemClient.FileSystem.DownloadFolder(adls, sourcePath, destinationPath);
Data Lake Store hesabında dosya oluşturma
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);
}
}
Azure Depolama hesabı yollarını doğrulama
Aşağıdaki kod, Data Lake Analytics hesabında (analyticsAccountName) bir Azure Depolama hesabının (storageAccntName) mevcut olup olmadığını ve Azure Depolama hesabında bir kapsayıcı (containerName) olup olmadığını denetler.
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));
Kataloğu ve işleri yönetme
DataLakeAnalyticsCatalogManagementClient nesnesi, her Azure Data Lake Analytics hesabı için sağlanan SQL veritabanını yönetmek için yöntemler sağlar. DataLakeAnalyticsJobManagementClient, U-SQL betikleriyle veritabanında çalıştırılacak işleri göndermek ve yönetmek için yöntemler sağlar.
Veritabanlarını ve şemaları listeleme
Listeleyebileceğiniz birkaç şey arasında en yaygın olanları veritabanları ve şemalarıdır. Aşağıdaki kod bir veritabanı koleksiyonu alır ve her veritabanı için şemayı numaralandırır.
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}");
}
}
Tablo sütunlarını listeleme
Aşağıdaki kod, belirtilen tablodaki sütunları listelemek için bir Data Lake Analytics Kataloğu yönetim istemcisiyle veritabanına nasıl erişeceklerini gösterir.
var tbl = adlaCatalogClient.Catalog.GetTable(adla, "master", "dbo", "MyTableName");
IEnumerable<USqlTableColumn> columns = tbl.ColumnList;
foreach (USqlTableColumn utc in columns)
{
Console.WriteLine($"\t{utc.Name}");
}
U-SQL işi gönderme
Aşağıdaki kod, bir iş göndermek için Data Lake Analytics İş yönetimi istemcisinin nasıl kullanılacağını gösterir.
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.");
Başarısız işleri listeleme
Aşağıdaki kod, başarısız olan işler hakkındaki bilgileri listeler.
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}");
}
İşlem hatlarını listeleme
Aşağıdaki kod, hesaba gönderilen her iş işlem hattıyla ilgili bilgileri listeler.
var pipelines = adlaJobClient.Pipeline.List(adla);
foreach (var p in pipelines)
{
Console.WriteLine($"Pipeline: {p.Name}\t{p.PipelineId}\t{p.LastSubmitTime}");
}
Yinelenmeleri listeleme
Aşağıdaki kod, hesaba gönderilen işlerin her yinelenme sayısıyla ilgili bilgileri listeler.
var recurrences = adlaJobClient.Recurrence.List(adla);
foreach (var r in recurrences)
{
Console.WriteLine($"Recurrence: {r.Name}\t{r.RecurrenceId}\t{r.LastSubmitTime}");
}
Yaygın grafik senaryoları
Microsoft Entra ID dizininde kullanıcı arama
var userinfo = graphClient.Users.Get( "bill@contoso.com" );
Microsoft Entra ID dizinindeki bir kullanıcının ObjectId değerini alma
var userinfo = graphClient.Users.Get( "bill@contoso.com" );
Console.WriteLine( userinfo.ObjectId )
İşlem ilkelerini yönetme
DataLakeAnalyticsAccountManagementClient nesnesi, bir Data Lake Analytics hesabı için işlem ilkelerini yönetmek için yöntemler sağlar.
İşlem ilkelerini listeleme
Aşağıdaki kod, Data Lake Analytics hesabı için işlem ilkelerinin listesini alır.
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}");
}
Yeni işlem ilkesi oluşturma
Aşağıdaki kod, bir Data Lake Analytics hesabı için yeni bir işlem ilkesi oluşturur ve belirtilen kullanıcının kullanabileceği en yüksek AU sayısını 50 ve minimum iş önceliğini 250 olarak ayarlar.
var userAadObjectId = "3b097601-4912-4d41-b9d2-78672fc2acde";
var newPolicyParams = new ComputePolicyCreateOrUpdateParameters(userAadObjectId, "User", 50, 250);
adlaAccountClient.ComputePolicies.CreateOrUpdate(rg, adla, "GaryMcDaniel", newPolicyParams);