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ó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);

Következő lépések