Az Azure Data Lake Analytics kezelése – .NET-alkalmazás
Fontos
Az Azure Data Lake Analytics 2024. február 29-én megszűnt. További információ ezzel a bejelentéssel.
Az adatelemzéshez a szervezet használhatja a Azure Synapse Analyticset vagy a Microsoft Fabricet.
Ez a cikk azt ismerteti, hogyan kezelheti az Azure-Data Lake Analytics-fiókokat, -adatforrásokat, -felhasználókat és -feladatokat az Azure .NET SDK-val írt alkalmazással.
Előfeltételek
- Visual Studio 2015, Visual Studio 2013 4. frissítéssel vagy Visual Studio 2012 és telepített Visual C++.
- Microsoft Azure SDK for .NET 2.5-ös vagy újabb verzió. Telepítse a Webplatform-telepítővel.
- Szükséges NuGet-csomagok
NuGet-csomagok telepítése
Csomag | Verzió |
---|---|
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 |
Ezeket a csomagokat a NuGet parancssorán keresztül telepítheti a következő parancsokkal:
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
Gyakori változók
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
Hitelesítés
Az Azure Data Lake Analytics való bejelentkezéshez több lehetőség is rendelkezésre áll. Az alábbi kódrészlet egy példát mutat be az interaktív felhasználói hitelesítés előugró ablakkal történő hitelesítésére.
A ClientID esetében használhatja egy felhasználó azonosítóját, vagy egy szolgáltatásnév alkalmazás- (ügyfél-) azonosítóját.
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);
}
}
A GetCreds_User_Popup forráskódját és az egyéb hitelesítési lehetőségek kódját Data Lake Analytics .NET-hitelesítési lehetőségek ismertetik
Az ügyfélfelügyeleti objektumok létrehozása
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;
Fiókok kezelése
Azure-erőforráscsoport létrehozása
Ha még nem hozott létre egyet, rendelkeznie kell egy Azure-erőforráscsoportot a Data Lake Analytics összetevőinek létrehozásához. Szüksége lesz a hitelesítési hitelesítő adatokra, az előfizetés azonosítóra és egy helyre. Az alábbi kód bemutatja, hogyan hozhat létre erőforráscsoportot:
var resourceGroup = new ResourceGroup { Location = location };
resourceManagementClient.ResourceGroups.CreateOrUpdate(groupName, rg);
További információ: Azure-erőforráscsoportok és Data Lake Analytics.
Data Lake Store-fiók létrehozása
Az ADLA-fiókhoz mindig ADLS-fiók szükséges. Ha még nincs használatban, létrehozhat egyet a következő kóddal:
var new_adls_params = new DataLakeStoreAccount(location: _location);
adlsAccountClient.Account.Create(rg, adls, new_adls_params);
Data Lake Analytics-fiók létrehozása
Az alábbi kód egy ADLS-fiókot hoz létre
var new_adla_params = new DataLakeAnalyticsAccount()
{
DefaultDataLakeStoreAccount = adls,
Location = location
};
adlaClient.Account.Create(rg, adla, new_adla_params);
Data Lake Store-fiókok listázása
var adlsAccounts = adlsAccountClient.Account.List().ToList();
foreach (var adls in adlsAccounts)
{
Console.WriteLine($"ADLS: {0}", adls.Name);
}
Data Lake Analytics-fiókok listázása
var adlaAccounts = adlaClient.Account.List().ToList();
for (var adla in AdlaAccounts)
{
Console.WriteLine($"ADLA: {0}, adla.Name");
}
Fiók meglétének ellenőrzése
bool exists = adlaClient.Account.Exists(rg, adla));
Fiók adatainak lekérése
bool exists = adlaClient.Account.Exists(rg, adla));
if (exists)
{
var adla_accnt = adlaClient.Account.Get(rg, adla);
}
Fiók eltávolítása
if (adlaClient.Account.Exists(rg, adla))
{
adlaClient.Account.Delete(rg, adla);
}
Az alapértelmezett Data Lake Store-fiók lekérése
Minden Data Lake Analytics fiókhoz szükség van egy alapértelmezett Data Lake Store-fiókra. Ezzel a kóddal állapíthatja meg egy Analytics-fiók alapértelmezett Store-fiókját.
if (adlaClient.Account.Exists(rg, adla))
{
var adla_accnt = adlaClient.Account.Get(rg, adla);
string def_adls_account = adla_accnt.DefaultDataLakeStoreAccount;
}
Adatforrások kezelése
Data Lake Analytics jelenleg a következő adatforrásokat támogatja:
Azure Storage-fiókra mutató hivatkozás
Azure Storage-fiókokra mutató hivatkozásokat hozhat létre.
string storage_key = "xxxxxxxxxxxxxxxxxxxx";
string storage_account = "mystorageaccount";
var addParams = new AddStorageAccountParameters(storage_key);
adlaClient.StorageAccounts.Add(rg, adla, storage_account, addParams);
Azure Storage-adatforrások listázása
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-adatforrások listázása
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);
}
}
Mappák és fájlok feltöltése és letöltése
A Data Lake Store fájlrendszerügyfél-kezelési objektumával az alábbi módszerekkel tölthet fel és tölthet le egyes fájlokat vagy mappákat az Azure-ból a helyi számítógépre:
- UploadFolder
- UploadFile
- DownloadFolder
- DownloadFile
Ezeknek a metódusoknak az első paramétere a Data Lake Store-fiók neve, amelyet a forrásútvonal és a célútvonal paraméterei követnek.
Az alábbi példa bemutatja, hogyan tölthet le egy mappát a Data Lake Store-ban.
adlsFileSystemClient.FileSystem.DownloadFolder(adls, sourcePath, destinationPath);
Fájl létrehozása Data Lake Store-fiókban
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);
}
}
Az Azure Storage-fiók elérési útjának ellenőrzése
A következő kód ellenőrzi, hogy létezik-e Azure Storage-fiók (storageAccntName) egy Data Lake Analytics fiókban (analyticsAccountName), és hogy létezik-e tároló (containerName) az Azure Storage-fiókban.
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));
Katalógus és feladatok kezelése
A DataLakeAnalyticsCatalogManagementClient objektum metódusokat biztosít az egyes Azure-Data Lake Analytics-fiókokhoz biztosított SQL-adatbázis kezeléséhez. A DataLakeAnalyticsJobManagementClient metódusokat biztosít az adatbázison futó feladatok U-SQL-szkriptekkel való elküldéséhez és kezeléséhez.
Adatbázisok és sémák listázása
A felsoroltak közül a leggyakoribbak az adatbázisok és azok sémái. Az alábbi kód beszerzi az adatbázisok gyűjteményét, majd számba adja az egyes adatbázisok sémáját.
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}");
}
}
Táblázatoszlopok listázása
Az alábbi kód bemutatja, hogyan érheti el az adatbázist egy Data Lake Analytics Catalog Management-ügyféllel a megadott tábla oszlopainak listázásához.
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-feladat elküldése
Az alábbi kód bemutatja, hogyan küldhet be feladatokat egy Data Lake Analytics feladatkezelő ügyfélprogram használatával.
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.");
Sikertelen feladatok listázása
Az alábbi kód a sikertelen feladatokra vonatkozó információkat sorolja fel.
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}");
}
Folyamatok listázása
Az alábbi kód a fiókba küldött feladatok egyes folyamatairól tartalmaz információkat.
var pipelines = adlaJobClient.Pipeline.List(adla);
foreach (var p in pipelines)
{
Console.WriteLine($"Pipeline: {p.Name}\t{p.PipelineId}\t{p.LastSubmitTime}");
}
Ismétlődések listázása
Az alábbi kód a fiókba küldött feladatok ismétlődésével kapcsolatos információkat sorolja fel.
var recurrences = adlaJobClient.Recurrence.List(adla);
foreach (var r in recurrences)
{
Console.WriteLine($"Recurrence: {r.Name}\t{r.RecurrenceId}\t{r.LastSubmitTime}");
}
Gyakori gráfforgatókönyvek
Felhasználó keresése a Microsoft Entra ID könyvtárban
var userinfo = graphClient.Users.Get( "bill@contoso.com" );
Felhasználó ObjectId azonosítójának lekérése a Microsoft Entra ID könyvtárban
var userinfo = graphClient.Users.Get( "bill@contoso.com" );
Console.WriteLine( userinfo.ObjectId )
Számítási szabályzatok kezelése
A DataLakeAnalyticsAccountManagementClient objektum metódusokat biztosít egy Data Lake Analytics-fiók számítási szabályzatainak kezeléséhez.
Számítási szabályzatok listázása
Az alábbi kód lekéri egy Data Lake Analytics-fiók számítási szabályzatainak listáját.
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}");
}
Új számítási szabályzat létrehozása
Az alábbi kód egy új számítási szabályzatot hoz létre egy Data Lake Analytics-fiókhoz, a megadott felhasználó számára elérhető maximális AU-t 50-re, a minimális feladatprioritást pedig 250-re állítja.
var userAadObjectId = "3b097601-4912-4d41-b9d2-78672fc2acde";
var newPolicyParams = new ComputePolicyCreateOrUpdateParameters(userAadObjectId, "User", 50, 250);
adlaAccountClient.ComputePolicies.CreateOrUpdate(rg, adla, "GaryMcDaniel", newPolicyParams);