Rövid útmutató: Adat-előállító és folyamat létrehozása a .NET SDK használatával

A KÖVETKEZŐKRE VONATKOZIK: Azure Data Factory Azure Synapse Analytics

Ez a rövid útmutató bemutatja, hogyan hozhat létre Azure Data Factory a .NET SDK-val. Az adat-előállítóban létrehozott folyamat adatokat másol egy Azure-blobtároló egyik mappájából egy másikba. Az adatok Azure Data Factory használatával történő átalakításáról szóló oktatóanyagért lásd: Oktatóanyag: Adatok átalakítása a Spark használatával.

Megjegyzés

Ez a cikk nem mutatja be részletesen a Data Factory szolgáltatást. Ha szeretné megismerni az Azure Data Factoryt, tekintse meg Az Azure Data Factory bemutatását.

Előfeltételek

Azure-előfizetés

Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.

Azure-szerepkörök

Data Factory-példányok létrehozásához az Azure-ba történő bejelentkezéshez használt felhasználói fióknak a közreműködő vagy tulajdonos szerepkör tagjának, vagy az Azure-előfizetés rendszergazdájának kell lennie. Az előfizetésben található engedélyek megtekintéséhez lépjen a Azure Portal, válassza ki a felhasználónevét a jobb felső sarokban, válassza a "..." ikont a további lehetőségekért, majd válassza a Saját engedélyek lehetőséget. Ha több előfizetéshez is rendelkezik hozzáféréssel, válassza ki a megfelelő előfizetést.

A Data Factory gyermekerőforrásai – beleértve az adatkészletek, társított szolgáltatások, folyamatok, eseményindítók és integrációs modulok – létrehozására és kezelésére az alábbi követelmények vonatkoznak:

  • Ha gyermekerőforrásokat szeretne létrehozni és kezelni a Azure Portal, az erőforráscsoport szintjén vagy felette kell lennie a Data Factory Közreműködő szerepkörének.
  • A gyermekerőforrások PowerShell-lel vagy az SDK-val való létrehozásához és kezeléséhez a közreműködő szerepkör is elegendő az erőforráscsoport szintjén vagy felette.

Ha szeretne példautasításokat látni arra, hogyan kell egy felhasználót a szerepkörhöz adni, olvassa el a Szerepkörök hozzáadása című cikket.

További információkért tekintse meg a következő cikkeket:

Azure Storage-fiók

Ebben a rövid útmutatóban egy általános célú Azure Storage-fiókot (különösen a Blob Storage-t) használ forrás - és céladattárként . Ha nem rendelkezik általános célú Azure Storage-fiókkal, tekintse meg a Tárfiók létrehozása a fiók létrehozásához című témakört.

A tárfiók nevének lekérése

Ehhez a rövid útmutatóhoz szüksége lesz az Azure Storage-fiók nevére. Az alábbi eljárás lépéseket tartalmaz a tárfiók nevének lekéréséhez:

  1. Egy webböngészőben lépjen a Azure Portal, és jelentkezzen be az Azure-felhasználónevével és -jelszavával.
  2. A Azure Portal menüben válassza a Minden szolgáltatás, majd aStorage-tárfiókok> lehetőséget. A Tárfiókok elemet bármelyik lapról megkeresheti és kiválaszthatja.
  3. A Tárfiókok lapon szűrjön a tárfiókra (ha szükséges), majd válassza ki a tárfiókot.

A Tárfiókok elemet bármelyik lapról megkeresheti és kiválaszthatja.

Blobtároló létrehozása

Ebben a szakaszban egy adftutorial nevű blobtárolót hoz létre az Azure Blob Storage-ban.

  1. A tárfiók oldalán válassza az Áttekintés>tárolók lehetőséget.

  2. A <Fióknév> - tárolók lap eszköztárán válassza a Tároló lehetőséget.

  3. Az Új tároló párbeszédablakban adja meg az adftutorial nevet, és kattintson az OK gombra. A <Fióknév> - tárolók lap úgy frissül, hogy az adftutorial szerepeljen a tárolók listájában.

    Tárolók listája

Bemeneti mappa és fájl hozzáadása a blobtárolóhoz

Ebben a szakaszban létrehoz egy input nevű mappát a létrehozott tárolóban, majd feltölt egy mintafájlt a bemeneti mappába. Mielőtt hozzákezdene, nyisson meg egy szövegszerkesztőt, például a Jegyzettömbet, és hozzon létre egy emp.txt nevű fájlt a következő tartalommal:

John, Doe
Jane, Doe

Mentse a fájlt a C:\ADFv2QuickStartPSH mappába. (Ha a mappa még nem létezik, hozza létre.) Ezután térjen vissza a Azure Portal, és kövesse az alábbi lépéseket:

  1. <A Fióknév> - Tárolók lapon, ahol abbahagyta, válassza az adftutorial elemet a frissített tárolók listájából.

    1. Ha bezárta az ablakot, vagy egy másik oldalra ment, jelentkezzen be újra a Azure Portal.
    2. A Azure Portal menüben válassza a Minden szolgáltatás, majd aStorage-tárfiókok> lehetőséget. A Tárfiókok elemet bármelyik lapról megkeresheti és kiválaszthatja.
    3. Válassza ki a tárfiókot, majd válassza a Tárolók>adftutorial lehetőséget.
  2. Az adftutorial tárolóoldalának eszköztárán válassza a Feltöltés lehetőséget.

  3. A Blob feltöltése lapon válassza a Fájlok mezőt, majd keresse meg és válassza ki a emp.txt fájlt.

  4. Bontsa ki a Speciális címsort. A lap ekkor az alábbi módon jelenik meg:

    Kattintás a Speciális hivatkozásra

  5. A Feltöltés mappába mezőbe írja be a bemenetet.

  6. Kattintson a Feltöltés gombra. A listában meg kell jelennie az emp.txt fájlnak és a feltöltés állapotának.

  7. A Blob feltöltése lap bezárásához válassza a Bezárás ikont (X).

Tartsa nyitva az adftutorial tárolóoldalt. A segítségével ellenőrizheti ennek a rövid útmutatónak az eredményét.

Visual Studio

A cikkben található útmutató a Visual Studio 2019-et használja. A Visual Studio 2013, 2015 vagy 2017 eljárásai kissé eltérnek egymástól.

Alkalmazás létrehozása az Azure Active Directoryban

A Útmutató: A portál használata erőforrásokhoz hozzáférő Azure AD alkalmazás és szolgáltatásnév létrehozásához című szakasz lépéseit követve végezze el az alábbi feladatokat:

  1. Az Azure Active Directory-alkalmazás létrehozása területen hozzon létre egy alkalmazást, amely az oktatóanyagban létrehozott .NET-alkalmazást jelöli. A bejelentkezési URL-hez megadhat egy hamis URL-t, a cikkben láthatóak szerint (https://contoso.org/exampleapp).
  2. A Bejelentkezéshez szükséges értékek lekérése területen kérje le az alkalmazásazonosítót és a bérlőazonosítót, és jegyezze fel az oktatóanyag későbbi részében használt értékeket.
  3. A Tanúsítványok és titkos kódok területen kérje le a hitelesítési kulcsot, és jegyezze fel ezt az értéket, amelyet az oktatóanyag későbbi részében fog használni.
  4. Az Alkalmazás hozzárendelése szerepkörhöz területen rendelje hozzá az alkalmazást a Közreműködő szerepkörhöz az előfizetés szintjén, hogy az alkalmazás adat-előállítókat hozhasson létre az előfizetésben.

Visual Studio-projekt létrehozása

Ezután hozzon létre egy C# .NET-konzolalkalmazást a Visual Studióban:

  1. Indítsa el a Visual Studiót.
  2. A Start ablakban válassza az Új projekt> létrehozásaKonzolalkalmazás (.NET-keretrendszer) lehetőséget. A lépések elvégzéséhez a .NET 4.5.2-es vagy újabb verziója szükséges.
  3. A Projekt neve mezőbe írja be az ADFv2QuickStart nevet.
  4. A projekt létrehozásához válassza a Létrehozás lehetőséget.

NuGet-csomagok telepítése

  1. Válassza az Eszközök>NuGet-csomagkezelő>Package Csomagkezelő konzol elemet.

  2. A Csomagkezelő konzol paneljén futtassa az alábbi parancsokat a csomagok telepítéséhez. További információ: Microsoft.Azure.Management.DataFactory NuGet csomag.

    Install-Package Microsoft.Azure.Management.DataFactory
    Install-Package Microsoft.Azure.Management.ResourceManager -IncludePrerelease
    Install-Package Microsoft.Identity.Client
    

Adat-előállító ügyfél létrehozása

  1. Nyissa meg a Program.cs fájlt, majd illessze be az alábbi utasításokat, hogy a névterekre mutató hivatkozásokat tudjon felvenni.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using Microsoft.Rest;
    using Microsoft.Rest.Serialization;
    using Microsoft.Azure.Management.ResourceManager;
    using Microsoft.Azure.Management.DataFactory;
    using Microsoft.Azure.Management.DataFactory.Models;
    using Microsoft.Identity.Client;
    
  2. Adja hozzá az alábbi kódot a Main metódushoz, amely beállítja a változókat. Cserélje le a helyőrzőket a saját értékeire. Azon Azure-régiók megtekintéséhez, amelyekben jelenleg elérhető a Data Factory, a következő lapon válassza ki az Önt érdeklő régiókat, majd bontsa ki az Elemzés részt, és keresse meg a Data Factory: Elérhető termékek régiók szerint szakaszt. Az adat-előállítók által használt adattárak (Azure Storage, Azure SQL Database és egyebek) és számítások (HDInsight és egyéb) más régiókban is lehetnek.

    // Set variables
    string tenantID = "<your tenant ID>";
    string applicationId = "<your application ID>";
    string authenticationKey = "<your authentication key for the application>";
    string subscriptionId = "<your subscription ID where the data factory resides>";
    string resourceGroup = "<your resource group where the data factory resides>";
    string region = "<the location of your resource group>";
    string dataFactoryName = 
        "<specify the name of data factory to create. It must be globally unique.>";
    string storageAccount = "<your storage account name to copy data>";
    string storageKey = "<your storage account key>";
    // specify the container and input folder from which all files 
    // need to be copied to the output folder. 
    string inputBlobPath =
        "<path to existing blob(s) to copy data from, e.g. containername/inputdir>";
    //specify the contains and output folder where the files are copied
    string outputBlobPath =
        "<the blob path to copy data to, e.g. containername/outputdir>";
    
    // name of the Azure Storage linked service, blob dataset, and the pipeline
    string storageLinkedServiceName = "AzureStorageLinkedService";
    string blobDatasetName = "BlobDataset";
    string pipelineName = "Adfv2QuickStartPipeline";
    

Megjegyzés

Szuverén felhők esetén az ActiveDirectoryAuthority és a ResourceManagerUrl (BaseUri) megfelelő, felhőspecifikus végpontokat kell használnia. Az USA-beli Azure Gov-ban például a szolgáltatót https://login.microsoftonline.us használná a https://login.microsoftonline.comhelyett, és a https://management.azure.com/helyett használnáhttps://management.usgovcloudapi.net, majd létrehozná az adat-előállító felügyeleti ügyfelet. A PowerShell használatával egyszerűen lekérheti a végponti URL-címeket a különböző felhőkhöz a "Get-AzEnvironment | Format-List", amely az egyes felhőkörnyezetek végpontjainak listáját adja vissza.

  1. Adja hozzá a következő kódot a Main metódushoz, amely létrehozza a DataFactoryManagementClient osztály egy példányát . Ezzel az objektummal adat-előállítót, társított szolgáltatást, adatkészleteket és adatcsatornát is létrehozhat. Ezenfelül ez az objektum a folyamat futása részleteinek monitorozására is használható.

    // Authenticate and create a data factory management client
    IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(applicationId)
     .WithAuthority("https://login.microsoftonline.com/" + tenantID)
     .WithClientSecret(authenticationKey)
     .WithLegacyCacheCompatibility(false)
     .WithCacheOptions(CacheOptions.EnableSharedCacheOptions)
     .Build();
    
    AuthenticationResult result = await app.AcquireTokenForClient(
      new string[]{ "https://management.azure.com//.default"})
       .ExecuteAsync();
    ServiceClientCredentials cred = new TokenCredentials(result.AccessToken);
    var client = new DataFactoryManagementClient(cred) {
        SubscriptionId = subscriptionId };
    

Adat-előállító létrehozása

Adja hozzá a következő kódot a Main metódushoz, amely létrehozza az adat-előállítót.

// Create a data factory
Console.WriteLine("Creating data factory " + dataFactoryName + "...");
Factory dataFactory = new Factory
{
    Location = region,
    Identity = new FactoryIdentity()
};
client.Factories.CreateOrUpdate(resourceGroup, dataFactoryName, dataFactory);
Console.WriteLine(
    SafeJsonConvert.SerializeObject(dataFactory, client.SerializationSettings));

while (client.Factories.Get(resourceGroup, dataFactoryName).ProvisioningState ==
       "PendingCreation")
{
    System.Threading.Thread.Sleep(1000);
}

Társított szolgáltatás létrehozása

Adja hozzá a következő kódot a Main metódushoz, amely létrehoz egy Azure Storage-beli társított szolgáltatást.

Társított szolgáltatásokat hoz létre egy adat-előállítóban az adattárak és a számítási szolgáltatások adat-előállítóval történő társításához. Ebben a rövid útmutatóban csak egy Azure Storage társított szolgáltatást kell létrehoznia mind a másolási forráshoz, mind a fogadótárhoz; A minta neve "AzureStorageLinkedService".

// Create an Azure Storage linked service
Console.WriteLine("Creating linked service " + storageLinkedServiceName + "...");

LinkedServiceResource storageLinkedService = new LinkedServiceResource(
    new AzureStorageLinkedService
    {
        ConnectionString = new SecureString(
            "DefaultEndpointsProtocol=https;AccountName=" + storageAccount +
            ";AccountKey=" + storageKey)
    }
);
client.LinkedServices.CreateOrUpdate(
    resourceGroup, dataFactoryName, storageLinkedServiceName, storageLinkedService);
Console.WriteLine(SafeJsonConvert.SerializeObject(
    storageLinkedService, client.SerializationSettings));

Adathalmaz létrehozása

Adja hozzá a következő kódot a Main metódushoz, amely létrehoz egy Azure Blob-adatkészletet.

Megadhat egy adatkészletet, amely a forrásból a fogadóba másolt adatokat jelöli. Ebben a példában a blob-adatkészlet az előző lépésben létrehozott Azure Storage-beli társított szolgáltatásra vonatkozik. Az adatkészlethez egy olyan paraméter szükséges, amelynek az értéke az adatkészletet feldolgozó tevékenységben van beállítva. A paraméter a "folderPath" létrehozására szolgál, amely az adatok tárolási helyére mutat.

// Create an Azure Blob dataset
Console.WriteLine("Creating dataset " + blobDatasetName + "...");
DatasetResource blobDataset = new DatasetResource(
    new AzureBlobDataset
    {
        LinkedServiceName = new LinkedServiceReference
        {
            ReferenceName = storageLinkedServiceName
        },
        FolderPath = new Expression { Value = "@{dataset().path}" },
        Parameters = new Dictionary<string, ParameterSpecification>
        {
            { "path", new ParameterSpecification { Type = ParameterType.String } }
        }
    }
);
client.Datasets.CreateOrUpdate(
    resourceGroup, dataFactoryName, blobDatasetName, blobDataset);
Console.WriteLine(
    SafeJsonConvert.SerializeObject(blobDataset, client.SerializationSettings));

Folyamat létrehozása

Adja hozzá a következő kódot a Main metódushoz, amely létrehozza a másolási tevékenységet tartalmazó folyamatot.

Ebben a példában ez a folyamat egy tevékenységet tartalmaz, és két paramétert vesz fel: a bemeneti blob elérési útját és a kimeneti blob elérési útját. A paraméterek értékei a folyamat indításakor/futtatásakor lesznek beállítva. A másolási tevékenység az előző lépésben kimenetként és bemenetként létrehozott blob-adatkészletre hivatkozik. Ha az adatkészlet bemeneti adatkészletként van használatban, a bemeneti elérési út van megadva. Ha az adatkészlet kimeneti adatkészletként van használatban, a kimeneti elérési út van megadva.

// Create a pipeline with a copy activity
Console.WriteLine("Creating pipeline " + pipelineName + "...");
PipelineResource pipeline = new PipelineResource
{
    Parameters = new Dictionary<string, ParameterSpecification>
    {
        { "inputPath", new ParameterSpecification { Type = ParameterType.String } },
        { "outputPath", new ParameterSpecification { Type = ParameterType.String } }
    },
    Activities = new List<Activity>
    {
        new CopyActivity
        {
            Name = "CopyFromBlobToBlob",
            Inputs = new List<DatasetReference>
            {
                new DatasetReference()
                {
                    ReferenceName = blobDatasetName,
                    Parameters = new Dictionary<string, object>
                    {
                        { "path", "@pipeline().parameters.inputPath" }
                    }
                }
            },
            Outputs = new List<DatasetReference>
            {
                new DatasetReference
                {
                    ReferenceName = blobDatasetName,
                    Parameters = new Dictionary<string, object>
                    {
                        { "path", "@pipeline().parameters.outputPath" }
                    }
                }
            },
            Source = new BlobSource { },
            Sink = new BlobSink { }
        }
    }
};
client.Pipelines.CreateOrUpdate(resourceGroup, dataFactoryName, pipelineName, pipeline);
Console.WriteLine(SafeJsonConvert.SerializeObject(pipeline, client.SerializationSettings));

Folyamat futásának létrehozása

Adja hozzá a következő kódot a Main metódushoz, amely elindítja a folyamat futását.

Ez a kód a folyamatban megadott inputPath és outputPath paraméterek értékeit is beállítja a forrás- és fogadó blobelérési útvonalak tényleges értékeivel.

// Create a pipeline run
Console.WriteLine("Creating pipeline run...");
Dictionary<string, object> parameters = new Dictionary<string, object>
{
    { "inputPath", inputBlobPath },
    { "outputPath", outputBlobPath }
};
CreateRunResponse runResponse = client.Pipelines.CreateRunWithHttpMessagesAsync(
    resourceGroup, dataFactoryName, pipelineName, parameters: parameters
).Result.Body;
Console.WriteLine("Pipeline run ID: " + runResponse.RunId);

Folyamat futásának monitorozása

  1. Adja hozzá a következő kódot a Main metódushoz az állapot folyamatos, az adatok másolásának befejezéséig tartó ellenőrzéséhez.

    // Monitor the pipeline run
    Console.WriteLine("Checking pipeline run status...");
    PipelineRun pipelineRun;
    while (true)
    {
        pipelineRun = client.PipelineRuns.Get(
            resourceGroup, dataFactoryName, runResponse.RunId);
        Console.WriteLine("Status: " + pipelineRun.Status);
        if (pipelineRun.Status == "InProgress" || pipelineRun.Status == "Queued")
            System.Threading.Thread.Sleep(15000);
        else
            break;
    }
    
  2. Adja hozzá a következő kódot a Main metódushoz, amely lekéri a másolási tevékenység futtatási adatait, például az olvasott vagy írt adatok méretét.

    // Check the copy activity run details
    Console.WriteLine("Checking copy activity run details...");
    
    RunFilterParameters filterParams = new RunFilterParameters(
        DateTime.UtcNow.AddMinutes(-10), DateTime.UtcNow.AddMinutes(10));
    ActivityRunsQueryResponse queryResponse = client.ActivityRuns.QueryByPipelineRun(
        resourceGroup, dataFactoryName, runResponse.RunId, filterParams);
    if (pipelineRun.Status == "Succeeded")
        Console.WriteLine(queryResponse.Value.First().Output);
    else
        Console.WriteLine(queryResponse.Value.First().Error);
    Console.WriteLine("\nPress any key to exit...");
    Console.ReadKey();
    

A kód futtatása

Állítsa össze és indítsa el az alkalmazást, majd ellenőrizze a folyamat-végrehajtást.

A konzol megjeleníti az adat-előállító, a társított szolgáltatás, az adatkészletek, a folyamat, valamint a folyamat futása létrehozási állapotát. Ezután ellenőrzi a folyamat futási állapotát. Várjon, amíg meg nem jelenik a másolási tevékenység futtatási részletei az olvasási/írási adatok méretével. Ezután az olyan eszközökkel, mint a Azure Storage Explorer, ellenőrizze, hogy a blob(ok) át lesznek-e másolva a "outputBlobPath" fájlba a változókban megadott "inputBlobPath" fájlból.

Példakimenet

Creating data factory SPv2Factory0907...
{
  "identity": {
    "type": "SystemAssigned"
  },
  "location": "East US"
}
Creating linked service AzureStorageLinkedService...
{
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": {
        "value": "DefaultEndpointsProtocol=https;AccountName=<storageAccountName>;AccountKey=<storageAccountKey>",
        "type": "SecureString"
      }
    }
  }
}
Creating dataset BlobDataset...
{
  "properties": {
    "type": "AzureBlob",
    "typeProperties": {
      "folderPath": {
        "value": "@{dataset().path}",
        "type": "Expression"
      }
    },
    "linkedServiceName": {
      "referenceName": "AzureStorageLinkedService",
      "type": "LinkedServiceReference"
    },
    "parameters": {
      "path": {
        "type": "String"
      }
    }
  }
}
Creating pipeline Adfv2QuickStartPipeline...
{
  "properties": {
    "activities": [
      {
        "type": "Copy",
        "typeProperties": {
          "source": {
            "type": "BlobSource"
          },
          "sink": {
            "type": "BlobSink"
          }
        },
        "inputs": [
          {
            "referenceName": "BlobDataset",
            "parameters": {
              "path": "@pipeline().parameters.inputPath"
            },
            "type": "DatasetReference"
          }
        ],
        "outputs": [
          {
            "referenceName": "BlobDataset",
            "parameters": {
              "path": "@pipeline().parameters.outputPath"
            },
            "type": "DatasetReference"
          }
        ],
        "name": "CopyFromBlobToBlob"
      }
    ],
    "parameters": {
      "inputPath": {
        "type": "String"
      },
      "outputPath": {
        "type": "String"
      }
    }
  }
}
Creating pipeline run...
Pipeline run ID: 308d222d-3858-48b1-9e66-acd921feaa09
Checking pipeline run status...
Status: InProgress
Status: InProgress
Checking copy activity run details...
{
    "dataRead": 331452208,
    "dataWritten": 331452208,
    "copyDuration": 23,
    "throughput": 14073.209,
    "errors": [],
    "effectiveIntegrationRuntime": "DefaultIntegrationRuntime (West US)",
    "usedDataIntegrationUnits": 2,
    "billedDuration": 23
}

Press any key to exit...

Kimenet ellenőrzése

A folyamat automatikusan létrehozza a kimeneti mappát az adftutorial blobtárolóban. Ezután átmásolja a emp.txt fájlt a bemeneti mappából a kimeneti mappába.

  1. A Azure Portal a fenti Add an input folder and file for the blob container (Bemeneti mappa és fájl hozzáadása a blobtárolóhoz) szakaszban leállítva az adftutorial tároló oldalán válassza a Frissítés lehetőséget a kimeneti mappa megtekintéséhez.
  2. A mappalistában válassza a kimenet lehetőséget.
  3. Ellenőrizze, hogy az emp.txt fájl bekerült-e a kimeneti mappába.

Az erőforrások eltávolítása

Az adat-előállító programozott törléséhez adja hozzá a következő kódsorokat a programhoz:

Console.WriteLine("Deleting the data factory");
client.Factories.Delete(resourceGroup, dataFactoryName);

Következő lépések

A példában szereplő folyamat adatokat másol az egyik helyről egy másikra egy Azure Blob Storage-ban. A Data Factory más forgatókönyvekben való használatát ismertető további információkért tekintse meg az oktatóanyagokat.