إدارة Azure Data Lake Analytics تطبيق .NET

هام

تم إيقاف Azure Data Lake Analytics في 29 فبراير 2024. تعرف على المزيد من خلال هذا الإعلان.

بالنسبة لتحليلات البيانات، يمكن لمؤسستك استخدام Azure Synapse Analytics أو Microsoft Fabric.

توضح هذه المقالة كيفية إدارة حسابات Azure Data Lake Analytics ومصادر البيانات والمستخدمين والمهام باستخدام تطبيق مكتوب باستخدام Azure .NET SDK.

المتطلبات الأساسية

  • Visual Studio 2015 أو Visual Studio 2013 التحديث 4 أو Visual Studio 2012 مع Visual C++ مثبت.
  • Microsoft Azure SDK ل .NET الإصدار 2.5 أو أعلى. قم بتثبيته باستخدام مثبت النظام الأساسي للويب.
  • حزم NuGet المطلوبة

ثبِّت حزم NuGet

الحزمة إصدار
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-معاينة
Microsoft.Azure.Graph.RBAC 3.4.0-معاينة

يمكنك تثبيت هذه الحزم عبر سطر أوامر NuGet باستخدام الأوامر التالية:

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

المتغيرات الشائعة

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

المصادقة

لديك خيارات متعددة لتسجيل الدخول إلى Azure Data Lake Analytics. تعرض القصاصة البرمجية التالية مثالا على المصادقة مع مصادقة المستخدم التفاعلية مع نافذة منبثقة.

بالنسبة إلى ClientID، يمكنك إما استخدام معرف مستخدم، أو معرف التطبيق (العميل) لمدير الخدمة.

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 والرمز لخيارات المصادقة الأخرى في خيارات مصادقة Data Lake Analytics .NET

إنشاء كائنات إدارة العميل

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;

إدارة الحساب

إنشاء مجموعة موارد Azure

إذا لم تكن قد أنشأت واحدة بالفعل، فيجب أن يكون لديك مجموعة موارد Azure لإنشاء مكونات Data Lake Analytics. تحتاج إلى بيانات اعتماد المصادقة ومعرف الاشتراك والموقع. توضح التعليمات البرمجية التالية كيفية إنشاء مجموعة موارد:

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

لمزيد من المعلومات، راجع مجموعات موارد Azure وتحليلات مستودع البيانات.

إنشاء حساب Data Lake Store

يتطلب حساب ADLA من أي وقت مضى حساب ADLS. إذا لم يكن لديك واحد لاستخدامه بالفعل، يمكنك إنشاء واحد باستخدام التعليمات البرمجية التالية:

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

إنشاء حساب Data Lake Analytics

تنشئ التعليمات البرمجية التالية حساب ADLS

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

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

سرد حسابات Data Lake Store

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

سرد حسابات Data Lake Analytics

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

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

التحقق مما إذا كان الحساب موجودا

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

الحصول على معلومات حول حساب

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

حذف حساب

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

الحصول على حساب Data Lake Store الافتراضي

يتطلب كل حساب Data Lake Analytics حساب Data Lake Store افتراضيا. استخدم هذه التعليمة البرمجية لتحديد حساب Store الافتراضي لحساب Analytics.

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

إدارة مصادر البيانات

يدعم Data Lake Analytics حاليا مصادر البيانات التالية:

يمكنك إنشاء ارتباطات إلى حسابات Azure Storage.

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

سرد مصادر بيانات 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);
  }
}

سرد مصادر بيانات 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);
  }
}

تحميل وتنزيل المجلدات والملفات

يمكنك استخدام كائن إدارة عميل نظام ملفات Data Lake Store لتحميل وتنزيل الملفات أو المجلدات الفردية من Azure إلى الكمبيوتر المحلي، باستخدام الطرق التالية:

  • مجلد التحميل
  • UploadFile
  • مجلد التنزيل
  • DownloadFile

المعلمة الأولى لهذه الأساليب هي اسم حساب Data Lake Store، متبوعا بمعلمات لمسار المصدر ومسار الوجهة.

يوضح المثال التالي كيفية تنزيل مجلد في Data Lake Store.

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

إنشاء ملف في حساب 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);
   }
}

التحقق من مسارات حساب Azure Storage

تتحقق التعليمات البرمجية التالية من وجود حساب Azure Storage (storageAccntName) في حساب Data Lake Analytics (analyticsAccountName)، وما إذا كانت هناك حاوية (containerName) في حساب 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));

إدارة الكتالوج والمهام

يوفر كائن DataLakeAnalyticsCatalogManagementClient أساليب لإدارة قاعدة بيانات SQL المتوفرة لكل حساب Azure Data Lake Analytics. يوفر DataLakeAnalyticsJobManagementClient أساليب لإرسال المهام وإدارتها التي يتم تشغيلها على قاعدة البيانات باستخدام البرامج النصية U-SQL.

سرد قواعد البيانات والمخططات

من بين العديد من الأشياء التي يمكنك سردها، الأكثر شيوعا هي قواعد البيانات ومخططها. تحصل التعليمات البرمجية التالية على مجموعة من قواعد البيانات، ثم تقوم بتعداد المخطط لكل قاعدة بيانات.

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

سرد أعمدة الجدول

توضح التعليمات البرمجية التالية كيفية الوصول إلى قاعدة البيانات باستخدام عميل إدارة كتالوج Data Lake Analytics لسرد الأعمدة في جدول محدد.

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

توضح التعليمات البرمجية التالية كيفية استخدام عميل إدارة وظيفة 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.");

قائمة المهام الفاشلة

تسرد التعليمات البرمجية التالية معلومات حول المهام التي فشلت.

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

سرد البنية الأساسية لبرنامج ربط العمليات التجارية

تسرد التعليمات البرمجية التالية معلومات حول كل مسار من المهام المرسلة إلى الحساب.

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

تكرارات القائمة

تسرد التعليمات البرمجية التالية معلومات حول كل تكرار للمهام المرسلة إلى الحساب.

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

سيناريوهات الرسم البياني الشائعة

البحث عن مستخدم في دليل Microsoft Entra ID

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

الحصول على ObjectId لمستخدم في دليل Microsoft Entra ID

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

إدارة نهج الحوسبة

يوفر كائن DataLakeAnalyticsAccountManagementClient أساليب لإدارة نهج الحوسبة لحساب Data Lake Analytics.

سرد نهج الحوسبة

تسترد التعليمات البرمجية التالية قائمة بنهج الحوسبة لحساب 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}");
}

إنشاء نهج حساب جديد

تنشئ التعليمات البرمجية التالية نهج حساب جديد لحساب Data Lake Analytics، وتعيين الحد الأقصى لوحدات AUs المتوفرة للمستخدم المحدد إلى 50، والحد الأدنى لأولوية الوظيفة إلى 250.

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

الخطوات التالية