Delen via


Een .NET-app beheren in Azure Data Lake Analytics

Belangrijk

Azure Data Lake Analytics is op 29 februari 2024 buiten gebruik gesteld. Meer informatie vindt u in deze aankondiging.

Voor gegevensanalyse kan uw organisatie Azure Synapse Analytics of Microsoft Fabric gebruiken.

In dit artikel wordt beschreven hoe u Azure Data Lake Analytics-accounts, gegevensbronnen, gebruikers en taken beheert met behulp van een app die is geschreven met behulp van de Azure .NET SDK.

Vereiste voorwaarden

  • Visual Studio 2015, Visual Studio 2013 update 4 of Visual Studio 2012 waarop Visual C++ is geïnstalleerd.
  • Microsoft Azure SDK voor .NET versie 2.5 of hoger. Installeer het met behulp van het webplatforminstallatieprogramma.
  • Vereiste NuGet-pakketten

NuGet-pakketten installeren

Pakket Versie
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

U kunt deze pakketten installeren via de NuGet-opdrachtregel met de volgende opdrachten:

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

Algemene variabelen

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

Authenticatie

U hebt meerdere opties om u aan te melden bij Azure Data Lake Analytics. In het volgende fragment ziet u een voorbeeld van verificatie met interactieve gebruikersverificatie met een pop-upvenster.

Voor ClientID kunt u de id van een gebruiker of de toepassings-id (client) van een service-principal gebruiken.

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

De broncode voor GetCreds_User_Popup en de code voor andere verificatieopties worden behandeld in Data Lake Analytics .NET-verificatieopties

De clientbeheerobjecten maken

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;

Accounts beheren

Een Azure-resourcegroep maken

Als u er nog geen hebt gemaakt, moet u een Azure-resourcegroep hebben om uw Data Lake Analytics-onderdelen te maken. U hebt uw verificatiereferenties, abonnements-id en een locatie nodig. De volgende code laat zien hoe u een resourcegroep maakt:

var resourceGroup = new ResourceGroup { Location = location };
resourceManagementClient.ResourceGroups.CreateOrUpdate(groupName, rg);

Zie Azure-resourcegroepen en Data Lake Analytics voor meer informatie.

Een Data Lake Store-account maken

Voor elk ADLA-account is een ADLS-account vereist. Als u er nog geen hebt, kunt u er een maken met de volgende code:

var new_adls_params = new DataLakeStoreAccount(location: _location);
adlsAccountClient.Account.Create(rg, adls, new_adls_params);

Een Data Lake Analytics-account maken

Met de volgende code wordt een ADLS-account gemaakt

var new_adla_params = new DataLakeAnalyticsAccount()
{
   DefaultDataLakeStoreAccount = adls,
   Location = location
};

adlaClient.Account.Create(rg, adla, new_adla_params);

Data Lake Store-accounts vermelden

var adlsAccounts = adlsAccountClient.Account.List().ToList();
foreach (var adls in adlsAccounts)
{
   Console.WriteLine($"ADLS: {0}", adls.Name);
}

Data Lake Analytics-accounts weergeven

var adlaAccounts = adlaClient.Account.List().ToList();

for (var adla in AdlaAccounts)
{
   Console.WriteLine($"ADLA: {0}, adla.Name");
}

Controleren of er een account bestaat

bool exists = adlaClient.Account.Exists(rg, adla));

Informatie over een account ophalen

bool exists = adlaClient.Account.Exists(rg, adla));
if (exists)
{
   var adla_accnt = adlaClient.Account.Get(rg, adla);
}

Een account verwijderen

if (adlaClient.Account.Exists(rg, adla))
{
   adlaClient.Account.Delete(rg, adla);
}

Het data lake store-standaardaccount ophalen

Voor elk Data Lake Analytics-account is een Data Lake Store-standaardaccount vereist. Gebruik deze code om het standaard Store-account voor een Analytics-account te bepalen.

if (adlaClient.Account.Exists(rg, adla))
{
  var adla_accnt = adlaClient.Account.Get(rg, adla);
  string def_adls_account = adla_accnt.DefaultDataLakeStoreAccount;
}

Gegevensbronnen beheren

Data Lake Analytics ondersteunt momenteel de volgende gegevensbronnen:

U kunt koppelingen maken naar Azure Storage-accounts.

string storage_key = "xxxxxxxxxxxxxxxxxxxx";
string storage_account = "mystorageaccount";
var addParams = new AddStorageAccountParameters(storage_key);            
adlaClient.StorageAccounts.Add(rg, adla, storage_account, addParams);

Een lijst weergeven met Azure Storage-gegevensbronnen

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-gegevensbronnen vermelden

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

Mappen en bestanden uploaden en downloaden

U kunt het clientbeheerobject van het Data Lake Store-bestandssysteem gebruiken om afzonderlijke bestanden of mappen van Azure naar uw lokale computer te uploaden en downloaden met behulp van de volgende methoden:

  • UploadFolder
  • UploadFile
  • DownloadFolder
  • Download bestand

De eerste parameter voor deze methoden is de naam van het Data Lake Store-account, gevolgd door parameters voor het bronpad en het doelpad.

In het volgende voorbeeld ziet u hoe u een map downloadt in Data Lake Store.

adlsFileSystemClient.FileSystem.DownloadFolder(adls, sourcePath, destinationPath);

Een bestand maken in een Data Lake Store-account

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 Storage-accountpaden controleren

Met de volgende code wordt gecontroleerd of er een Azure Storage-account (storageAccntName) bestaat in een Data Lake Analytics-account (analyticsAccountName) en of er een container (containerName) aanwezig is in het Azure Storage-account.

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

Catalogus en taken beheren

Het DataLakeAnalyticsCatalogManagementClient-object biedt methoden voor het beheren van de SQL-database die is opgegeven voor elk Azure Data Lake Analytics-account. DataLakeAnalyticsJobManagementClient biedt methoden voor het verzenden en beheren van taken die worden uitgevoerd op de database met U-SQL-scripts.

Databases en schema's vermelden

Onder de verschillende dingen die u kunt vermelden, zijn de meest voorkomende databases en hun schema. Met de volgende code wordt een verzameling databases verkregen en wordt vervolgens het schema voor elke database opgesomd.

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}");
  }
}

Tabelkolommen weergeven

De volgende code laat zien hoe u toegang hebt tot de database met een Data Lake Analytics Catalog-beheerclient om de kolommen in een opgegeven tabel weer te geven.

var tbl = adlaCatalogClient.Catalog.GetTable(adla, "master", "dbo", "MyTableName");
IEnumerable<USqlTableColumn> columns = tbl.ColumnList;

foreach (USqlTableColumn utc in columns)
{
  Console.WriteLine($"\t{utc.Name}");
}

Een U-SQL-taak verzenden

De volgende code laat zien hoe u een Data Lake Analytics-taakbeheerclient gebruikt om een taak te verzenden.

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.");

Mislukte taken weergeven

De volgende code bevat informatie over taken die zijn mislukt.

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}");
}

Pijplijnen vermelden

De volgende code bevat informatie over elke pijplijn met taken die aan het account zijn verzonden.

var pipelines = adlaJobClient.Pipeline.List(adla);
foreach (var p in pipelines)
{
   Console.WriteLine($"Pipeline: {p.Name}\t{p.PipelineId}\t{p.LastSubmitTime}");
}

Terugkeerpatronen weergeven

De volgende code bevat informatie over elke herhaling van taken die naar de account zijn verzonden.

var recurrences = adlaJobClient.Recurrence.List(adla);
foreach (var r in recurrences)
{
   Console.WriteLine($"Recurrence: {r.Name}\t{r.RecurrenceId}\t{r.LastSubmitTime}");
}

Algemene grafenscenario's

Gebruiker opzoeken in de map Microsoft Entra-id

var userinfo = graphClient.Users.Get( "bill@contoso.com" );

De ObjectId van een gebruiker ophalen in de map Microsoft Entra ID

var userinfo = graphClient.Users.Get( "bill@contoso.com" );
Console.WriteLine( userinfo.ObjectId )

Rekenbeleid beheren

Het DataLakeAnalyticsAccountManagementClient-object biedt methoden voor het beheren van het rekenbeleid voor een Data Lake Analytics-account.

Rekenbeleid weergeven

Met de volgende code wordt een lijst met rekenbeleidsregels opgehaald voor een Data Lake Analytics-account.

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}");
}

Een nieuw rekenbeleid maken

Met de volgende code maakt u een nieuw rekenbeleid voor een Data Lake Analytics-account, stelt u het maximum aantal AU's in dat beschikbaar is voor de opgegeven gebruiker in op 50 en de minimale taakprioriteit op 250.

var userAadObjectId = "3b097601-4912-4d41-b9d2-78672fc2acde";
var newPolicyParams = new ComputePolicyCreateOrUpdateParameters(userAadObjectId, "User", 50, 250);
adlaAccountClient.ComputePolicies.CreateOrUpdate(rg, adla, "GaryMcDaniel", newPolicyParams);

Volgende stappen