Egyéni tevékenységek használata Azure Data Factoryben vagy Azure Synapse Analytics-folyamatban
A következőkre vonatkozik: Azure Data Factory Azure Synapse Analytics
Tipp.
Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!
Az Azure Data Factoryben vagy a Synapse-folyamatban kétféle tevékenység használható.
- Adatáthelyezési tevékenységek az adatok támogatott forrás és fogadó adattárak közötti áthelyezéséhez.
- Adatátalakítási tevékenységek az adatok olyan számítási szolgáltatások használatával történő átalakításához, mint az Azure HDInsight és az Azure Batch.
Ha olyan adattárba vagy adattárba szeretne adatokat áthelyezni, amelyet a szolgáltatás nem támogat, vagy a szolgáltatás által nem támogatott módon szeretné átalakítani/feldolgozni az adatokat, létrehozhat egy egyéni tevékenységet saját adatáthelyezési vagy átalakítási logikájával, és használhatja a tevékenységet egy folyamatban. Az egyéni tevékenység a testre szabott kódlogikát egy virtuális gépek Azure Batch-készletén futtatja.
Feljegyzés
Javasoljuk, hogy az Azure Az PowerShell modult használja az Azure-ral való interakcióhoz. Első lépésként tekintse meg az Azure PowerShell telepítését ismertető témakört. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.
Ha még nem ismerkedik az Azure Batch szolgáltatással, tekintse meg az alábbi cikkeket:
- Az Azure Batch alapjai az Azure Batch szolgáltatás áttekintéséhez.
- New-AzBatchAccount parancsmag egy Azure Batch-fiók (vagy) Azure Portal létrehozásához az Azure Batch-fiók Azure Portal használatával történő létrehozásához. A parancsmaggal kapcsolatos részletes útmutatásért tekintse meg az Azure Batch-fiók kezeléséről szóló cikket a PowerShell használatával.
- New-AzBatchPool-parancsmag egy Azure Batch-készlet létrehozásához.
Fontos
Új Azure Batch-készlet létrehozásakor a "VirtualMachineConfiguration" kifejezést kell használni, és NEM a CloudServiceConfigurationt. További részletekért tekintse meg az Azure Batch Pool migrálási útmutatóját.
Egyéni tevékenységek hozzáadása folyamathoz felhasználói felülettel
Ha egyéni tevékenységet szeretne használni egy folyamatban, hajtsa végre a következő lépéseket:
Keresse meg az Egyéni elemet a folyamattevékenységek panelen, és húzzon egy egyéni tevékenységet a folyamatvászonra.
Jelölje ki az új egyéni tevékenységet a vásznon, ha még nincs kijelölve.
Az Azure Batch lapon válassza ki vagy hozzon létre egy új Azure Batch társított szolgáltatást, amely végrehajtja az egyéni tevékenységet.
Válassza a Beállítások lapot, és adjon meg egy, az Azure Batchen végrehajtandó parancsot, valamint opcionális speciális részleteket.
Azure Batch társított szolgáltatás
Az alábbi JSON egy Azure Batch-alapú társított szolgáltatást definiál. További információ: Támogatott számítási környezetek
{
"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"
}
}
}
}
Az Azure Batch társított szolgáltatásával kapcsolatos további információkért tekintse meg a számítási társított szolgáltatásokról szóló cikket.
Egyéni tevékenység
Az alábbi JSON-kódrészlet egy egyszerű egyéni tevékenységgel rendelkező folyamatot határoz meg. A tevékenységdefiníció hivatkozik az Azure Batch társított szolgáltatására.
{
"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"
}
}
}]
}
}
Ebben a mintában a helloworld.exe egy egyéni alkalmazás, amely a resourceLinkedService-ben használt Azure Storage-fiók customactv2/helloworld mappájában van tárolva. Az egyéni tevékenység elküldi ezt az egyéni alkalmazást az Azure Batch-en való végrehajtáshoz. A parancsot bármely olyan előnyben részesített alkalmazásra lecserélheti, amely végrehajtható az Azure Batch-készlet csomópontjainak célműveleti rendszerében.
Az alábbi táblázat a tevékenységre jellemző tulajdonságok nevét és leírását ismerteti.
Tulajdonság | Leírás | Szükséges |
---|---|---|
név | A folyamat tevékenységének neve | Igen |
leírás | A tevékenység tevékenységeit leíró szöveg. | Nem |
típus | Egyéni tevékenység esetén a tevékenység típusa Egyéni. | Igen |
linkedServiceName | Társított szolgáltatás az Azure Batch-hez. A társított szolgáltatással kapcsolatos további információkért tekintse meg a társított számítási szolgáltatásokról szóló cikket. | Igen |
command | A végrehajtandó egyéni alkalmazás parancsa. Ha az alkalmazás már elérhető az Azure Batch-készlet csomópontján, a resourceLinkedService és a folderPath kihagyható. Megadhatja például a kívánt cmd /c dir parancsot, amelyet a Windows Batch Pool csomópont natív módon támogat. |
Igen |
resourceLinkedService | Azure Storage társított szolgáltatás ahhoz a Tárfiókhoz, ahol az egyéni alkalmazást tárolják | Nem* |
folderPath | Az egyéni alkalmazás mappájának és minden függőségének elérési útja Ha almappákban , azaz hierarchikus mappastruktúrában, a FolderPath mappában tárolt függőségek vannak tárolva, a mappaszerkezet jelenleg simul, amikor a fájlok át lesznek másolva az Azure Batchbe. Vagyis az összes fájl egyetlen mappába lesz másolva, almappák nélkül. A viselkedés megkerüléséhez fontolja meg a fájlok tömörítését, a tömörített fájl másolását, majd a kívánt helyen lévő egyéni kóddal való kibontását. |
Nem* |
referenceObjects | Meglévő társított szolgáltatások és adathalmazok tömbje. A hivatkozott társított szolgáltatások és adatkészletek JSON formátumban kerülnek át az egyéni alkalmazásnak, hogy az egyéni kód hivatkozni tudja a szolgáltatás erőforrásaira | Nem |
extendedProperties | Felhasználó által definiált tulajdonságok, amelyek JSON formátumban továbbíthatók az egyéni alkalmazásnak, hogy az egyéni kód további tulajdonságokra hivatkozzon | Nem |
retentionTimeInDays | Az egyéni tevékenységhez küldött fájlok megőrzési ideje. Az alapértelmezett érték 30 nap. | Nem |
* A tulajdonságokat resourceLinkedService
meg folderPath
kell adni, vagy mindkettőt ki kell hagyni.
Feljegyzés
Ha referenciaként továbbítja a csatolt szolgáltatásokat az egyéni tevékenységben, akkor ajánlott biztonsági gyakorlat egy Azure Key Vault-kompatibilis társított szolgáltatás átadása (mivel nem tartalmaz biztonságos sztringeket), és a hitelesítő adatokat titkos névvel lekérni közvetlenül a Key Vaultból a kódból. Itt talál egy példát, amely az AKV-kompatibilis társított szolgáltatásra hivatkozik, lekéri a hitelesítő adatokat a Key Vaultból, majd hozzáfér a kód tárterületéhez.
Feljegyzés
Az egyéni tevékenységekben jelenleg csak az Azure Blob Storage támogatott a resourceLinkedService szolgáltatáshoz, és ez az egyetlen társított szolgáltatás, amely alapértelmezés szerint létrejön, és nem választhat más összekötőket, például az ADLS Gen2-t.
Egyéni tevékenységengedélyek
Az egyéni tevékenység az Azure Batch automatikus felhasználói fiókját nem rendszergazdai hozzáférésre állítja a tevékenység hatókörével (az alapértelmezett automatikus felhasználói specifikációval). Az automatikus felhasználói fiók engedélyszintje nem módosítható. További információ: Feladatok futtatása felhasználói fiókok alatt a Batchben | Automatikus felhasználói fiókok.
Parancsok végrehajtása
Közvetlenül végrehajthat egy parancsot egyéni tevékenység használatával. Az alábbi példa az "echo hello world" parancsot futtatja a cél Azure Batch Pool-csomópontokon, és a kimenetet stdout-ra nyomtatja.
{
"name": "MyCustomActivity",
"properties": {
"description": "Custom activity sample",
"activities": [{
"type": "Custom",
"name": "MyCustomActivity",
"linkedServiceName": {
"referenceName": "AzureBatchLinkedService",
"type": "LinkedServiceReference"
},
"typeProperties": {
"command": "cmd /c echo hello world"
}
}]
}
}
Objektumok és tulajdonságok átadása
Ez a minta bemutatja, hogyan adhat át objektumokat és felhasználó által definiált tulajdonságokat a szolgáltatásból az egyéni alkalmazásnak a referenceObjects és a extendedProperties használatával.
{
"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"
}
}
}]
}
}
A tevékenység végrehajtásakor a referenceObjects és a extendedProperties a következő fájlokban lesz tárolva, amelyek a SampleApp.exe ugyanazon végrehajtási mappájába vannak üzembe helyezve:
activity.json
Az egyéni tevékenység kiterjesztett tulajdonságait és tulajdonságait tárolja.
linkedServices.json
A referenceObjects tulajdonságban definiált társított szolgáltatások tömbje.
datasets.json
A referenceObjects tulajdonságban definiált adathalmazok tömbje.
Az alábbi mintakód bemutatja, hogyan férhet hozzá a SampleApp.exe a szükséges információkhoz JSON-fájlokból:
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);
}
}
}
Végrehajtási kimenetek lekérése
A folyamatfuttatást a következő PowerShell-paranccsal indíthatja el:
$runId = Invoke-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineName $pipelineName
A folyamat futtatásakor az alábbi parancsokkal ellenőrizheti a végrehajtási kimenetet:
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"
Az egyéni alkalmazás stdoutját és stderr-ét a rendszer a feladat GUID azonosítójával rendelkező Azure Batch Linked Service létrehozásakor megadott Azure Storage társított szolgáltatás adfjobs-tárolóba menti. A részletes elérési utat a Tevékenységfuttatás kimenetből szerezheti be, ahogyan az a következő kódrészletben látható:
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"
Ha a stdout.txt tartalmát szeretné felhasználni az alsóbb rétegbeli tevékenységekben, a stdout.txt fájl elérési útját a "@activity('MyCustomActivity').output.outputs[0]" kifejezésben találja.
Fontos
- A activity.json, a linkedServices.json és a datasets.json a Batch-feladat futtatókörnyezeti mappájában vannak tárolva. Ebben a példában
https://adfv2storage.blob.core.windows.net/adfjobs/<GUID>/runtime/
a activity.json, a linkedServices.json és a datasets.json az elérési úton vannak tárolva. Szükség esetén külön kell megtisztítania őket. - A saját üzemeltetésű integrációs modult használó társított szolgáltatások esetében a bizalmas információkat, például a kulcsokat vagy jelszavakat a saját üzemeltetésű integrációs modul titkosítja, hogy a hitelesítő adatok megmaradjanak az ügyfél által meghatározott privát hálózati környezetben. Előfordulhat, hogy az egyéni alkalmazáskód ilyen módon hivatkozik néhány bizalmas mezőre. Ha szükséges, használja a SecureStringet a extendedProperties szolgáltatásban a társított szolgáltatás referenciájának használata helyett.
Kimenetek átadása másik tevékenységnek
Az egyéni tevékenységben szereplő kódból egyéni értékeket küldhet vissza a szolgáltatásnak. Ezt úgy teheti meg, hogy beírja őket outputs.json
az alkalmazásból. A szolgáltatás a tulajdonság értékeként átmásolja annak tartalmát outputs.json
, és hozzáfűzi a Tevékenység kimenetéhez customOutput
. (A méretkorlát 2 MB.) Ha az alsóbb rétegbeli tevékenységek tartalmát outputs.json
szeretné felhasználni, a kifejezéssel @activity('<MyCustomActivity>').output.customOutput
lekérheti az értéket.
SecureString-kimenetek lekérése
A SecureString típusként megjelölt bizalmas tulajdonságértékek, amint az a cikkben bemutatott néhány példában is látható, a felhasználói felület Figyelés lapján lesznek maszkolva. A folyamat tényleges végrehajtásakor azonban a SecureString tulajdonság JSON-ként van szerializálva a activity.json
fájlban egyszerű szövegként. Példa:
"extendedProperties": {
"connectionString": {
"type": "SecureString",
"value": "aSampleSecureString"
}
}
Ez a szerializálás nem igazán biztonságos, és nem célja, hogy biztonságos legyen. A szándék a szolgáltatásra vonatkozó tipp, amely elfedi az értéket a Figyelés lapon.
Ha secureString típusú tulajdonságokat szeretne elérni egy egyéni tevékenységből, olvassa el a activity.json
fájlt, amely ugyanabban a mappában van, mint a .EXE, deszerializálja a JSON-t, majd nyissa meg a JSON tulajdonságot (extendedProperties => [propertyName] => value).
Az Azure Batch automatikus skálázása
Automatikus skálázási funkcióval rendelkező Azure Batch-készletet is létrehozhat. Létrehozhat például egy Azure-kötegkészletet 0 dedikált virtuális géppel és egy automatikus skálázási képlettel a függőben lévő tevékenységek száma alapján.
Az itt található mintaképlet a következő viselkedést éri el: A készlet kezdeti létrehozásakor 1 virtuális géppel kezdődik. $PendingTasks metrika a futó + aktív (várólistán lévő) állapotban lévő tevékenységek számát határozza meg. A képlet megkeresi a függőben lévő tevékenységek átlagos számát az elmúlt 180 másodpercben, és ennek megfelelően állítja be a TargetDedicated értéket. Biztosítja, hogy a TargetDedicated soha ne lépje túl a 25 virtuális gépet. Így az új tevékenységek elküldésekor a készlet automatikusan nő, és a feladatok befejeződése után a virtuális gépek egyenként ingyenessé válnak, és az automatikus skálázás zsugorítja ezeket a virtuális gépeket. A startingNumberOfVMs és a maxNumberofVMs igény szerint módosítható.
Automatikus méretezési képlet:
startingNumberOfVMs = 1;
maxNumberofVMs = 25;
pendingTaskSamplePercent = $PendingTasks.GetSamplePercent(180 * TimeInterval_Second);
pendingTaskSamples = pendingTaskSamplePercent < 70 ? startingNumberOfVMs : avg($PendingTasks.GetSample(180 * TimeInterval_Second));
$TargetDedicated=min(maxNumberofVMs,pendingTaskSamples);
Részletekért lásd : Számítási csomópontok automatikus méretezése egy Azure Batch-készletben .
Ha a készlet az alapértelmezett automatikusScaleEvaluationInterval értéket használja, a Batch szolgáltatás 15–30 percet vehet igénybe a virtuális gép előkészítéséhez az egyéni tevékenység futtatása előtt. Ha a készlet egy másik automatikusScaleEvaluationInterval értéket használ, a Batch szolgáltatás az automatikusScaleEvaluationInterval + 10 percet is igénybe vehet.
Kapcsolódó tartalom
Tekintse meg az alábbi cikkeket, amelyekből megtudhatja, hogyan alakíthat át adatokat más módokon:
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: