Zarządzanie usługą Azure Data Lake Analytics za pomocą aplikacji platformy .NET
Ważne
Usługa Azure Data Lake Analytics została wycofana 29 lutego 2024 r. Dowiedz się więcej z tym ogłoszeniem.
W przypadku analizy danych organizacja może używać Azure Synapse Analytics lub Microsoft Fabric.
W tym artykule opisano sposób zarządzania kontami usługi Azure Data Lake Analytics, źródłami danych, użytkownikami i zadaniami przy użyciu aplikacji napisanej przy użyciu zestawu AZURE .NET SDK.
Wymagania wstępne
- Zainstalowany program Visual Studio 2015, Visual Studio 2013 Update 4 lub Visual Studio 2012 z językiem Visual C++.
- Zestaw Microsoft Azure SDK dla programu .NET w wersji 2.5 lub nowszej. Można go zainstalować przy użyciu Instalatora platformy sieci Web.
- Wymagane pakiety NuGet
Instalowanie pakietów NuGet
Pakiet | Wersja |
---|---|
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-preview |
Microsoft.Azure.Graph.RBAC | 3.4.0-preview |
Te pakiety można zainstalować za pomocą wiersza polecenia NuGet za pomocą następujących poleceń:
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
Typowe zmienne
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
Authentication
Istnieje wiele opcji logowania do usługi Azure Data Lake Analytics. Poniższy fragment kodu przedstawia przykład uwierzytelniania z interaktywnym uwierzytelnianiem użytkownika z wyskakującym okienkiem.
W polu ClientID można użyć identyfikatora użytkownika lub identyfikatora aplikacji (klienta) jednostki usługi.
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);
}
}
Kod źródłowy GetCreds_User_Popup i kod innych opcji uwierzytelniania są omówione w opcjach uwierzytelniania Data Lake Analytics .NET
Tworzenie obiektów zarządzania klientami
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;
Zarządzanie kontami
Tworzenie grupy zasobów platformy Azure
Jeśli jeszcze go nie utworzono, musisz mieć grupę zasobów platformy Azure, aby utworzyć składniki Data Lake Analytics. Potrzebujesz poświadczeń uwierzytelniania, identyfikatora subskrypcji i lokalizacji. Poniższy kod pokazuje, jak utworzyć grupę zasobów:
var resourceGroup = new ResourceGroup { Location = location };
resourceManagementClient.ResourceGroups.CreateOrUpdate(groupName, rg);
Aby uzyskać więcej informacji, zobacz Grupy zasobów platformy Azure i Data Lake Analytics.
Tworzenie konta usługi Data Lake Store
Konto usługi ADLA w historii wymaga konta usługi ADLS. Jeśli nie masz jeszcze jednego do użycia, możesz go utworzyć przy użyciu następującego kodu:
var new_adls_params = new DataLakeStoreAccount(location: _location);
adlsAccountClient.Account.Create(rg, adls, new_adls_params);
Tworzenie konta Data Lake Analytics
Poniższy kod tworzy konto usługi ADLS
var new_adla_params = new DataLakeAnalyticsAccount()
{
DefaultDataLakeStoreAccount = adls,
Location = location
};
adlaClient.Account.Create(rg, adla, new_adla_params);
Wyświetlanie listy kont usługi Data Lake Store
var adlsAccounts = adlsAccountClient.Account.List().ToList();
foreach (var adls in adlsAccounts)
{
Console.WriteLine($"ADLS: {0}", adls.Name);
}
Wyświetlanie listy kont Data Lake Analytics
var adlaAccounts = adlaClient.Account.List().ToList();
for (var adla in AdlaAccounts)
{
Console.WriteLine($"ADLA: {0}, adla.Name");
}
Sprawdzanie, czy konto istnieje
bool exists = adlaClient.Account.Exists(rg, adla));
Uzyskiwanie informacji o koncie
bool exists = adlaClient.Account.Exists(rg, adla));
if (exists)
{
var adla_accnt = adlaClient.Account.Get(rg, adla);
}
Usuwanie konta
if (adlaClient.Account.Exists(rg, adla))
{
adlaClient.Account.Delete(rg, adla);
}
Pobieranie domyślnego konta usługi Data Lake Store
Każde konto Data Lake Analytics wymaga domyślnego konta usługi Data Lake Store. Użyj tego kodu, aby określić domyślne konto sklepu dla konta usługi Analytics.
if (adlaClient.Account.Exists(rg, adla))
{
var adla_accnt = adlaClient.Account.Get(rg, adla);
string def_adls_account = adla_accnt.DefaultDataLakeStoreAccount;
}
Zarządzanie źródłami danych
Data Lake Analytics obecnie obsługuje następujące źródła danych:
Łączenie z kontem usługi Azure Storage
Możesz tworzyć linki do kont usługi Azure Storage.
string storage_key = "xxxxxxxxxxxxxxxxxxxx";
string storage_account = "mystorageaccount";
var addParams = new AddStorageAccountParameters(storage_key);
adlaClient.StorageAccounts.Add(rg, adla, storage_account, addParams);
Wyświetlanie listy źródeł danych usługi 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);
}
}
Wyświetlanie listy źródeł danych usługi Data Lake Store
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);
}
}
Przekazywanie i pobieranie folderów i plików
Za pomocą obiektu zarządzania klientami systemu plików usługi Data Lake Store można przekazywać i pobierać poszczególne pliki lub foldery z platformy Azure do komputera lokalnego przy użyciu następujących metod:
- UploadFolder
- Uploadfile
- Pobierzfolder
- Downloadfile
Pierwszym parametrem dla tych metod jest nazwa konta usługi Data Lake Store, po którym następują parametry ścieżki źródłowej i ścieżki docelowej.
W poniższym przykładzie pokazano, jak pobrać folder w usłudze Data Lake Store.
adlsFileSystemClient.FileSystem.DownloadFolder(adls, sourcePath, destinationPath);
Tworzenie pliku na koncie usługi Data Lake Store
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);
}
}
Weryfikowanie ścieżek konta usługi Azure Storage
Poniższy kod sprawdza, czy konto usługi Azure Storage (storageAccntName) istnieje na koncie Data Lake Analytics (analyticsAccountName), a jeśli kontener (containerName) istnieje na koncie usługi 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));
Zarządzanie katalogiem i zadaniami
Obiekt DataLakeAnalyticsCatalogManagementClient udostępnia metody zarządzania bazą danych SQL świadczoną dla każdego konta usługi Azure Data Lake Analytics. Obiekt DataLakeAnalyticsJobManagementClient udostępnia metody przesyłania zadań uruchamianych w bazie danych i zarządzania nimi za pomocą skryptów U-SQL.
Wyświetlanie listy baz danych i schematów
Wśród kilku elementów, które można wyświetlić, najczęściej są to bazy danych i ich schemat. Poniższy kod uzyskuje kolekcję baz danych, a następnie wylicza schemat dla każdej bazy danych.
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}");
}
}
Wyświetlanie listy kolumn tabeli
Poniższy kod pokazuje, jak uzyskać dostęp do bazy danych za pomocą klienta zarządzania katalogiem Data Lake Analytics, aby wyświetlić listę kolumn w określonej tabeli.
var tbl = adlaCatalogClient.Catalog.GetTable(adla, "master", "dbo", "MyTableName");
IEnumerable<USqlTableColumn> columns = tbl.ColumnList;
foreach (USqlTableColumn utc in columns)
{
Console.WriteLine($"\t{utc.Name}");
}
Przesyłanie zadania U-SQL
Poniższy kod pokazuje, jak przesłać zadanie przy użyciu klienta zarządzania zadaniami Data Lake Analytics.
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.");
Wyświetlanie listy zadań, które zakończyły się niepowodzeniem
Poniższy kod zawiera listę informacji o zadaniach, które zakończyły się niepowodzeniem.
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}");
}
Wyświetlanie listy potoków
Poniższy kod zawiera listę informacji o każdym potoku zadań przesłanych do konta.
var pipelines = adlaJobClient.Pipeline.List(adla);
foreach (var p in pipelines)
{
Console.WriteLine($"Pipeline: {p.Name}\t{p.PipelineId}\t{p.LastSubmitTime}");
}
Wyświetlanie listy cykli
Poniższy kod zawiera informacje o każdym cyklu zadań przesłanych do konta.
var recurrences = adlaJobClient.Recurrence.List(adla);
foreach (var r in recurrences)
{
Console.WriteLine($"Recurrence: {r.Name}\t{r.RecurrenceId}\t{r.LastSubmitTime}");
}
Typowe scenariusze grafu
Wyszukiwanie użytkownika w katalogu Tożsamość Microsoft Entra
var userinfo = graphClient.Users.Get( "bill@contoso.com" );
Pobieranie identyfikatora ObjectId użytkownika w katalogu Tożsamość Microsoft Entra
var userinfo = graphClient.Users.Get( "bill@contoso.com" );
Console.WriteLine( userinfo.ObjectId )
Zarządzanie zasadami obliczeniowymi
Obiekt DataLakeAnalyticsAccountManagementClient udostępnia metody zarządzania zasadami obliczeniowymi dla konta Data Lake Analytics.
Wyświetlanie listy zasad obliczeniowych
Poniższy kod pobiera listę zasad obliczeniowych dla konta 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}");
}
Tworzenie nowych zasad obliczeniowych
Poniższy kod tworzy nowe zasady obliczeniowe dla konta Data Lake Analytics, ustawiając maksymalną liczbę jednostek AU dostępnych dla określonego użytkownika na 50, a minimalny priorytet zadania na 250.
var userAadObjectId = "3b097601-4912-4d41-b9d2-78672fc2acde";
var newPolicyParams = new ComputePolicyCreateOrUpdateParameters(userAadObjectId, "User", 50, 250);
adlaAccountClient.ComputePolicies.CreateOrUpdate(rg, adla, "GaryMcDaniel", newPolicyParams);