إدارة 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
يمكنك إنشاء ارتباطات إلى حسابات 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);