إدارة Azure Data Lake Analytics باستخدام Azure PowerShell

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

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

ملاحظة

تستخدم هذه المقالة الوحدة النمطية Azure Az PowerShell، وهي الوحدة النمطية PowerShell الموصى بها للتفاعل مع Azure. لبدء استخدام الوحدة النمطية Az PowerShell، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

لاستخدام PowerShell مع Data Lake Analytics، قم بتجميع المعلومات التالية:

  • معرف الاشتراك: معرف اشتراك Azure الذي يحتوي على حساب Data Lake Analytics الخاص بك.
  • مجموعة الموارد: اسم مجموعة موارد Azure التي تحتوي على حسابك في Data Lake Analytics.
  • اسم حساب Data Lake Analytics: اسم حسابك في Data Lake Analytics.
  • اسم حساب مخزن بحيرة البيانات الافتراضي: يحتوي كل حساب في Data Lake Analytics على حساب افتراضي في Data Lake Store.
  • الموقع: موقع حسابك في Data Lake Analytics، مثل "East US 2" أو المواقع الأخرى المدعومة.

تستخدم مقتطفات PowerShell في هذا البرنامج التعليمي هذه المتغيرات لتخزين هذه المعلومات

$subId = "<SubscriptionId>"
$rg = "<ResourceGroupName>"
$adla = "<DataLakeAnalyticsAccountName>"
$adls = "<DataLakeStoreAccountName>"
$location = "<Location>"

تسجيل الدخول إلى Azure

تسجيل الدخول باستخدام مصادقة المستخدم التفاعلية

تسجيل الدخول باستخدام معرف الاشتراك أو عن طريق اسم الاشتراك

# Using subscription id
Connect-AzAccount -SubscriptionId $subId

# Using subscription name
Connect-AzAccount -SubscriptionName $subname

حفظ سياق المصادقة

يطالب Connect-AzAccount cmdlet دائما ببيانات الاعتماد. يمكنك تجنب مطالبتك باستخدام cmdlets التالية:

# Save login session information
Save-AzAccounts -Path D:\profile.json  

# Load login session information
Select-AzAccounts -Path D:\profile.json

تسجيل الدخول باستخدام هوية الخدمة الأساسية (SPI)

$tenantid = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"  
$spi_appname = "appname"
$spi_appid = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
$spi_secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

$pscredential = New-Object System.Management.Automation.PSCredential ($spi_appid, (ConvertTo-SecureString $spi_secret -AsPlainText -Force))
Login-AzAccount -ServicePrincipal -TenantId $tenantid -Credential $pscredential -Subscription $subid

إدارة الحساب

قائمة الحسابات

# List Data Lake Analytics accounts within the current subscription.
Get-AdlAnalyticsAccount

# List Data Lake Analytics accounts within a specific resource group.
Get-AdlAnalyticsAccount -ResourceGroupName $rg

إنشاء حساب

يتطلب كل حساب في Data Lake Analytics حسابا افتراضيا في Data Lake Store يستخدمه لتخزين السجلات. يمكنك إعادة استخدام حساب حالي أو إنشاء حساب.

# Create a data lake store if needed, or you can re-use an existing one
New-AdlStore -ResourceGroupName $rg -Name $adls -Location $location
New-AdlAnalyticsAccount -ResourceGroupName $rg -Name $adla -Location $location -DefaultDataLake $adls

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

احصل على تفاصيل حول أحد الحسابات.

Get-AdlAnalyticsAccount -Name $adla

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

Test-AdlAnalyticsAccount -Name $adla

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

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

يحتوي كل حساب في Data Lake Analytics على حساب افتراضي في Data Lake Store. يتم استخدام حساب Data Lake Store الافتراضي لتخزين بيانات تعريف الوظيفة وسجلات تدقيق الوظائف.

البحث عن حساب متجر بحيرة البيانات الافتراضي

$adla_acct = Get-AdlAnalyticsAccount -Name $adla
$dataLakeStoreName = $adla_acct.DefaultDataLakeAccount

يمكنك العثور على حساب Data Lake Store الافتراضي عن طريق تصفية قائمة مصادر البيانات حسب IsDefault الموقع:

Get-AdlAnalyticsDataSource -Account $adla  | ? { $_.IsDefault }

إضافة مصدر بيانات


# Add an additional Storage (Blob) account.
$AzureStorageAccountName = "<AzureStorageAccountName>"
$AzureStorageAccountKey = "<AzureStorageAccountKey>"
Add-AdlAnalyticsDataSource -Account $adla -Blob $AzureStorageAccountName -AccessKey $AzureStorageAccountKey

# Add an additional Data Lake Store account.
$AzureDataLakeStoreName = "<AzureDataLakeStoreAccountName"
Add-AdlAnalyticsDataSource -Account $adla -DataLakeStore $AzureDataLakeStoreName

قائمة مصادر البيانات

# List all the data sources
Get-AdlAnalyticsDataSource -Account $adla

# List attached Data Lake Store accounts
Get-AdlAnalyticsDataSource -Account $adla | where -Property Type -EQ "DataLakeStore"

# List attached Storage accounts
Get-AdlAnalyticsDataSource -Account $adla | where -Property Type -EQ "Blob"

تقديم وظائف SQL

إرسال سلسلة كمهمة U-SQL

$script = @"
@a  =
    SELECT * FROM
        (VALUES
            ("Contoso", 1500.0),
            ("Woodgrove", 2700.0)
        ) AS D( customer, amount );
OUTPUT @a
    TO "/data.csv"
    USING Outputters.Csv();
"@

$scriptpath = "d:\test.usql"
$script | Out-File $scriptpath

Submit-AdlJob -AccountName $adla -Script $script -Name "Demo"

إرسال ملف كوظيفة SQL

$scriptpath = "d:\test.usql"
$script | Out-File $scriptpath
Submit-AdlJob -AccountName $adla –ScriptPath $scriptpath -Name "Demo"

قائمة الوظائف

ويشمل الناتج الوظائف الجارية حاليا وتلك الوظائف التي اكتملت مؤخرا.

Get-AdlJob -Account $adla

قائمة أعلى وظائف N

بشكل افتراضي ، يتم فرز قائمة الوظائف في وقت الإرسال. لذلك تظهر أحدث الوظائف المقدمة أولا. بشكل افتراضي، يتذكر حساب ADLA المهام لمدة 180 يوما، ولكن Get-AdlJob cmdlet بشكل افتراضي بإرجاع أول 500 وظيفة فقط. استخدم المعلمة -Top لسرد عدد معين من الوظائف.

$jobs = Get-AdlJob -Account $adla -Top 10

قائمة الوظائف حسب حالة الوظيفة

باستخدام المعلمة -State . يمكنك الجمع بين أي من هذه القيم:

  • Accepted
  • Compiling
  • Ended
  • New
  • Paused
  • Queued
  • Running
  • Scheduling
  • Start
# List the running jobs
Get-AdlJob -Account $adla -State Running

# List the jobs that have completed
Get-AdlJob -Account $adla -State Ended

# List the jobs that have not started yet
Get-AdlJob -Account $adla -State Accepted,Compiling,New,Paused,Scheduling,Start

قائمة الوظائف حسب نتيجة الوظيفة

استخدم المعلمة -Result للكشف عما إذا كانت المهام المنتهية قد اكتملت بنجاح. لديها هذه القيم:

  • ملغى
  • فشل
  • بلا
  • نجح
# List Successful jobs.
Get-AdlJob -Account $adla -State Ended -Result Succeeded

# List Failed jobs.
Get-AdlJob -Account $adla -State Ended -Result Failed

قائمة الوظائف حسب مقدم الوظيفة

تساعدك المعلمة -Submitter في تحديد من أرسل وظيفة.

Get-AdlJob -Account $adla -Submitter "joe@contoso.com"

قائمة الوظائف حسب وقت التقديم

ال -SubmittedAfter مفيد في التصفية إلى نطاق زمني.

# List  jobs submitted in the last day.
$d = [DateTime]::Now.AddDays(-1)
Get-AdlJob -Account $adla -SubmittedAfter $d

# List  jobs submitted in the last seven day.
$d = [DateTime]::Now.AddDays(-7)
Get-AdlJob -Account $adla -SubmittedAfter $d

قم بالحصول على حالة الوظيفة

الحصول على حالة وظيفة معينة.

Get-AdlJob -AccountName $adla -JobId $job.JobId

إلغاء وظيفة

Stop-AdlJob -Account $adla -JobID $jobID

انتظر حتى تنتهي المهمة

بدلا من التكرار Get-AdlAnalyticsJob حتى تنتهي المهمة، يمكنك استخدام Wait-AdlJob cmdlet لانتظار انتهاء المهمة.

Wait-AdlJob -Account $adla -JobId $job.JobId

قائمة بخطوط أنابيب الوظائف وتكرارها

Get-AdlJobPipeline استخدم cmdlet للاطلاع على معلومات خط الأنابيب التي تم إرسالها مسبقا.

$pipelines = Get-AdlJobPipeline -Account $adla
$pipeline = Get-AdlJobPipeline -Account $adla -PipelineId "<pipeline ID>"

Get-AdlJobRecurrence استخدم cmdlet للاطلاع على معلومات التكرار للوظائف التي تم إرسالها مسبقا.

$recurrences = Get-AdlJobRecurrence -Account $adla

$recurrence = Get-AdlJobRecurrence -Account $adla -RecurrenceId "<recurrence ID>"

إدارة سياسات الحوسبة

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

يسترد Get-AdlAnalyticsComputePolicy cmdlet معلومات حول سياسات الحوسبة لحساب Data Lake Analytics.

$policies = Get-AdlAnalyticsComputePolicy -Account $adla

إنشاء نهج حوسبة

ينشئ New-AdlAnalyticsComputePolicy cmdlet سياسة حوسبة جديدة لحساب Data Lake Analytics. يعين هذا المثال الحد الأقصى لوحدات AU المتاحة للمستخدم المحدد إلى 50، والحد الأدنى لأولوية المهمة إلى 250.

$userObjectId = (Get-AzAdUser -SearchString "garymcdaniel@contoso.com").Id

New-AdlAnalyticsComputePolicy -Account $adla -Name "GaryMcDaniel" -ObjectId $objectId -ObjectType User -MaxDegreeOfParallelismPerJob 50 -MinPriorityPerJob 250

إدارة الملفات

التحقق من وجود ملف

Test-AdlStoreItem -Account $adls -Path "/data.csv"

التحميل والتنزيل

تحميل ملف.

Import-AdlStoreItem -AccountName $adls -Path "c:\data.tsv" -Destination "/data_copy.csv"

Upload مجلد كامل بشكل متكرر.

Import-AdlStoreItem -AccountName $adls -Path "c:\myData\" -Destination "/myData/" -Recurse

تنزيل ملف.

Export-AdlStoreItem -AccountName $adls -Path "/data.csv" -Destination "c:\data.csv"

قم بتنزيل مجلد كامل بشكل متكرر.

Export-AdlStoreItem -AccountName $adls -Path "/" -Destination "c:\myData\" -Recurse

ملاحظة

إذا تمت مقاطعة عملية التحميل أو التنزيل، يمكنك محاولة استئناف العملية عن طريق تشغيل cmdlet مرة أخرى باستخدام العلامة -Resume .

إدارة كتالوج U-SQL

يستخدم كتالوج U-SQL لهيكلة البيانات والتعليمات البرمجية بحيث يمكن مشاركتها بواسطة البرامج النصية U-SQL. يتيح الكتالوج أعلى أداء ممكن مع البيانات الموجودة في Azure Data Lake. لمزيد من المعلومات، راجع استخدام كتالوج U-SQL.

سرد العناصر في كتالوج U-SQL

# List U-SQL databases
Get-AdlCatalogItem -Account $adla -ItemType Database

# List tables within a database
Get-AdlCatalogItem -Account $adla -ItemType Table -Path "database"

# List tables within a schema.
Get-AdlCatalogItem -Account $adla -ItemType Table -Path "database.schema"

قائمة جميع التجميعات كتالوج U-SQL

$dbs = Get-AdlCatalogItem -Account $adla -ItemType Database

foreach ($db in $dbs)
{
    $asms = Get-AdlCatalogItem -Account $adla -ItemType Assembly -Path $db.Name

    foreach ($asm in $asms)
    {
        $asmname = "[" + $db.Name + "].[" + $asm.Name + "]"
        Write-Host $asmname
    }
}

الحصول على تفاصيل حول عنصر كتالوج

# Get details of a table
Get-AdlCatalogItem  -Account $adla -ItemType Table -Path "master.dbo.mytable"

# Test existence of a U-SQL database.
Test-AdlCatalogItem  -Account $adla -ItemType Database -Path "master"

تخزين بيانات الاعتماد في الكتالوج

داخل قاعدة بيانات U-SQL، قم بإنشاء كائن بيانات اعتماد لقاعدة بيانات مستضافة في Azure. حاليا، تعد بيانات اعتماد U-SQL النوع الوحيد من عناصر الكتالوج التي يمكنك إنشاؤها من خلال PowerShell.

$dbName = "master"
$credentialName = "ContosoDbCreds"
$dbUri = "https://contoso.database.windows.net:8080"

New-AdlCatalogCredential -AccountName $adla `
          -DatabaseName $db `
          -CredentialName $credentialName `
          -Credential (Get-Credential) `
          -Uri $dbUri

إدارة قواعد جدار الحماية

سرد قواعد جدار الحماية

Get-AdlAnalyticsFirewallRule -Account $adla

إضافة قاعدة جدار حماية

$ruleName = "Allow access from on-prem server"
$startIpAddress = "<start IP address>"
$endIpAddress = "<end IP address>"

Add-AdlAnalyticsFirewallRule -Account $adla -Name $ruleName -StartIpAddress $startIpAddress -EndIpAddress $endIpAddress

تعديل قاعدة جدار حماية

Set-AdlAnalyticsFirewallRule -Account $adla -Name $ruleName -StartIpAddress $startIpAddress -EndIpAddress $endIpAddress

إزالة قاعدة جدار حماية

Remove-AdlAnalyticsFirewallRule -Account $adla -Name $ruleName

السماح بعناوين IP ل Azure

Set-AdlAnalyticsAccount -Name $adla -AllowAzureIpState Enabled
Set-AdlAnalyticsAccount -Name $adla -FirewallState Enabled
Set-AdlAnalyticsAccount -Name $adla -FirewallState Disabled

العمل مع Azure

الحصول على تفاصيل الخطأ

Resolve-AzError -Last

تحقق مما إذا كنت تعمل كمسؤول على جهاز Windows الخاص بك

function Test-Administrator  
{  
    $user = [Security.Principal.WindowsIdentity]::GetCurrent();
    $p = New-Object Security.Principal.WindowsPrincipal $user
    $p.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)  
}

البحث عن معرف مستأجر

من اسم اشتراك:

function Get-TenantIdFromSubscriptionName( [string] $subname )
{
    $sub = (Get-AzSubscription -SubscriptionName $subname)
    $sub.TenantId
}

Get-TenantIdFromSubscriptionName "ADLTrainingMS"

من معرف الاشتراك:

function Get-TenantIdFromSubscriptionId( [string] $subid )
{
    $sub = (Get-AzSubscription -SubscriptionId $subid)
    $sub.TenantId
}

$subid = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Get-TenantIdFromSubscriptionId $subid

من عنوان نطاق مثل "contoso.com"

function Get-TenantIdFromDomain( $domain )
{
    $url = "https://login.windows.net/" + $domain + "/.well-known/openid-configuration"
    return (Invoke-WebRequest $url|ConvertFrom-Json).token_endpoint.Split('/')[3]
}

$domain = "contoso.com"
Get-TenantIdFromDomain $domain

إدراج جميع اشتراكاتك ومعرفات المستأجرين

$subs = Get-AzSubscription
foreach ($sub in $subs)
{
    Write-Host $sub.Name "("  $sub.Id ")"
    Write-Host "`tTenant Id" $sub.TenantId
}

إنشاء حساب في Data Lake Analytics باستخدام قالب

يمكنك أيضا استخدام قالب مجموعة موارد Azure باستخدام النموذج التالي: إنشاء حساب Data Lake Analytics باستخدام قالب

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