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ó azt ismerteti, hogyan használható a .NET SDK egy Azure Data Factory. 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 átalakításával kapcsolatos oktatóanyagért lásd: Oktatóanyag: Adatok átalakítása a Spark használatávalAzure Data Factory.

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éshez tartozó engedélyek megtekintéséhez kattintson a Azure Portalelemre, válassza ki a felhasználónevét a jobb felső sarokban, válassza a "..." ikont további beállításoké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:

  • A gyermekerőforrások létrehozásához és kezeléséhez Azure Portal erőforráscsoport szintjén vagy magasabb Data Factory közreműködői szerepkörhöz kell tartozni.
  • 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-et) használ forrás- és céladattárként. Ha nem általános célú Azure Storage-fiókkal, tekintse meg a tárfiók létrehozásához szükséges fiókot.

A tárfiók nevének lekért neve

A rövid útmutatóhoz szüksége lesz az Azure Storage-fiókjának nevére. Az alábbi eljárás a tárfiók nevének lekért lépéseit tartalmazza:

  1. Egy webböngészőben a böngészőben Azure Portal azure-beli felhasználónevével és jelszavával jelentkezzen be.
  2. A Azure Portal menüben válassza a Mindenszolgáltatás lehetőséget, majd aStorage Storage lehetőséget. Bármelyik oldalon kereshet és Storage fiókokat.
  3. A Storage lapon szűrjön a tárfiókra (ha szükséges), majd válassza ki a tárfiókot.

Bármelyik oldalon kereshet és Storage fiókokat.

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ók neve > - > eszköztárán válassza a Tároló -

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

    List of containers

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 az input mappába. Mielőtt hozzákezd, nyisson meg egy szövegszerkesztőt, például a Jegyzettömb,és hozzon létre egyemp.txtnevű 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ók > neve– Tárolók oldalon, ahol kilépett, válassza az - > - lehetőséget a frissített tárolólistából.

    1. Ha bezárta az ablakot, vagy egy másik oldalra ment, jelentkezzen be újra a Azure Portal lapra.
    2. A Azure Portal menüben válassza a Mindenszolgáltatás lehetőséget, majd aStorage Storage lehetőséget. Bármelyik oldalon kereshet és Storage fiókokat.
    3. Válassza ki a tárfiókot, majd válassza a Tárolókadftutorial lehetőséget.
  2. Az adftutorial tárolólap 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 emp.txt fájlt.

  4. Bontsa ki a Speciális fejlécet. Az oldal most a következő módon jelenik meg:

    Select Advanced link

  5. A Feltöltés mappába mezőbe írja be a következőt: .

  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 Bezárás ikonra(X)kattintva zárja be a Blob feltöltése lapot.

Ne nyissa meg 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ó bemutató a 2019 Visual Studio t használja. A 2013 Visual Studio, 2015 vagy 2017 esetében alkalmazott eljárások némileg eltérnek.

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

Az Útmutató: A portál használata erőforrások elérésére képes Azure AD-alkalmazásés -szolgáltatásnév létrehozásához szakaszból kövesse az alábbi feladatok elvégzéséhez szükséges utasításokat:

  1. A Create an Azure Active Directory application (Újalkalmazás létrehozása) lehetőségben hozzon létre egy alkalmazást, amely az oktatóanyagban létrehozott .NET-alkalmazást képviseli. A bejelentkezési URL-hez megadhat egy hamis URL-t, a cikkben láthatóak szerint (https://contoso.org/exampleapp).
  2. A Get values for signing in(Értékek lekérte a bejelentkezéshez) mezőben szerezze be az alkalmazásazonosítót és a bérlőazonosítót, és jegyezze fel ezeket az értékeket, amelyekre később az oktatóanyagban lesz majd majd használni.
  3. A Tanúsítványok és titkos kulcsok mezőbenszerezze be a hitelesítési kulcsot,és jegyezze fel ezt az értéket, amit később használni fog az oktatóanyagban.
  4. Az Alkalmazás hozzárendelése szerepkörhözalatt rendelje hozzá az alkalmazást a Közreműködő szerepkörhöz az előfizetés szintjén, hogy az alkalmazás adat-üzemeket hoz létre az előfizetésben.

Visual Studio-projekt létrehozása

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

  1. Indítsa el Visual Studio.
  2. A Start ablakban válassza a Create a new projectConsole App (.NET-keretrendszer) (Új projekt létrehozása konzolalkalmazá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 Project adja megaz 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 a Tools(Eszközök) NuGet CsomagkezelőCsomagkezelő Console (Konzol) lehetőséget.

  2. A Csomagkezelő konzol panelen futtassa a következő 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 stb.) és számítási erőforrások (HDInsight és egyebek) 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 a megfelelő felhőspecifikus végpontokat kell használnia az ActiveDirectoryAuthority és a ResourceManagerUrl (BaseUri) számára. Az USA-beli Azure Gov-ban például a et használná a helyett, a helyett pedig a et, majd hozza létre az https://login.microsoftonline.ushttps://login.microsoftonline.comhttps://management.usgovcloudapi.nethttps://management.azure.com/ adat-előállító felügyeleti ügyfelet. A PowerShell használatával egyszerűen lekérte 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-beli csatolt szolgáltatást kell létrehoznia mind a másolási forráshoz, mind a fogadó tárolóhoz. A mintában az "AzureStorageLinkedService" a neve.

// 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" felépítésére használható, amely arra mutat, hogy hol találhatók/vannak tárolva az adatok.

// 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 a fogadó blob elérési útjának 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ásának részleteit, 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 látja a másolási tevékenység futtatásának részleteit az olvasási/írási adatok méretével. Ezután például a Azure Storage Explorer használatával ellenőrizze, hogy a blob(k) át van-e másva az outputBlobPath helyre az inputBlobPath változókban megadott módon.

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 Bemeneti mappa és fájl hozzáadása a blobtárolóhoz szakaszban leállított adftutorial tárolólapon válassza a Frissítés lehetőséget a kimeneti mappa megnyitásához.
  2. A mappalistában válassza a kimenetet.
  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 módon való 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.