Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
APPLIES TO:
Azure Data Factory
Azure Synapse Analytics
Tip
Data Factory v Microsoft Fabric je nová generace Azure Data Factory s jednodušší architekturou, integrovanou AI a novými funkcemi. Pokud s integrací dat začínáte, začněte Fabric Data Factory. Stávající úlohy ADF lze upgradovat na Fabric pro přístup k novým funkcím v oblastech datové vědy, analýz v reálném čase a vytváření sestav.
Existují dva typy aktivit, které můžete použít v kanálu Azure Data Factory nebo Synapse.
- Aktivity přesunu dat pro přesun dat mezi podporovanými zdrojovými a cílovými úložišti dat.
- aktivity transformace dat k transformaci dat pomocí výpočetních služeb, jako jsou Azure HDInsight a Azure Batch.
Pokud chcete přesunout data do a z úložiště dat, které služba nepodporuje, nebo transformovat a zpracovávat data způsobem, který služba nepodporuje, můžete vytvořit vlastní aktivitu s vlastní logikou přesunu nebo transformace dat a použít aktivitu v kanálu. Vlastní aktivita spouští přizpůsobenou logiku kódu na fondu virtuálních počítačů Azure Batch.
Poznámka:
K interakci s Azure doporučujeme použít modul Azure Az PowerShell. Pokud chcete začít, přečtěte si téma Install Azure PowerShell. Informace o migraci do modulu Az PowerShell najdete v tématu Migrace Azure PowerShell z AzureRM do Az.
Pokud s Azure Batch službou začínáte, přečtěte si následující články:
- Základy služby Azure Batch pro přehled služby Azure Batch.
- New-AzBatchAccount k vytvoření účtu Azure Batch, nebo Azure portál k vytvoření účtu Azure Batch prostřednictvím Azure portálu. Podrobné pokyny k používání cmdletu najdete v článku Použití PowerShell ke správě účtu Azure Batch.
- New-AzBatchPool příkaz k vytvoření fondu Azure Batch.
Důležité
Při vytváření nového fondu Azure Batch se musí použít VirtualMachineConfiguration a NE CloudServiceConfiguration.
Přidejte vlastní aktivity do procesního toku pomocí uživatelského rozhraní
Pokud chcete v datovém toku použít vlastní aktivitu, proveďte následující kroky:
Vyhledejte Custom v podokně aktivit kanálu a přetáhněte aktivitu Custom na plátno kanálu.
Pokud ještě není vybraná, vyberte na plátně novou vlastní aktivitu.
Vyberte kartu Azure Batch a vyberte nebo vytvořte novou propojenou službu Azure Batch, která spustí vlastní aktivitu.
Vyberte kartu Settings a zadejte příkaz, který se má spustit na Azure Batch, a volitelné upřesňující podrobnosti.
propojená služba Azure Batch
Následující JSON definuje ukázkovou Azure Batch propojenou službu. Podrobnosti najdete v tématu Podporovaná výpočetní prostředí.
{
"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"
}
}
}
}
Další informace o propojené službě Azure Batch najdete v článku Výpočetní propojené služby.
Vlastní aktivita
Následující fragment kódu JSON definuje kanál s jednoduchou vlastní aktivitou. Definice aktivity obsahuje odkaz na propojenou službu Azure Batch.
{
"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"
}
}
}]
}
}
V této ukázce je helloworld.exe vlastní aplikace uložená ve složce customactv2/helloworld účtu Azure Storage použitém ve službě resourceLinkedService. Vlastní aktivita odešle tuto vlastní aplikaci, která se má spustit na Azure Batch. Příkaz můžete zaměnit za jakoukoli preferovanou aplikaci, kterou lze spustit na cílovém operačním systému uzlů v Azure Batch fondu.
Následující tabulka popisuje názvy a popisy vlastností, které jsou specifické pro tuto aktivitu.
| Vlastnost | Popis | Povinné |
|---|---|---|
| jméno | Název aktivity v potrubí | Ano |
| popis | Text popisující, co aktivita dělá. | Ne |
| typ | Pro vlastní aktivitu je typ aktivity Vlastní. | Ano |
| název propojené služby | Služba propojená s Azure Batch Další informace o této propojené službě najdete v článku o propojených službách Compute. | Ano |
| příkaz | Příkaz vlastní aplikace, která se má spustit. Pokud už je aplikace dostupná v uzlu fondu Azure Batch, lze přeskočit resourceLinkedService a folderPath. Můžete například zadat příkaz, který má být cmd /c dir, který je nativně podporován uzlem fondu Windows Batch. |
Ano |
| služba propojení zdrojů | Azure Storage propojenou službu k účtu úložiště, ve kterém je vlastní aplikace uložená | Ne* |
| folderPath | Cesta ke složce vlastní aplikace a všechny její závislosti Pokud máte závislosti uložené v podsložkách – to znamená v hierarchické struktuře složek ve složce folderPath – struktura složek se při kopírování souborů do Azure Batch právě zploštěla. To znamená, že všechny soubory se zkopírují do jedné složky bez podsložek. Pokud chcete toto chování obejít, zvažte komprimaci souborů, zkopírování komprimovaného souboru a jeho rozbalení vlastním kódem v požadovaném umístění. |
Ne* |
| referenční objekty | Pole existujících propojených služeb a datových sad. Odkazované propojené služby a datové sady se předávají vlastní aplikaci ve formátu JSON, aby váš vlastní kód mohl odkazovat na prostředky služby. | Ne |
| rozšířenéVlastnosti | Uživatelem definované vlastnosti, které je možné předat vlastní aplikaci ve formátu JSON, aby váš vlastní kód mohl odkazovat na další vlastnosti | Ne |
| dobaUloženíVeDnech | Doba uchovávání souborů odeslaných pro vlastní aktivitu. Výchozí hodnota je 30 dní. | Ne |
* Vlastnosti resourceLinkedService a folderPath musí být buď zadány, nebo oba musí být vynechány.
Poznámka:
Pokud předáváte propojené služby jako referenční objekty ve vlastní aktivitě, je vhodné použít propojenou službu s povoleným úložištěm Azure Key Vault (protože neobsahuje žádné zabezpečené řetězce) a načíst přihlašovací údaje pomocí názvu tajného klíče přímo z Key Vault z kódu. Můžete najít příklad here, který odkazuje na propojenou službu s povolenou službou AKV, načte přihlašovací údaje z Key Vault a pak přistupuje k úložišti v kódu.
Poznámka:
V současné době se ve vlastní aktivitě podporuje pouze Azure Blob Storage pro resourceLinkedService a je to jediná propojená služba, která se ve výchozím nastavení vytvoří a není možné zvolit další konektory, jako je ADLS Gen2.
Vlastní oprávnění aktivit
Vlastní aktivita nastaví Azure Batch účet automatického uživatele na Nepřístup správce s oborem úkolů (výchozí specifikace automatického uživatele). Úroveň oprávnění automatického uživatelského účtu nemůžete změnit. Další informace najdete v tématu Spouštění úloh v uživatelských účtech ve službě Batch | Automatické uživatelské účty.
Spouštění příkazů
Příkaz můžete spustit přímo pomocí Custom aktivity. Následující příklad spustí příkaz "echo hello world" na cílových uzlech Azure Batch Poolu a zapíše výstup do stdout.
{
"name": "MyCustomActivity",
"properties": {
"description": "Custom activity sample",
"activities": [{
"type": "Custom",
"name": "MyCustomActivity",
"linkedServiceName": {
"referenceName": "AzureBatchLinkedService",
"type": "LinkedServiceReference"
},
"typeProperties": {
"command": "cmd /c echo hello world"
}
}]
}
}
Předávání objektů a vlastností
Tato ukázka ukazuje, jak můžete použít referenceObjects a extendedProperties k předávání objektů a uživatelem definovaných vlastností ze služby do vlastní aplikace.
{
"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"
}
}
}]
}
}
Při spuštění aktivity jsou referenceObjects a extendedProperties uloženy v následujících souborech, které jsou nasazeny do stejné spouštěcí složky SampleApp.exe:
activity.jsonUkládá rozšířené vlastnosti a vlastnosti vlastní aktivity.
linkedServices.jsonUloží pole propojených služeb definovaných ve vlastnosti referenceObjects.
datasets.jsonUloží pole datových sad definovaných ve vlastnosti referenceObjects.
Následující ukázkový kód ukazuje, jak SampleApp.exe získat přístup k požadovaným informacím ze souborů JSON:
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);
}
}
}
Získávání výsledků z provedení.
Spuštění pipelines můžete zahájit pomocí následujícího příkazu PowerShellu:
$runId = Invoke-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineName $pipelineName
Když je potrubí spuštěné, můžete zkontrolovat výstup spuštění pomocí následujících příkazů:
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"
Kontejner stdout a stderr vaší vlastní aplikace je uložen do kontejneru adfjobs v propojené službě Azure Storage, kterou jste definovali při vytváření propojené služby Azure Batch s GUID úlohy. Podrobnou cestu můžete získat z výstupu spuštění aktivity, jak je znázorněno v následujícím fragmentu kódu:
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"
Pokud chcete využívat obsah stdout.txt v podřízených aktivitách, můžete získat cestu k souboru stdout.txt ve výrazu "@activity('MyCustomActivity').outputs[0]".
Důležité
- Activity.json, linkedServices.json a datasets.json jsou uložené ve složce modulu runtime úlohy Batch. V tomto příkladu jsou activity.json, linkedServices.json a datasets.json uloženy v
https://adfv2storage.blob.core.windows.net/adfjobs/<GUID>/runtime/cestě. V případě potřeby je potřebujete vyčistit samostatně. - U propojených služeb, které používají Self-Hosted Integration Runtime, se citlivé informace, jako jsou klíče nebo hesla, šifrují Self-Hosted Integration Runtime, aby přihlašovací údaje zůstaly v prostředí privátní sítě definované zákazníkem. Při odkazování vlastním kódem aplikace tímto způsobem může chybět některá citlivá pole. Použijte v rozšířených vlastnostech SecureString místo odkazu na propojenou službu, pokud je to nutné.
Předání výstupů jiné aktivitě
Vlastní hodnoty z vašeho kódu ve Vlastní Aktivitě můžete odeslat zpět do služby. Můžete to udělat tak, že je napíšete do outputs.json vaší aplikace. Služba zkopíruje obsah outputs.json a připojí ho jako hodnotu vlastnosti do výstupu customOutput aktivity. (Limit velikosti je 2 MB.) Pokud chcete využívat obsah podřízených outputs.json aktivit, můžete hodnotu získat pomocí výrazu @activity('<MyCustomActivity>').output.customOutput.
Načtěte výstupy SecureString
Hodnoty citlivých vlastností označené jako typ SecureString, jak je znázorněno v některých příkladech v tomto článku, jsou maskovány na kartě Monitorování v uživatelském rozhraní. Při skutečném provádění kanálu je však vlastnost SecureString serializována jako JSON přímo v souboru activity.json jako prostý text. Příklad:
"extendedProperties": {
"connectionString": {
"type": "SecureString",
"value": "aSampleSecureString"
}
}
Tato serializace není skutečně zabezpečená a není určena k zabezpečení. Účelem je poskytnout pokyn službě, aby maskovala hodnotu na monitorovací kartě.
Pokud chcete získat přístup k vlastnostem typu SecureString z vlastní aktivity, přečtěte activity.json soubor, který je umístěný ve stejné složce jako váš .EXE, deserializujte JSON a poté získejte přístup k vlastnosti JSON (extendedProperties => [propertyName] => value).
Automatické škálování Azure Batch
Můžete také vytvořit fond Azure Batch pomocí funkce autoscale. Můžete například vytvořit dávkový fond v Azure s nulovým počtem vyhrazených virtuálních počítačů a vzorcem automatického škálování, který se odvíjí od počtu čekajících úkolů.
Ukázkový vzorec zde dosahuje následujícího chování: Při počátečním vytvoření poolu začíná s 1 virtuálním počítačem. $PendingTasks metrik definuje počet úloh ve stavu běží + aktivní. Vzorec najde průměrný počet čekajících úkolů za posledních 180 sekund a nastaví targetDedicated odpovídajícím způsobem. Zajišťuje, aby TargetDedicated nikdy nepřesahoval 25 virtuálních počítačů. Když se odesílají nové úkoly, fond se automaticky rozšiřuje a jak jsou úkoly dokončeny, virtuální počítače se postupně jeden po druhém uvolňují a automatické škálování redukuje počet těchto virtuálních počítačů. hodnoty startNumberOfVMs a maxNumberofVMs je možné upravit podle vašich potřeb.
Vzorec automatického škálování:
startingNumberOfVMs = 1;
maxNumberofVMs = 25;
pendingTaskSamplePercent = $PendingTasks.GetSamplePercent(180 * TimeInterval_Second);
pendingTaskSamples = pendingTaskSamplePercent < 70 ? startingNumberOfVMs : avg($PendingTasks.GetSample(180 * TimeInterval_Second));
$TargetDedicated=min(maxNumberofVMs,pendingTaskSamples);
Podrobnosti najdete v tématu Automaticky škálovat výpočetní uzly ve fondu Azure Batch.
Pokud fond používá výchozí autoScaleEvaluationInterval, může příprava virtuálního počítače před spuštěním vlastní aktivity trvat 15 až 30 minut. Pokud fond používá jiný autoScaleEvaluationInterval, může službě Batch trvat autoScaleEvaluationInterval + 10 minut.
Související obsah
Podívejte se na následující články, které vysvětlují, jak transformovat data jinými způsoby: