Esercitazione: Creare la prima data factory di Azure usando il modello di Azure Resource ManagerTutorial: Build your first Azure data factory using Azure Resource Manager template

Nota

Le informazioni di questo articolo sono valide per la versione 1 di Data Factory.This article applies to version 1 of Data Factory. Se si usa la versione corrente del servizio Data Factory, vedere Quickstart: Create a data factory using Azure Data Factory (Creare una data factory con Azure Data Factory).If you are using the current version of the Data Factory service, see Quickstart: Create a data factory using Azure Data Factory.

In questo articolo viene usato un modello di Azure Resource Manager per creare la prima data factory di Azure.In this article, you use an Azure Resource Manager template to create your first Azure data factory. Per eseguire l'esercitazione usando altri strumenti/SDK, selezionare una delle opzioni dall'elenco a discesa.To do the tutorial using other tools/SDKs, select one of the options from the drop-down list.

La pipeline in questa esercitazione include un'attività: Attività Hive di HDInsight.The pipeline in this tutorial has one activity: HDInsight Hive activity. che esegue uno script Hive in un cluster Azure HDInsight per trasformare i dati di input e generare i dati di output.This activity runs a hive script on an Azure HDInsight cluster that transforms input data to produce output data. L'esecuzione della pipeline è pianificata una volta al mese tra le ore di inizio e di fine specificate.The pipeline is scheduled to run once a month between the specified start and end times.

Nota

La pipeline di dati in questa esercitazione trasforma i dati di input per produrre dati di output.The data pipeline in this tutorial transforms input data to produce output data. Per un'esercitazione su come copiare dati usando Azure Data Factory, vedere Tutorial: Copy data from Blob Storage to SQL Database (Esercitazione: Copiare dati da archiviazione BLOB a database SQL).For a tutorial on how to copy data using Azure Data Factory, see Tutorial: Copy data from Blob Storage to SQL Database.

La pipeline in questa esercitazione include solo un'attività di tipo HDInsightHive.The pipeline in this tutorial has only one activity of type: HDInsightHive. Una pipeline può includere più attivitàA pipeline can have more than one activity. ed è possibile concatenarne due, ovvero eseguire un'attività dopo l'altra, impostando il set di dati di output di un'attività come set di dati di input dell'altra.And, you can chain two activities (run one activity after another) by setting the output dataset of one activity as the input dataset of the other activity. Per altre informazioni, vedere Pianificazione ed esecuzione in Data Factory.For more information, see scheduling and execution in Data Factory.

PrerequisitesPrerequisites

Nota

Questo articolo è stato aggiornato per usare il nuovo modulo Az di Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. È comunque possibile usare il modulo AzureRM, che continuerà a ricevere correzioni di bug almeno fino a dicembre 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Per altre informazioni sul nuovo modulo Az e sulla compatibilità di AzureRM, vedere Introduzione del nuovo modulo Az di Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Per istruzioni sull'installazione del modulo Az, vedere Installare Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Contenuto dell'esercitazione:In this tutorial

EntitàEntity DescrizioneDescription
Servizio collegato Archiviazione di AzureAzure Storage linked service Collega l'account di archiviazione di Azure alla data factory.Links your Azure Storage account to the data factory. In questo esempio l'account di archiviazione di Azure contiene i dati di input e di output per la pipeline.The Azure Storage account holds the input and output data for the pipeline in this sample.
Servizio collegato su richiesta HDInsightHDInsight on-demand linked service Collega un cluster HDInsight su richiesta alla data factory.Links an on-demand HDInsight cluster to the data factory. Il cluster viene creato automaticamente per elaborare i dati e viene eliminato al termine dell'elaborazione.The cluster is automatically created for you to process data and is deleted after the processing is done.
Set di dati di input del BLOB di AzureAzure Blob input dataset Fa riferimento al servizio collegato di archiviazione di Azure.Refers to the Azure Storage linked service. Il servizio collegato fa riferimento a un account di archiviazione di Azure e il set di dati del BLOB di Azure specifica il contenitore, la cartella e il nome del file nella risorsa di archiviazione che contiene i dati di input.The linked service refers to an Azure Storage account and the Azure Blob dataset specifies the container, folder, and file name in the storage that holds the input data.
Set di dati di output del BLOB di AzureAzure Blob output dataset Fa riferimento al servizio collegato di archiviazione di Azure.Refers to the Azure Storage linked service. Il servizio collegato fa riferimento a un account di archiviazione di Azure e il set di dati del BLOB di Azure specifica il contenitore, la cartella e il nome del file nella risorsa di archiviazione che contiene i dati di output.The linked service refers to an Azure Storage account and the Azure Blob dataset specifies the container, folder, and file name in the storage that holds the output data.
Data PipelineData pipeline La pipeline ha un'attività di tipo HDInsightHive che utilizza il set di dati di input e produce il set di dati di output.The pipeline has one activity of type HDInsightHive, which consumes the input dataset and produces the output dataset.

Una data factory può comprendere una o più pipeline.A data factory can have one or more pipelines. Una pipeline può comprendere una o più attività.A pipeline can have one or more activities in it. Esistono due tipi di attività: attività di spostamento dei dati e attività di trasformazione dei dati.There are two types of activities: data movement activities and data transformation activities. In questa esercitazione si crea una pipeline con un'attività (attività Hive).In this tutorial, you create a pipeline with one activity (Hive activity).

La sezione seguente contiene il modello di Resource Manager completo per la definizione di entità di Data Factory. In questo modo sarà possibile eseguire rapidamente l'esercitazione e testare il modello.The following section provides the complete Resource Manager template for defining Data Factory entities so that you can quickly run through the tutorial and test the template. Per conoscere come viene definita ogni entità di Data Factory, vedere la sezione Entità di Data Factory nel modello.To understand how each Data Factory entity is defined, see Data Factory entities in the template section. Per informazioni sulla sintassi e sulle proprietà JSON per le risorse di Data Factory in un modello, vedere Microsoft.DataFactory resource types (Tipi di risorse Microsoft.DataFactory).To learn about the JSON syntax and properties for Data Factory resources in a template, see Microsoft.DataFactory resource types.

Modello JSON di Data FactoryData Factory JSON template

Il modello di Resource Manager principale per la definizione di una data factory è il seguente:The top-level Resource Manager template for defining a data factory is:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": { ...
    },
    "variables": { ...
    },
    "resources": [
        {
            "name": "[parameters('dataFactoryName')]",
            "apiVersion": "[variables('apiVersion')]",
            "type": "Microsoft.DataFactory/datafactories",
            "location": "westus",
            "resources": [
                { ... },
                { ... },
                { ... },
                { ... }
            ]
        }
    ]
}

Creare un file JSON denominato ADFTutorialARM.json nella cartella C:\ADFGetStarted con il contenuto seguente:Create a JSON file named ADFTutorialARM.json in C:\ADFGetStarted folder with the following content:

{
    "contentVersion": "1.0.0.0",
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "parameters": {
        "storageAccountName": { "type": "string", "metadata": { "description": "Name of the Azure storage account that contains the input/output data." } },
          "storageAccountKey": { "type": "securestring", "metadata": { "description": "Key for the Azure storage account." } },
          "blobContainer": { "type": "string", "metadata": { "description": "Name of the blob container in the Azure Storage account." } },
          "inputBlobFolder": { "type": "string", "metadata": { "description": "The folder in the blob container that has the input file." } },
          "inputBlobName": { "type": "string", "metadata": { "description": "Name of the input file/blob." } },
          "outputBlobFolder": { "type": "string", "metadata": { "description": "The folder in the blob container that will hold the transformed data." } },
          "hiveScriptFolder": { "type": "string", "metadata": { "description": "The folder in the blob container that contains the Hive query file." } },
          "hiveScriptFile": { "type": "string", "metadata": { "description": "Name of the hive query (HQL) file." } }
    },
    "variables": {
          "dataFactoryName": "[concat('HiveTransformDF', uniqueString(resourceGroup().id))]",
          "azureStorageLinkedServiceName": "AzureStorageLinkedService",
          "hdInsightOnDemandLinkedServiceName": "HDInsightOnDemandLinkedService",
          "blobInputDatasetName": "AzureBlobInput",
          "blobOutputDatasetName": "AzureBlobOutput",
          "pipelineName": "HiveTransformPipeline"
    },
    "resources": [
      {
        "name": "[variables('dataFactoryName')]",
        "apiVersion": "2015-10-01",
        "type": "Microsoft.DataFactory/datafactories",
        "location": "West US",
        "resources": [
          {
            "type": "linkedservices",
            "name": "[variables('azureStorageLinkedServiceName')]",
            "dependsOn": [
                  "[variables('dataFactoryName')]"
            ],
            "apiVersion": "2015-10-01",
            "properties": {
                  "type": "AzureStorage",
                  "description": "Azure Storage linked service",
                  "typeProperties": {
                    "connectionString": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',parameters('storageAccountKey'))]"
                  }
            }
          },
          {
            "type": "linkedservices",
            "name": "[variables('hdInsightOnDemandLinkedServiceName')]",
            "dependsOn": [
                  "[variables('dataFactoryName')]",
                  "[variables('azureStorageLinkedServiceName')]"
            ],
            "apiVersion": "2015-10-01",
            "properties": {
                  "type": "HDInsightOnDemand",
                  "typeProperties": {
                    "version": "3.5",
                    "clusterSize": 1,
                    "timeToLive": "00:05:00",
                    "osType": "Linux",
                    "linkedServiceName": "[variables('azureStorageLinkedServiceName')]"
                  }
            }
          },
          {
            "type": "datasets",
            "name": "[variables('blobInputDatasetName')]",
            "dependsOn": [
                  "[variables('dataFactoryName')]",
                  "[variables('azureStorageLinkedServiceName')]"
            ],
            "apiVersion": "2015-10-01",
            "properties": {
                  "type": "AzureBlob",
                  "linkedServiceName": "[variables('azureStorageLinkedServiceName')]",
                  "typeProperties": {
                    "fileName": "[parameters('inputBlobName')]",
                    "folderPath": "[concat(parameters('blobContainer'), '/', parameters('inputBlobFolder'))]",
                    "format": {
                          "type": "TextFormat",
                          "columnDelimiter": ","
                    }
                  },
                  "availability": {
                    "frequency": "Month",
                    "interval": 1
                  },
                  "external": true
            }
          },
          {
            "type": "datasets",
            "name": "[variables('blobOutputDatasetName')]",
            "dependsOn": [
                  "[variables('dataFactoryName')]",
                  "[variables('azureStorageLinkedServiceName')]"
            ],
            "apiVersion": "2015-10-01",
            "properties": {
                  "type": "AzureBlob",
                  "linkedServiceName": "[variables('azureStorageLinkedServiceName')]",
                  "typeProperties": {
                    "folderPath": "[concat(parameters('blobContainer'), '/', parameters('outputBlobFolder'))]",
                    "format": {
                          "type": "TextFormat",
                          "columnDelimiter": ","
                    }
                  },
                  "availability": {
                    "frequency": "Month",
                    "interval": 1
                  }
            }
          },
          {
            "type": "datapipelines",
            "name": "[variables('pipelineName')]",
            "dependsOn": [
                  "[variables('dataFactoryName')]",
                  "[variables('azureStorageLinkedServiceName')]",
                  "[variables('hdInsightOnDemandLinkedServiceName')]",
                  "[variables('blobInputDatasetName')]",
                  "[variables('blobOutputDatasetName')]"
            ],
            "apiVersion": "2015-10-01",
            "properties": {
                  "description": "Pipeline that transforms data using Hive script.",
                  "activities": [
                {
                      "type": "HDInsightHive",
                      "typeProperties": {
                        "scriptPath": "[concat(parameters('blobContainer'), '/', parameters('hiveScriptFolder'), '/', parameters('hiveScriptFile'))]",
                        "scriptLinkedService": "[variables('azureStorageLinkedServiceName')]",
                        "defines": {
                              "inputtable": "[concat('wasb://', parameters('blobContainer'), '@', parameters('storageAccountName'), '.blob.core.windows.net/', parameters('inputBlobFolder'))]",
                              "partitionedtable": "[concat('wasb://', parameters('blobContainer'), '@', parameters('storageAccountName'), '.blob.core.windows.net/', parameters('outputBlobFolder'))]"
                        }
                      },
                      "inputs": [
                        {
                              "name": "[variables('blobInputDatasetName')]"
                        }
                      ],
                      "outputs": [
                        {
                              "name": "[variables('blobOutputDatasetName')]"
                        }
                      ],
                      "policy": {
                        "concurrency": 1,
                        "retry": 3
                      },
                      "scheduler": {
                        "frequency": "Month",
                        "interval": 1
                      },
                      "name": "RunSampleHiveActivity",
                      "linkedServiceName": "[variables('hdInsightOnDemandLinkedServiceName')]"
                }
                  ],
                  "start": "2017-07-01T00:00:00Z",
                  "end": "2017-07-02T00:00:00Z",
                  "isPaused": false
              }
          }
        ]
      }
    ]
}

Nota

Un altro esempio di modello di Resource Manager per la creazione di un'istanza di Azure Data Factory è disponibile in Tutorial: Create a pipeline with Copy Activity using an Azure Resource Manager template (Esercitazione: Creare una pipeline con l'attività di copia tramite un modello di Azure Resource Manager).You can find another example of Resource Manager template for creating an Azure data factory on Tutorial: Create a pipeline with Copy Activity using an Azure Resource Manager template.

Parametri JSONParameters JSON

Creare un file JSON denominato ADFTutorialARM-Parameters.json contenente i parametri per il modello di Azure Resource Manager.Create a JSON file named ADFTutorialARM-Parameters.json that contains parameters for the Azure Resource Manager template.

Importante

Specificare il nome e la chiave dell'account di archiviazione di Azure per i parametri storageAccountName e storageAccountKey in questo file dei parametri.Specify the name and key of your Azure Storage account for the storageAccountName and storageAccountKey parameters in this parameter file.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "storageAccountName": {
            "value": "<Name of your Azure Storage account>"
        },
        "storageAccountKey": {
            "value": "<Key of your Azure Storage account>"
        },
        "blobContainer": {
            "value": "adfgetstarted"
        },
        "inputBlobFolder": {
            "value": "inputdata"
        },
        "inputBlobName": {
            "value": "input.log"
        },
        "outputBlobFolder": {
            "value": "partitioneddata"
        },
        "hiveScriptFolder": {
              "value": "script"
        },
        "hiveScriptFile": {
              "value": "partitionweblogs.hql"
        }
    }
}

Importante

Si possono avere file JSON di parametri separati per gli ambienti di sviluppo, test e produzione che è possibile usare con lo stesso modello JSON di Data Factory.You may have separate parameter JSON files for development, testing, and production environments that you can use with the same Data Factory JSON template. Usando uno script di Power Shell, è possibile automatizzare la distribuzione delle entità di Data Factory in questi ambienti.By using a Power Shell script, you can automate deploying Data Factory entities in these environments.

Creare un'istanza di Data FactoryCreate data factory

  1. Avviare Azure PowerShell ed eseguire questo comando:Start Azure PowerShell and run the following command:

    • Eseguire il comando seguente e immettere il nome utente e la password usati per accedere al portale di Azure.Run the following command and enter the user name and password that you use to sign in to the Azure portal.
      Connect-AzAccount
      
    • Eseguire il comando seguente per visualizzare tutte le sottoscrizioni per l'account.Run the following command to view all the subscriptions for this account.
      Get-AzSubscription
      
    • Eseguire il comando seguente per selezionare la sottoscrizione da usare.Run the following command to select the subscription that you want to work with. La sottoscrizione deve corrispondere a quella usata nel portale di Azure.This subscription should be the same as the one you used in the Azure portal.
      Get-AzSubscription -SubscriptionName <SUBSCRIPTION NAME> | Set-AzContext
      
  2. Eseguire il comando seguente per distribuire entità di Data Factory usando il modello di Resource Manager creato nel Passaggio 1.Run the following command to deploy Data Factory entities using the Resource Manager template you created in Step 1.

    New-AzResourceGroupDeployment -Name MyARMDeployment -ResourceGroupName ADFTutorialResourceGroup -TemplateFile C:\ADFGetStarted\ADFTutorialARM.json -TemplateParameterFile C:\ADFGetStarted\ADFTutorialARM-Parameters.json
    

Monitorare la pipelineMonitor pipeline

  1. Dopo l'accesso al portale di Azure fare clic su Esplora e selezionare Data factory.After logging in to the Azure portal, Click Browse and select Data factories. Esplorare->Data factoryBrowse->Data factories

  2. Nel pannello Data factory fare clic sulla data factory TutorialFactoryARM creata.In the Data Factories blade, click the data factory (TutorialFactoryARM) you created.

  3. Nel pannello Data factory relativo alla data factory scelta fare clic su Diagramma.In the Data Factory blade for your data factory, click Diagram.

    Riquadro Diagramma

  4. In Vista diagrammasaranno visualizzati una panoramica delle pipeline e i set di dati usati in questa esercitazione.In the Diagram View, you see an overview of the pipelines, and datasets used in this tutorial.

    Vista Diagramma

  5. In Vista diagramma fare doppio clic sul set di dati AzureBlobOutput.In the Diagram View, double-click the dataset AzureBlobOutput. Viene visualizzata la sezione in fase di elaborazione.You see that the slice that is currently being processed.

    Set di dati

  6. Al termine dell'elaborazione lo stato della sezione è Pronta .When processing is done, you see the slice in Ready state. La creazione di un cluster HDInsight su richiesta di solito richiede tempo (circa 20 minuti).Creation of an on-demand HDInsight cluster usually takes sometime (approximately 20 minutes). Di conseguenza, prevedere circa 30 minuti per l'elaborazione della sezione nella pipeline.Therefore, expect the pipeline to take approximately 30 minutes to process the slice.

    Set di dati

  7. Quando lo stato della sezione è Pronto, cercare i dati di output nella cartella partitioneddata del contenitore adfgetstarted nell'archivio BLOB.When the slice is in Ready state, check the partitioneddata folder in the adfgetstarted container in your blob storage for the output data.

Per istruzioni su come usare i pannelli del portale di Azure per monitorare la pipeline e i set di dati creati in questa esercitazione, vedere Monitorare e gestire le pipeline di Azure Data Factory .See Monitor datasets and pipeline for instructions on how to use the Azure portal blades to monitor the pipeline and datasets you have created in this tutorial.

È anche possibile usare l'app di monitoraggio e gestione per monitorare le pipeline di dati.You can also use Monitor and Manage App to monitor your data pipelines. Per i dettagli sull'uso dell'applicazione, vedere Monitorare e gestire le pipeline di Azure Data Factory con la nuova app di monitoraggio e gestione .See Monitor and manage Azure Data Factory pipelines using Monitoring App for details about using the application.

Importante

Il file di input viene eliminato quando la sezione viene elaborata correttamente.The input file gets deleted when the slice is processed successfully. Per eseguire di nuovo la sezione o ripetere l'esercitazione, caricare quindi il file di input (input.log) nella cartella inputdata del contenitore adfgetstarted.Therefore, if you want to rerun the slice or do the tutorial again, upload the input file (input.log) to the inputdata folder of the adfgetstarted container.

Entità di Data Factory nel modelloData Factory entities in the template

Definire una data factoryDefine data factory

È possibile definire una data factory nel modello di Resource Manager come illustrato nell'esempio seguente:You define a data factory in the Resource Manager template as shown in the following sample:

"resources": [
{
    "name": "[variables('dataFactoryName')]",
    "apiVersion": "2015-10-01",
    "type": "Microsoft.DataFactory/datafactories",
    "location": "West US"
}

Il valore dataFactoryName viene definito come segue:The dataFactoryName is defined as:

"dataFactoryName": "[concat('HiveTransformDF', uniqueString(resourceGroup().id))]",

È una stringa univoca basata sull'ID del gruppo di risorse.It is a unique string based on the resource group ID.

Definizione di entità di Data factoryDefining Data Factory entities

Le entità di Data Factory seguenti vengono definite nel modello JSON:The following Data Factory entities are defined in the JSON template:

Servizio collegato Archiviazione di AzureAzure Storage linked service

In questa sezione si specificano il nome e la chiave dell'account di archiviazione di Azure.You specify the name and key of your Azure storage account in this section. Per informazioni dettagliate sulle proprietà JSON usate per definire un servizio collegato di Archiviazione di Azure, vedere Servizio collegato Archiviazione di Azure.See Azure Storage linked service for details about JSON properties used to define an Azure Storage linked service.

{
    "type": "linkedservices",
    "name": "[variables('azureStorageLinkedServiceName')]",
    "dependsOn": [
        "[variables('dataFactoryName')]"
    ],
    "apiVersion": "2015-10-01",
    "properties": {
        "type": "AzureStorage",
        "description": "Azure Storage linked service",
        "typeProperties": {
            "connectionString": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',parameters('storageAccountKey'))]"
        }
    }
}

connectionString usa i parametri storageAccountName e storageAccountKey.The connectionString uses the storageAccountName and storageAccountKey parameters. I valori per questi parametri sono stati passati usando un file di configurazione.The values for these parameters passed by using a configuration file. La definizione usa anche le variabili azureStorageLinkedService e dataFactoryName definite nel modello.The definition also uses variables: azureStorageLinkedService and dataFactoryName defined in the template.

Servizio collegato su richiesta HDInsightHDInsight on-demand linked service

Per informazioni dettagliate sulle proprietà JSON usate per definire un servizio collegato su richiesta HDInsight, vedere Servizi collegati di calcolo.See Compute linked services article for details about JSON properties used to define an HDInsight on-demand linked service.

{
    "type": "linkedservices",
    "name": "[variables('hdInsightOnDemandLinkedServiceName')]",
    "dependsOn": [
        "[variables('dataFactoryName')]"
    ],
    "apiVersion": "2015-10-01",
    "properties": {
        "type": "HDInsightOnDemand",
        "typeProperties": {
            "version": "3.5",
            "clusterSize": 1,
            "timeToLive": "00:05:00",
            "osType": "Linux",
            "linkedServiceName": "[variables('azureStorageLinkedServiceName')]"
        }
    }
}

Tenere presente quanto segue:Note the following points:

  • Data Factory crea automaticamente un cluster HDInsight basato su Linux con il codice JSON precedente.The Data Factory creates a Linux-based HDInsight cluster for you with the above JSON. Per i dettagli, vedere Servizio collegato Azure HDInsight su richiesta .See On-demand HDInsight Linked Service for details.

  • È possibile usare il proprio cluster HDInsight anziché un cluster HDInsight su richiesta.You could use your own HDInsight cluster instead of using an on-demand HDInsight cluster. Per i dettagli, vedere Servizio collegato Azure HDInsight .See HDInsight Linked Service for details.

  • Il cluster HDInsight crea un contenitore predefinito nell'archivio BLOB specificato nel file JSON (linkedServiceName).The HDInsight cluster creates a default container in the blob storage you specified in the JSON (linkedServiceName). HDInsight non elimina il contenitore quando viene eliminato il cluster.HDInsight does not delete this container when the cluster is deleted. Questo comportamento dipende dalla progettazione.This behavior is by design. Con il servizio collegato HDInsight su richiesta, viene creato un cluster HDInsight ogni volta che è necessario elaborare una sezione, a meno che non esista un cluster attivo (timeToLive) che viene eliminato al termine dell'elaborazione.With on-demand HDInsight linked service, a HDInsight cluster is created every time a slice needs to be processed unless there is an existing live cluster (timeToLive) and is deleted when the processing is done.

    Man mano che vengono elaborate più sezioni, vengono visualizzati numerosi contenitori nell'archivio BLOB di Azure.As more slices are processed, you see many containers in your Azure blob storage. Se non sono necessari per risolvere i problemi relativi ai processi, è possibile eliminarli per ridurre i costi di archiviazione.If you do not need them for troubleshooting of the jobs, you may want to delete them to reduce the storage cost. I nomi dei contenitori seguono questo schema: "adfyourdatafactoryname-linkedservicename-datetimestamp".The names of these containers follow a pattern: "adfyourdatafactoryname-linkedservicename-datetimestamp". Per eliminare i contenitori nell'archivio BLOB di Azure, usare strumenti come Microsoft Azure Storage Explorer .Use tools such as Microsoft Storage Explorer to delete containers in your Azure blob storage.

Per i dettagli, vedere Servizio collegato Azure HDInsight su richiesta .See On-demand HDInsight Linked Service for details.

Set di dati di input del BLOB di AzureAzure blob input dataset

Vengono specificati i nomi del contenitore BLOB, della cartella e del file contenente i dati di input.You specify the names of blob container, folder, and file that contains the input data. Per informazioni dettagliate sulle proprietà JSON usate per definire un set di dati del BLOB di Azure, vedere Proprietà del set di dati del BLOB di Azure.See Azure Blob dataset properties for details about JSON properties used to define an Azure Blob dataset.

{
    "type": "datasets",
    "name": "[variables('blobInputDatasetName')]",
    "dependsOn": [
        "[variables('dataFactoryName')]",
        "[variables('azureStorageLinkedServiceName')]"
    ],
    "apiVersion": "2015-10-01",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": "[variables('azureStorageLinkedServiceName')]",
        "typeProperties": {
            "fileName": "[parameters('inputBlobName')]",
            "folderPath": "[concat(parameters('blobContainer'), '/', parameters('inputBlobFolder'))]",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ","
            }
        },
        "availability": {
            "frequency": "Month",
            "interval": 1
        },
        "external": true
    }
}

Questa definizione usa i parametri seguenti definiti nel modello di parametro: blobContainer, inputBlobFolder e inputBlobName.This definition uses the following parameters defined in parameter template: blobContainer, inputBlobFolder, and inputBlobName.

Set di dati di output del BLOB di AzureAzure Blob output dataset

Vengono specificati i nomi del contenitore BLOB e della cartella che contiene i dati di output.You specify the names of blob container and folder that holds the output data. Per informazioni dettagliate sulle proprietà JSON usate per definire un set di dati del BLOB di Azure, vedere Proprietà del set di dati del BLOB di Azure.See Azure Blob dataset properties for details about JSON properties used to define an Azure Blob dataset.

{
    "type": "datasets",
    "name": "[variables('blobOutputDatasetName')]",
    "dependsOn": [
        "[variables('dataFactoryName')]",
        "[variables('azureStorageLinkedServiceName')]"
    ],
    "apiVersion": "2015-10-01",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": "[variables('azureStorageLinkedServiceName')]",
        "typeProperties": {
            "folderPath": "[concat(parameters('blobContainer'), '/', parameters('outputBlobFolder'))]",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ","
            }
        },
        "availability": {
            "frequency": "Month",
            "interval": 1
        }
    }
}

Questa definizione usa i parametri seguenti definiti nel modello di parametro: blobContainer e outputBlobFolder.This definition uses the following parameters defined in the parameter template: blobContainer and outputBlobFolder.

Data PipelineData pipeline

Viene definita una pipeline che trasforma i dati eseguendo lo script Hive in un cluster HDInsight di Azure su richiesta.You define a pipeline that transform data by running Hive script on an on-demand Azure HDInsight cluster. Per le descrizioni degli elementi JSON usati per definire una pipeline in questo esempio, vedere Pipeline JSON.See Pipeline JSON for descriptions of JSON elements used to define a pipeline in this example.

{
    "type": "datapipelines",
    "name": "[variables('pipelineName')]",
    "dependsOn": [
        "[variables('dataFactoryName')]",
        "[variables('azureStorageLinkedServiceName')]",
        "[variables('hdInsightOnDemandLinkedServiceName')]",
        "[variables('blobInputDatasetName')]",
        "[variables('blobOutputDatasetName')]"
    ],
    "apiVersion": "2015-10-01",
    "properties": {
        "description": "Pipeline that transforms data using Hive script.",
        "activities": [
        {
            "type": "HDInsightHive",
            "typeProperties": {
                "scriptPath": "[concat(parameters('blobContainer'), '/', parameters('hiveScriptFolder'), '/', parameters('hiveScriptFile'))]",
                "scriptLinkedService": "[variables('azureStorageLinkedServiceName')]",
                "defines": {
                    "inputtable": "[concat('wasb://', parameters('blobContainer'), '@', parameters('storageAccountName'), '.blob.core.windows.net/', parameters('inputBlobFolder'))]",
                    "partitionedtable": "[concat('wasb://', parameters('blobContainer'), '@', parameters('storageAccountName'), '.blob.core.windows.net/', parameters('outputBlobFolder'))]"
                }
            },
            "inputs": [
            {
                "name": "[variables('blobInputDatasetName')]"
            }
            ],
            "outputs": [
            {
                "name": "[variables('blobOutputDatasetName')]"
            }
            ],
            "policy": {
                "concurrency": 1,
                "retry": 3
            },
            "scheduler": {
                "frequency": "Month",
                "interval": 1
            },
            "name": "RunSampleHiveActivity",
            "linkedServiceName": "[variables('hdInsightOnDemandLinkedServiceName')]"
        }
        ],
        "start": "2017-07-01T00:00:00Z",
        "end": "2017-07-02T00:00:00Z",
        "isPaused": false
    }
}

Riutilizzare il modelloReuse the template

Nell'esercitazione sono stati creati un modello per definire le entità di Data Factory e un modello per passare i valori dei parametri.In the tutorial, you created a template for defining Data Factory entities and a template for passing values for parameters. Per usare lo stesso modello per distribuire le entità di Data Factory in ambienti diversi, si crea un file dei parametri per ogni ambiente e lo si usa durante la distribuzione in tale ambiente.To use the same template to deploy Data Factory entities to different environments, you create a parameter file for each environment and use it when deploying to that environment.

Esempio:Example:

New-AzResourceGroupDeployment -Name MyARMDeployment -ResourceGroupName ADFTutorialResourceGroup -TemplateFile ADFTutorialARM.json -TemplateParameterFile ADFTutorialARM-Parameters-Dev.json

New-AzResourceGroupDeployment -Name MyARMDeployment -ResourceGroupName ADFTutorialResourceGroup -TemplateFile ADFTutorialARM.json -TemplateParameterFile ADFTutorialARM-Parameters-Test.json

New-AzResourceGroupDeployment -Name MyARMDeployment -ResourceGroupName ADFTutorialResourceGroup -TemplateFile ADFTutorialARM.json -TemplateParameterFile ADFTutorialARM-Parameters-Production.json

Si noti che il primo comando usa il file dei parametri per l'ambiente di sviluppo, il secondo per l'ambiente di test e il terzo per l'ambiente di produzione.Notice that the first command uses parameter file for the development environment, second one for the test environment, and the third one for the production environment.

È anche possibile riutilizzare il modello per eseguire attività ripetute.You can also reuse the template to perform repeated tasks. Ad esempio, è necessario creare più data factory con una o più pipeline che implementano la stessa logica, ma ogni data factory usa account di archiviazione di Azure e di database SQL di Azure diversi.For example, you need to create many data factories with one or more pipelines that implement the same logic but each data factory uses different Azure storage and Azure SQL Database accounts. In questo scenario si usa lo stesso modello nello stesso ambiente (sviluppo, test o produzione) con file dei parametri diversi per creare le data factory.In this scenario, you use the same template in the same environment (dev, test, or production) with different parameter files to create data factories.

Modello di Resource Manager per la creazione di un gatewayResource Manager template for creating a gateway

Di seguito è disponibile un modello di Resource Manager per la creazione di un gateway logico nel back-end.Here is a sample Resource Manager template for creating a logical gateway in the back. Installare un gateway nel computer locale o nella VM IaaS di Azure e registrare il gateway con il servizio Data Factory usando una chiave.Install a gateway on your on-premises computer or Azure IaaS VM and register the gateway with Data Factory service using a key. Per altre informazioni vedere Spostare dati tra origini locali e il cloud con Gateway di gestione dati .See Move data between on-premises and cloud for details.

{
    "contentVersion": "1.0.0.0",
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "parameters": {
    },
    "variables": {
        "dataFactoryName":  "GatewayUsingArmDF",
        "apiVersion": "2015-10-01",
        "singleQuote": "'"
    },
    "resources": [
        {
            "name": "[variables('dataFactoryName')]",
            "apiVersion": "[variables('apiVersion')]",
            "type": "Microsoft.DataFactory/datafactories",
            "location": "eastus",
            "resources": [
                {
                    "dependsOn": [ "[concat('Microsoft.DataFactory/dataFactories/', variables('dataFactoryName'))]" ],
                    "type": "gateways",
                    "apiVersion": "[variables('apiVersion')]",
                    "name": "GatewayUsingARM",
                    "properties": {
                        "description": "my gateway"
                    }
                }            
            ]
        }
    ]
}

Questo modello crea una data factory denominata GatewayUsingArmDF con un gateway denominato GatewayUsingARM.This template creates a data factory named GatewayUsingArmDF with a gateway named: GatewayUsingARM.

Vedere ancheSee Also

ArgomentoTopic DescrizioneDescription
PipelinePipelines Questo articolo fornisce informazioni sulle pipeline e sulle attività in Azure Data Factory e su come usarle per costruire flussi di lavoro end-to-end basati sui dati per lo scenario o l'azienda.This article helps you understand pipelines and activities in Azure Data Factory and how to use them to construct end-to-end data-driven workflows for your scenario or business.
Set di datiDatasets Questo articolo fornisce informazioni sui set di dati in Azure Data Factory.This article helps you understand datasets in Azure Data Factory.
Pianificazione ed esecuzioneScheduling and execution Questo articolo descrive gli aspetti di pianificazione ed esecuzione del modello applicativo di Data factory di Azure.This article explains the scheduling and execution aspects of Azure Data Factory application model.
Monitorare e gestire le pipeline con l'app di monitoraggioMonitor and manage pipelines using Monitoring App Questo articolo descrive come monitorare, gestire ed eseguire il debug delle pipeline usando l'app di monitoraggio e gestione.This article describes how to monitor, manage, and debug pipelines using the Monitoring & Management App.