Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik:
Azure Data Factory
Azure Synapse Analytics
Tipp
Egy Azure Data Factory vagy 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ásokkal való átalakításához, mint a Azure HDInsight és a 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 testreszabott kódlogikát egy Azure Batch virtuális gépek készletén futtatja.
Megjegyzés
Javasoljuk, hogy az Azure Az PowerShell-modult használja a Azure használatához. Első lépésként lásd: Install Azure PowerShell. Az Az PowerShell-modulra való migrálásról az Migrate Azure PowerShell az AzureRM-ből az Az című témakörben olvashat.
Ha még nem ismerkedik Azure Batch szolgáltatással, tekintse meg a következő cikkeket:
- Azure Batch alapismeretek az Azure Batch szolgáltatás áttekintéséhez.
- New-AzBatchAccount parancsmag egy Azure Batch fiók (vagy) Azure portál létrehozásához a Azure Batch-fiók létrehozásához Azure portál használatával. A parancsmaggal kapcsolatos részletes útmutatásért tekintse meg A PowerShell használata Azure Batch fiók kezeléséhez cikket.
- 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.
Egyéni tevékenységek hozzáadása a csővezetékhez a felhasználói felületen keresztül.
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.
Válassza a Azure Batch lapot egy új Azure Batch társított szolgáltatás kiválasztásához vagy létrehozásához, amely végrehajtja az egyéni tevékenységet.
Válassza a Settings lapot, és adja meg a Azure Batch végrehajtandó parancsot, valamint az opcionális speciális részleteket.
Azure Batch társított szolgáltatás
Az alábbi JSON egy Azure Batch társított szolgáltatásmintát határoz meg. 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"
}
}
}
}
További információkért az Azure Batch társított szolgáltatásról lásd a Társított szolgáltatások 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 a Azure Batch társított szolgáltatásra.
{
"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 a resourceLinkedService-ben használt Azure Storage fiók customactv2/helloworld mappájában tárolt egyéni alkalmazás. Az egyéni folyamat továbbítja ezt az egyéni alkalmazást végrehajtásra az Azure Batch-re. A parancsot bármely olyan előnyben részesített alkalmazásra lecserélheti, amely végrehajtható a Azure Batch készletcsomópontok cél operációs rendszerén.
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 | Kötelező |
|---|---|---|
| név | A csővezeték tevékenységének neve | Yes |
| leírás | A tevékenységet leíró szöveg. | Nem |
| típus | Egyéni tevékenység esetén a tevékenység típusa Egyéni. | Yes |
| kapcsoltSzolgáltatásNeve | Az Azure Batch társított szolgáltatása. 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. | Yes |
| parancs | A végrehajtandó egyéni alkalmazás parancsa. Ha az alkalmazás már elérhető a Azure Batch készletcsomóponton, a resourceLinkedService és a folderPath kihagyható. Megadhatja például a cmd /c dir parancsot, amelyet a Windows Batch-készlet csomópont natív módon támogat. |
Yes |
| erőforráshoz kapcsolódó szolgáltatás | Azure Storage összekapcsolt szolgáltatás a tároló fió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 a függőségek almappákban vannak tárolva – vagyis a folderPath alatti hierarchikus mappastruktúrában –, akkor a mappaszerkezet sík lesz, amikor a fájlokat átmásolják az Azure Batch-be. 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* |
| referenciaobjektumok | 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 |
| kiterjesztettTulajdonságok | 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 |
| megőrzésiIdőNapokban | 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ágok resourceLinkedService és folderPath esetén vagy mindkettőt meg kell adni, vagy mindkettőt ki kell hagyni.
Megjegyzés
Ha a Custom Activity során hivatkozási objektumként ad át csatolt szolgáltatásokat, ajánlott biztonsági eljárásként egy Azure Key Vault által engedélyezett csatolt szolgáltatást használni (mivel nem tartalmaz biztonságos karakterláncokat), és a titkos nevén keresztül közvetlenül a kódból a Key Vault-ból lekérni a hitelesítő adatokat. Talál egy példát itt, amely az AKV-kompatibilis társított szolgáltatásra hivatkozik, lekéri a hitelesítő adatokat a kulcstartóból, majd hozzáfér a kódban lévő tárhoz.
Megjegyzés
Az egyéni tevékenységekben jelenleg csak Azure Blob Storage támogatott a resourceLinkedService szolgáltatásban, é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 a Azure Batch automatikus felhasználói fiókot Non-admin hozzáférésre állítja a tevékenység hatókörével (az alapértelmezett automatikus felhasználói specifikáció). 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 készletcsomópontokon, és a kimenetet stdout értékre 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.exeugyanazon végrehajtási mappájába vannak üzembe helyezve:
activity.jsonAz egyéni tevékenység attribútumait és kiterjesztett tulajdonságait tárolja.
linkedServices.jsonA referenceObjects tulajdonság tárol egy tömböt a társított szolgáltatásokból.
datasets.jsonA referenceObjects tulajdonságban definiált adathalmazok tömbjét tárolja.
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 stdout és stderr egyéni alkalmazásod az adfjobs tárolóba kerül, amely az Azure Batch társított szolgáltatással van társítva az általad megadott Azure Storage Linked Service-ben, a feladat GUID-ja alapján. 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 az alsóbb rétegbeli tevékenységekben szeretné felhasználni a stdout.txt tartalmát, a stdout.txt fájl elérési útját a "@activity('MyCustomActivity').output.outputs[0]" kifejezésben találja.
Fontos
- A activity.json, linkedServices.jsonés datasets.json a Batch-feladat futtatókörnyezeti mappájában vannak tárolva. Ebben a példában az activity.json, a linkedServices.json és a datasets.json fájlok a
https://adfv2storage.blob.core.windows.net/adfjobs/<GUID>/runtime/elérési úton vannak tárolva. Szükség esetén külön kell megtisztítania őket. - A Self-Hosted Integration Runtime használó társított szolgáltatások esetében az Self-Hosted Integration Runtime titkosítja a bizalmas információkat, például a kulcsokat vagy jelszavakat, így biztosítva, hogy a hitelesítő adatok az ügyfél által meghatározott privát hálózati környezetben maradnak. Lehetséges, hogy az egyéni alkalmazáskód ilyen módon történő hivatkozása során néhány bizalmas mező hiányzik. 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 az alkalmazásából beírja őket a outputs.json elembe. A szolgáltatás átmásolja a outputs.json tartalmát, és az customOutput tulajdonság értékeként hozzáfűzi a Tevékenység kimenetéhez. (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.customOutputleké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éldául:
"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 késztetés egy javaslat a szolgáltatás számára, amely elrejti az értéket a Monitorozás fülön.
Ha egy egyéni tevékenységből szeretné elérni a SecureString típusú tulajdonságokat, 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).
A Azure Batch automatikus méretezése
Azure Batch készletet is létrehozhat autoscale funkcióval. 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 ahogy az új feladatokat elküldik, a készlet automatikusan növekszik, és amint a feladatok befejeződnek, a virtuális gépek egyenként felszabadulnak, és az automatikus skálázás csökkenti a virtuális gépek számát. 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 tekintse meg a a számítási csomópontok automatikus méretezését egy Azure Batch-készletben.
Ha a kapacitáskészlet az alapértelmezett autoScaleEvaluationInterval é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 a testreszabott művelet futtatása előtt. Ha a készlet egy másik autoScaleEvaluationInterval értéket használ, a Batch szolgáltatás az autoScaleEvaluationInterval + 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: