Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
APPLIES TO:
Azure Data Factory
Azure Synapse Analytics
İpucu
Microsoft Fabric'daki
bir Azure Data Factory veya Synapse işlem hattında kullanabileceğiniz iki tür etkinlik vardır.
- Veri taşıma etkinlikleri, veriyi desteklenen kaynak ve hedef veri depoları arasında taşımak için yapılır.
- Azure HDInsight ve Azure Batch gibi işlem hizmetlerini kullanarak verileri dönüştürmek için Veri dönüştürme etkinlikleri.
Hizmetin desteklemediği bir veri deposuna/deposundan veri taşımak veya verileri hizmet tarafından desteklenmeyen bir şekilde dönüştürmek/işlemek için kendi veri taşıma veya dönüştürme mantığınızla Özel etkinlik oluşturabilir ve etkinliği işlem hattında kullanabilirsiniz. Özel etkinlik, özelleştirilmiş kod mantığınızı Azure Batch sanal makine havuzunda çalıştırır.
Not
Azure ile etkileşime geçmek için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell yükleme. Az PowerShell modülüne nasıl geçiş yapılacağını öğrenmek için bkz. AzureRM'den Az Azure PowerShell dağıtma.
Azure Batch hizmetini yeni kullanıyorsanız aşağıdaki makalelere bakın:
- Azure Batch hizmetine genel bakış için Azure Batch temel bilgileri.
- New-AzBatchAccount cmdlet'i kullanarak Azure Batch hesabı oluşturun veya Azure Batch hesabı oluşturmak için Azure portalı kullanın. cmdlet'ini kullanma hakkında ayrıntılı yönergeler için Azure Batch Hesabını yönetmek için PowerShell kullanma makalesine bakın.
- Azure Batch havuzu oluşturmak için New-AzBatchPool cmdlet'i.
Önemli
Yeni bir Azure Batch havuzu oluştururken 'VirtualMachineConfiguration' kullanılmalıdır ve 'CloudServiceConfiguration' kullanılmamalıdır.
Kullanıcı arabirimiyle işlem hattına özel etkinlikler ekleme
İşlem hattında Özel etkinlik kullanmak için aşağıdaki adımları tamamlayın:
İşlem hattı Etkinlikleri bölmesinde Özel'i arayın ve, Özel Etkinliği işlem hattı tuvaline sürükleyin.
Henüz seçili değilse tuvaldeki yeni Özel etkinliği seçin.
Özel etkinliği yürütecek yeni bir Azure Batch bağlı hizmeti seçmek veya oluşturmak için Azure Batch sekmesini seçin.
Settings sekmesini seçin ve Azure Batch yürütülecek bir komut ve isteğe bağlı gelişmiş ayrıntılar belirtin.
Azure Batch bağlı hizmeti
Aşağıdaki JSON bir örnek Azure Batch bağlı hizmeti tanımlar. Ayrıntılar için bkz . Desteklenen işlem ortamları
{
"name": "AzureBatchLinkedService",
"properties": {
"type": "AzureBatch",
"typeProperties": {
"accountName": "batchaccount",
"accessKey": {
"type": "SecureString",
"value": "access key"
},
"batchUri": "https://batchaccount.region.batch.azure.com",
"poolName": "poolname",
"linkedServiceName": {
"referenceName": "StorageLinkedService",
"type": "LinkedServiceReference"
}
}
}
}
Azure Batch bağlı hizmeti hakkında daha fazla bilgi edinmek için Bağlantılı hizmetler makalesine bakın.
Özel etkinlik
Aşağıdaki JSON kod parçacığı, basit bir Özel Etkinlik ile bir işlem hattı tanımlar. Etkinlik tanımının bağlı Azure Batch hizmetine bir başvurusu vardır.
{
"name": "MyCustomActivityPipeline",
"properties": {
"description": "Custom activity sample",
"activities": [{
"type": "Custom",
"name": "MyCustomActivity",
"linkedServiceName": {
"referenceName": "AzureBatchLinkedService",
"type": "LinkedServiceReference"
},
"typeProperties": {
"command": "helloworld.exe",
"folderPath": "customactv2/helloworld",
"resourceLinkedService": {
"referenceName": "StorageLinkedService",
"type": "LinkedServiceReference"
}
}
}]
}
}
Bu örnekte, helloworld.exe resourceLinkedService içinde kullanılan Azure Depolama hesabının customactv2/helloworld klasöründe depolanan özel bir uygulamadır. Özel etkinlik, bu özel uygulamayı yürütülmek üzere Azure Batch'e gönderir. komutunu, Azure Batch Havuzu düğümlerinin hedef İşletim Sisteminde yürütülebilecek tercih edilen herhangi bir uygulamayla değiştirebilirsiniz.
Aşağıdaki tabloda, bu etkinliğe özgü özelliklerin adları ve açıklamaları açıklanmaktadır.
| Özellik | Açıklama | Gerekli |
|---|---|---|
| Adı | İşlem hattındaki etkinliğin adı | Yes |
| açıklama | Etkinliğin ne yaptığını açıklayan metin. | Hayır |
| Tip | Özel etkinlik için etkinlik türü Özel'dir. | Yes |
| bağlıHizmetAdı | Azure Batch'e Bağlı Hizmet. Bu bağlı hizmet hakkında bilgi edinmek için Hizmetleri Bağlama Hesaplama makalesine bakın. | Yes |
| komut | Yürütülecek özel uygulamanın komutu. Uygulama Azure Batch Pool Node üzerinde zaten mevcutsa, resourceLinkedService ve folderPath belirtilmeyebilir. Örneğin, komutu, Windows Batch Pool düğümü tarafından yerel olarak desteklenen cmd /c dir olarak belirtebilirsiniz. |
Yes |
| resourceLinkedService | Özel uygulamanın depolandığı Depolama hesabına bağlı Azure Depolama Hizmeti | Hayır* |
| klasör yolu | Özel uygulamanın klasörünün yolu ve tüm bağımlılıkları Alt klasörlerde ( yani folderPath altında hiyerarşik bir klasör yapısında depolanan bağımlılıklarınız varsa, dosyalar Azure Batch kopyalandığında klasör yapısı şu anda düzleştirilmiştir. Diğer bir ifadeyle, tüm dosyalar alt klasörü olmayan tek bir klasöre kopyalanır. Bu davranışa geçici bir çözüm olarak, dosyaları sıkıştırmayı, sıkıştırılmış dosyayı kopyalamayı ve ardından özel kodla istenen konumda sıkıştırılmış dosyayı açmayı göz önünde bulundurun. |
Hayır* |
| referansObjeleri | Mevcut Bağlı Hizmetler ve Veri Kümeleri dizisi. Başvuruda bulunan Bağlı Hizmetler ve Veri Kümeleri JSON biçiminde özel uygulamaya geçirilir, böylece özel kodunuz hizmetin kaynaklarına başvurabilir | Hayır |
| genişletilmişÖzellikler | Özel kodunuzun ek özelliklere başvurabilmesi için özel uygulamaya JSON biçiminde geçirilebilen kullanıcı tanımlı özellikler | Hayır |
| retentionTimeInDays (Bekleme Süresi Gün Olarak) | Özel etkinlik için gönderilen dosyaların bekletme süresi. Varsayılan değer 30 gündür. | Hayır |
* Özellikler resourceLinkedService ve folderPath ya belirtilmeli ya da her ikisi de dışlanmalıdır.
Not
Custom Activity'de bağlantılı hizmetleri referenceObjects olarak geçiriyorsanız, güvenli dize içermediği için Azure Key Vault etkin bir bağlantılı hizmet geçirmek ve kimlik bilgilerini koddan doğrudan Key Vault üzerinden gizli adı kullanarak almak iyi bir güvenlik uygulamasıdır. AKV özellikli bağlı hizmete başvuran, kimlik bilgilerini Key Vault alan ve ardından koddaki depolama alanına erişen bir örnek bulabilirsiniz.
Not
Şu anda özel etkinlikte resourceLinkedService için yalnızca Azure Blob depolama desteklenir ve varsayılan olarak oluşturulan tek bağlı hizmettir ve ADLS 2. Nesil gibi diğer bağlayıcıları seçme seçeneği yoktur.
Özel etkinlik izinleri
Özel etkinlik, Azure Batch otomatik kullanıcı hesabını görev kapsamına sahip
Komutları yürütme
Özel Etkinlik'i kullanarak doğrudan bir komut yürütebilirsiniz. Aşağıdaki örnek, hedef Azure Batch Havuz düğümlerinde "echo hello world" komutunu çalıştırır ve çıkışı stdout'a yazdırır.
{
"name": "MyCustomActivity",
"properties": {
"description": "Custom activity sample",
"activities": [{
"type": "Custom",
"name": "MyCustomActivity",
"linkedServiceName": {
"referenceName": "AzureBatchLinkedService",
"type": "LinkedServiceReference"
},
"typeProperties": {
"command": "cmd /c echo hello world"
}
}]
}
}
Nesneleri ve özellikleri geçirme
Bu örnek, hizmetten özel uygulamanıza nesneleri ve kullanıcı tanımlı özellikleri geçirmek için referenceObjects ve extendedProperties özelliklerini nasıl kullanabileceğinizi gösterir.
{
"name": "MyCustomActivityPipeline",
"properties": {
"description": "Custom activity sample",
"activities": [{
"type": "Custom",
"name": "MyCustomActivity",
"linkedServiceName": {
"referenceName": "AzureBatchLinkedService",
"type": "LinkedServiceReference"
},
"typeProperties": {
"command": "SampleApp.exe",
"folderPath": "customactv2/SampleApp",
"resourceLinkedService": {
"referenceName": "StorageLinkedService",
"type": "LinkedServiceReference"
},
"referenceObjects": {
"linkedServices": [{
"referenceName": "AzureBatchLinkedService",
"type": "LinkedServiceReference"
}]
},
"extendedProperties": {
"connectionString": {
"type": "SecureString",
"value": "aSampleSecureString"
},
"PropertyBagPropertyName1": "PropertyBagValue1",
"propertyBagPropertyName2": "PropertyBagValue2",
"dateTime1": "2015-04-12T12:13:14Z"
}
}
}]
}
}
Etkinlik yürütüldüğünde, referenceObjects ve extendedProperties, SampleApp.exe'nin yürütme klasörüne kaydedilen aşağıdaki dosyalarda saklanır.
activity.jsonÖzel etkinliğin extendedProperties ve diğer özelliklerini depolar.
linkedServices.jsonreferenceObjects özelliğinde tanımlanan Bağlı Hizmetler dizisini depolar.
datasets.jsonreferenceObjects özelliğinde tanımlanan veri kümeleri dizisini depolar.
Aşağıdaki örnek kodda SampleApp.exe JSON dosyalarından gerekli bilgilere nasıl erişebileceği gösterilmektedir:
using Newtonsoft.Json;
using System;
using System.IO;
namespace SampleApp
{
class Program
{
static void Main(string[] args)
{
//From Extend Properties
dynamic activity = JsonConvert.DeserializeObject(File.ReadAllText("activity.json"));
Console.WriteLine(activity.typeProperties.extendedProperties.connectionString.value);
// From LinkedServices
dynamic linkedServices = JsonConvert.DeserializeObject(File.ReadAllText("linkedServices.json"));
Console.WriteLine(linkedServices[0].properties.typeProperties.accountName);
}
}
}
Yürütme çıkışlarını alma
Aşağıdaki PowerShell komutunu kullanarak bir işlem hattı çalıştırması başlatabilirsiniz:
$runId = Invoke-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineName $pipelineName
İşlem hattı çalışırken, aşağıdaki komutları kullanarak yürütme çıkışını de kontrol edebilirsiniz:
while ($True) {
$result = Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId $runId -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30)
if(!$result) {
Write-Host "Waiting for pipeline to start..." -foregroundcolor "Yellow"
}
elseif (($result | Where-Object { $_.Status -eq "InProgress" } | Measure-Object).count -ne 0) {
Write-Host "Pipeline run status: In Progress" -foregroundcolor "Yellow"
}
else {
Write-Host "Pipeline '"$pipelineName"' run finished. Result:" -foregroundcolor "Yellow"
$result
break
}
($result | Format-List | Out-String)
Start-Sleep -Seconds 15
}
Write-Host "Activity `Output` section:" -foregroundcolor "Yellow"
$result.Output -join "`r`n"
Write-Host "Activity `Error` section:" -foregroundcolor "Yellow"
$result.Error -join "`r`n"
Özel uygulamanızın stdout ve stderr, görevin GUID'si ile Azure Batch Bağlı Hizmet'i oluştururken tanımladığınız Azure Depolama Bağlı Hizmeti içindeki adfjobs kapsayıcısına kaydedilir. Aşağıdaki kod parçacığında gösterildiği gibi Etkinlik Çalıştırması çıkışından ayrıntılı yolu alabilirsiniz:
Pipeline ' MyCustomActivity' run finished. Result:
ResourceGroupName : resourcegroupname
DataFactoryName : datafactoryname
ActivityName : MyCustomActivity
PipelineRunId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
PipelineName : MyCustomActivity
Input : {command}
Output : {exitcode, outputs, effectiveIntegrationRuntime}
LinkedServiceName :
ActivityRunStart : 10/5/2017 3:33:06 PM
ActivityRunEnd : 10/5/2017 3:33:28 PM
DurationInMs : 21203
Status : Succeeded
Error : {errorCode, message, failureType, target}
Activity Output section:
"exitcode": 0
"outputs": [
"https://<container>.blob.core.windows.net/adfjobs/<GUID>/output/stdout.txt",
"https://<container>.blob.core.windows.net/adfjobs/<GUID>/output/stderr.txt"
]
"effectiveIntegrationRuntime": "DefaultIntegrationRuntime (East US)"
Activity Error section:
"errorCode": ""
"message": ""
"failureType": ""
"target": "MyCustomActivity"
aşağı akış etkinliklerinde stdout.txt içeriğini kullanmak isterseniz, "@activity('MyCustomActivity').output.outputs[0]" ifadesinde stdout.txt dosyasının yolunu alabilirsiniz.
Önemli
- activity.json, linkedServices.json ve datasets.json Batch görevinin çalışma zamanı klasöründe depolanır. Bu örnekte activity.json, linkedServices.json ve datasets.json yolunda depolanır
https://adfv2storage.blob.core.windows.net/adfjobs/<GUID>/runtime/. Gerekirse, bunları ayrı ayrı temizlemeniz gerekir. - Self-Hosted Integration Runtime kullanan Bağlı Hizmetler için anahtarlar veya parolalar gibi hassas bilgiler, kimlik bilgilerinin müşteri tarafından tanımlanan özel ağ ortamında kaldığından emin olmak için Self-Hosted Integration Runtime tarafından şifrelenir. Özel uygulama kodunuzda bu şekilde referans verildiğinde bazı hassas alanlar eksik olabilir. Gerekirse Bağlantılı Hizmet referansı kullanmak yerine extendedProperties içinde SecureString kullanın.
Çıkışları başka bir etkinliğe aktarma
Özel Etkinlikteki kodunuzdaki özel değerleri hizmete geri gönderebilirsiniz. Bunu, uygulamanızdan outputs.json içine yazarak yapabilirsiniz. Hizmet, outputs.json içeriğini kopyalar ve bunu customOutput özelliğinin değeri olarak Etkinlik Çıkışına ekler. (Boyut sınırı 2 MB'tır.) outputs.json içeriğini alt akış etkinliklerinde kullanmak istiyorsanız, @activity('<MyCustomActivity>').output.customOutput ifadesini kullanarak değerini alabilirsiniz.
SecureString çıkışlarını alma
Bu makaledeki örneklerden bazılarında gösterildiği gibi SecureString türü olarak belirlenen hassas özellik değerleri, kullanıcı arabirimindeki İzleme sekmesinde maskelenir. Gerçek bir ardışık düzen yürütmesinde, ancak, SecureString özelliği, activity.json dosya içinde JSON formatında düz metin olarak serileştirilir. Örneğin:
"extendedProperties": {
"connectionString": {
"type": "SecureString",
"value": "aSampleSecureString"
}
}
Bu serileştirme gerçekten güvenli değildir ve güvenli olması amaçlanmamıştır. Amaç, hizmetin İzleme sekmesindeki değeri maskelemeye yönelik bir ipucudur.
Özel bir etkinlikten SecureString türündeki özelliklere erişmek için, .EXE ile aynı klasöre yerleştirilen dosyasını okuyun, JSON'u ayrıştırın ve ardından JSON özelliğine (extendedProperties [propertyName] =activity.json değeri) erişin.
Azure Batch'in Otomatik Ölçeklendirmesi
ayrıca autoscale özelliğine sahip bir Azure Batch havuzu da oluşturabilirsiniz. Örneğin, 0 ayrılmış VM ile bir Azure toplu iş havuzu ve bekleyen görevlerin sayısına göre otomatik ölçeklendirme formülü oluşturabilirsiniz.
Buradaki örnek formül şu davranışa ulaşır: Havuz ilk oluşturulduğunda 1 VM ile başlar. $PendingTasks ölçüm, çalışma + etkin (kuyruğa alınmış) durumdaki görev sayısını tanımlar. Formül, son 180 saniye içinde bekleyen görevlerin ortalama sayısını bulur ve TargetDedicated'ı buna göre ayarlar. TargetDedicated'ın hiçbir zaman 25 VM'nin ötesine geçmemesini sağlar. Bu nedenle, yeni görevler gönderildikçe havuz otomatik olarak büyür ve görevler tamamlandıkça VM'ler birer birer serbest hale gelir ve otomatik ölçeklendirme bu VM'leri küçültür. startingNumberOfVMs ve maxNumberofVMs gereksinimlerinize göre ayarlanabilir.
Otomatik ölçeklendirme formülü:
startingNumberOfVMs = 1;
maxNumberofVMs = 25;
pendingTaskSamplePercent = $PendingTasks.GetSamplePercent(180 * TimeInterval_Second);
pendingTaskSamples = pendingTaskSamplePercent < 70 ? startingNumberOfVMs : avg($PendingTasks.GetSample(180 * TimeInterval_Second));
$TargetDedicated=min(maxNumberofVMs,pendingTaskSamples);
Ayrıntılar için bkz. Otomatik olarak Azure Batch havuzundaki işlem düğümlerini ölçeklendirme.
Havuz varsayılan autoScaleEvaluationInterval kullanıyorsa, Batch hizmetinin özel etkinliği çalıştırmadan önce VM'yi hazırlaması 15-30 dakika sürebilir. Eğer havuz farklı bir autoScaleEvaluationInterval kullanıyorsa, Batch hizmeti autoScaleEvaluationInterval + 10 dakika sürecektir.
İlgili içerik
Verileri başka şekillerde dönüştürmeyi açıklayan aşağıdaki makalelere bakın: