Tutorial: Compilación de la primera Data Factory de Azure con la plantilla de Azure Resource ManagerTutorial: Build your first Azure data factory using Azure Resource Manager template

Nota

Este artículo se aplica a la versión 1 de Data Factory.This article applies to version 1 of Data Factory. Si utiliza la versión actual del servicio Data Factory, consulte el artículo Inicio rápido: Creación de una factoría de datos 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.

En este artículo, usará una plantilla de Azure Resource Manager para crear su primera instancia de Azure Data Factory.In this article, you use an Azure Resource Manager template to create your first Azure data factory. Para realizar el tutorial con otros SDK/herramientas, seleccione una de las opciones de la lista desplegable.To do the tutorial using other tools/SDKs, select one of the options from the drop-down list.

La canalización de este tutorial tiene una actividad: actividad de HDInsight Hive.The pipeline in this tutorial has one activity: HDInsight Hive activity. Esta actividad ejecuta un script de Hive en un clúster de Azure HDInsight que transforma los datos de entrada para generar datos de salida.This activity runs a hive script on an Azure HDInsight cluster that transforms input data to produce output data. La canalización está programada para ejecutarse una vez al mes entre las horas de inicio y finalización especificadas.The pipeline is scheduled to run once a month between the specified start and end times.

Nota

En este tutorial, la canalización de datos transforma los datos de entrada para generar datos de salida.The data pipeline in this tutorial transforms input data to produce output data. Para ver un tutorial acerca de cómo copiar datos mediante Azure Data Factory, consulte Tutorial: Copia de datos de Blob Storage en SQL Database.For a tutorial on how to copy data using Azure Data Factory, see Tutorial: Copy data from Blob Storage to SQL Database.

La canalización de este tutorial tiene solo una actividad de tipo: HDInsightHive.The pipeline in this tutorial has only one activity of type: HDInsightHive. pero cualquier canalización puede tener más de una actividad.A pipeline can have more than one activity. También puede encadenar dos actividades (ejecutar una después de otra) haciendo que el conjunto de datos de salida de una actividad sea el conjunto de datos de entrada de la otra actividad.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. Para más información, consulte Programación y ejecución en Data Factory.For more information, see scheduling and execution in Data Factory.

Requisitos previosPrerequisites

Nota

Este artículo se ha actualizado para usar el módulo Az de Azure PowerShell.This article has been updated to use the Azure Az PowerShell module. El módulo Az de PowerShell es el módulo de PowerShell que se recomienda para interactuar con Azure.The Az PowerShell module is the recommended PowerShell module for interacting with Azure. Para empezar a trabajar con el módulo Az de PowerShell, consulte Instalación de Azure PowerShell.To get started with the Az PowerShell module, see Install Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

Apartados de este tutorialIn this tutorial

EntidadEntity DescripciónDescription
Servicio vinculado de Azure StorageAzure Storage linked service Vincula la cuenta de Azure Storage a la factoría de datos.Links your Azure Storage account to the data factory. La cuenta de Azure Storage contiene los datos de entrada y salida de la canalización de este ejemplo.The Azure Storage account holds the input and output data for the pipeline in this sample.
Servicio vinculado a petición de HDInsightHDInsight on-demand linked service Vincula un clúster de HDInsight a petición a la factoría de datos.Links an on-demand HDInsight cluster to the data factory. El clúster se crea automáticamente para procesar los datos y se elimina después de que termina el procesamiento.The cluster is automatically created for you to process data and is deleted after the processing is done.
Conjunto de datos de entrada de blob de AzureAzure Blob input dataset Hace referencia al servicio vinculado de Azure Storage.Refers to the Azure Storage linked service. El servicio vinculado hace referencia a una cuenta de Azure Storage y los conjuntos de datos del blob de Azure especifican el contenedor, la carpeta y el nombre de archivo del almacenamiento que contiene los datos de entrada.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.
Conjunto de datos de salida de blob de AzureAzure Blob output dataset Hace referencia al servicio vinculado de Azure Storage.Refers to the Azure Storage linked service. El servicio vinculado hace referencia a una cuenta de Azure Storage y el conjunto de datos de Azure Blob especifica el contenedor, la carpeta y el nombre de archivo del almacenamiento que contiene los datos de salida.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.
Canalización de datosData pipeline La canalización tiene una actividad de tipo HDInsightHive, que consume el conjunto de datos de entrada y genera el conjunto de datos de salida.The pipeline has one activity of type HDInsightHive, which consumes the input dataset and produces the output dataset.

Una factoría de datos puede tener una o más canalizaciones.A data factory can have one or more pipelines. Una canalización puede tener una o más actividades.A pipeline can have one or more activities in it. Hay dos tipos de actividades: actividades de movimiento de datos y actividades de transformación de datos.There are two types of activities: data movement activities and data transformation activities. En este tutorial se crea una canalización con una actividad (actividad de Hive).In this tutorial, you create a pipeline with one activity (Hive activity).

En la siguiente sección se proporciona la plantilla completa de Resource Manager para definir las entidades de Data Factory para que pueda ejecutar el tutorial rápidamente y probar la plantilla.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. Para entender cómo se define cada entidad de Data Factory, consulte la sección Entidades de Data Factory en la plantilla.To understand how each Data Factory entity is defined, see Data Factory entities in the template section. Para obtener información sobre la sintaxis y las propiedades de JSON para los recursos de la factoría de datos en una plantilla, consulte Tipos de recurso Microsoft.DataFactory.To learn about the JSON syntax and properties for Data Factory resources in a template, see Microsoft.DataFactory resource types.

Plantilla JSON de Data FactoryData Factory JSON template

La plantilla de Resource Manager de nivel superior para definir una factoría de datos es: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/factories",
            "location": "westus",
            "resources": [
                { ... },
                { ... },
                { ... },
                { ... }
            ]
        }
    ]
}

Cree un archivo JSON llamado ADFTutorialARM.json en la carpeta C:\ADFGetStarted con el siguiente contenido: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/factories",
        "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

Puede encontrar otro ejemplo de plantilla de Resource Manager para crear una instancia de Data Factory de Azure en Tutorial: Creación de una canalización para copiar datos mediante el uso de plantillas de 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.

Parámetros JSONParameters JSON

Cree un archivo JSON denominado ADFTutorialARM Parameters.json que contenga parámetros para la plantilla de Azure Resource Manager.Create a JSON file named ADFTutorialARM-Parameters.json that contains parameters for the Azure Resource Manager template.

Importante

Especifique el nombre y la clave de la cuenta de Azure Storage para los parámetros storageAccountName y storageAccountKey en este archivo de parámetros.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

Puede tener archivos JSON de parámetros independientes para los entornos de desarrollo, pruebas y producción, que puede usar con la misma plantilla JSON de 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. Al usar un script de PowerShell, puede automatizar la implementación de las entidades de Data Factory en estos entornos.By using a Power Shell script, you can automate deploying Data Factory entities in these environments.

Creación de Data FactoryCreate data factory

  1. Inicie Azure PowerShell y ejecute el siguiente comando:Start Azure PowerShell and run the following command:

    • Ejecute el siguiente comando y escriba el nombre de usuario y la contraseña que utiliza para iniciar sesión en el Portal de Azure.Run the following command and enter the user name and password that you use to sign in to the Azure portal.
      Connect-AzAccount
      
    • Ejecute el siguiente comando para ver todas las suscripciones para esta cuenta.Run the following command to view all the subscriptions for this account.
      Get-AzSubscription
      
    • Ejecute el comando siguiente para seleccionar la suscripción con la que desea trabajar.Run the following command to select the subscription that you want to work with. Esta suscripción debe ser la misma que la que usó en el Portal de Azure.This subscription should be the same as the one you used in the Azure portal.
      Get-AzSubscription -SubscriptionName <SUBSCRIPTION NAME> | Set-AzContext
      
  2. Ejecute el siguiente comando para implementar las entidades de Data Factory mediante la plantilla de Resource Manager que creó en el paso 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
    

Supervisión de la canalizaciónMonitor pipeline

  1. Después de iniciar sesión en Azure Portal, haga clic en Examinar y seleccione Factorías de datos.After logging in to the Azure portal, Click Browse and select Data factories. Examinar->Factorías de datosBrowse->Data factories

  2. En la hoja Factorías de datos, haga clic en la factoría de datos (TutorialFactoryARM) que creó.In the Data Factories blade, click the data factory (TutorialFactoryARM) you created.

  3. En la hoja Factoría de datos de su factoría de datos, haga clic en Diagrama.In the Data Factory blade for your data factory, click Diagram.

    Icono Diagrama

  4. En la Vista de diagrama, se ve información general de las canalizaciones y los conjuntos de datos empleados en este tutorial.In the Diagram View, you see an overview of the pipelines, and datasets used in this tutorial.

    Vista de diagrama

  5. En la Vista de diagrama, haga doble clic en el conjunto de datos AzureBlobOutput.In the Diagram View, double-click the dataset AzureBlobOutput. Se ve que el segmento se está procesando.You see that the slice that is currently being processed.

    Captura de pantalla que muestra el conjunto de datos AzureBlobOutput.

  6. Cuando finalice el procesamiento, el segmento aparece con el estado Listo .When processing is done, you see the slice in Ready state. La creación de un clúster de HDInsight a petición normalmente tarda algún tiempo (20 minutos aproximadamente).Creation of an on-demand HDInsight cluster usually takes sometime (approximately 20 minutes). Por tanto, cabe esperar que la canalización tarde aproximadamente 30 minutos en procesar el segmento.Therefore, expect the pipeline to take approximately 30 minutes to process the slice.

    Dataset

  7. Cuando el segmento tenga el estado Listo, busque los datos de salida en la carpeta partitioneddata del contenedor adfgetstarted del almacenamiento de blobs.When the slice is in Ready state, check the partitioneddata folder in the adfgetstarted container in your blob storage for the output data.

Para obtener instrucciones sobre cómo usar las hojas del Portal de Azure para supervisar la canalización y los conjuntos de datos creados en este tutorial, consulte Supervisión de conjuntos de datos y canalizaciones .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.

También puede supervisar y administrar la aplicación para supervisar las canalizaciones de datos.You can also use Monitor and Manage App to monitor your data pipelines. Para más información acerca del uso de la aplicación, consulte Supervisión y administración de canalizaciones de Azure Data Factory mediante la nueva Aplicación de supervisión y administración .See Monitor and manage Azure Data Factory pipelines using Monitoring App for details about using the application.

Importante

El archivo de entrada se elimina cuando el segmento se procesa correctamente.The input file gets deleted when the slice is processed successfully. Por lo tanto, si desea volver a ejecutar el segmento o volver a realizar el tutorial, cargue el archivo de entrada (input.log) en la carpeta inputdata del contenedor 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.

Entidades de Data Factory en la plantillaData Factory entities in the template

Definición de factoría de datosDefine data factory

Puede definir una factoría de datos en la plantilla de Resource Manager como se muestra en el ejemplo siguiente: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/factories",
    "location": "West US"
}

El valor de dataFactoryName se define como:The dataFactoryName is defined as:

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

Es una cadena única basada en el identificador del grupo de recursos.It is a unique string based on the resource group ID.

Definición de las entidades de Data FactoryDefining Data Factory entities

Las siguientes entidades de Data Factory se definen en la plantilla JSON:The following Data Factory entities are defined in the JSON template:

Servicio vinculado de Azure StorageAzure Storage linked service

Especifique el nombre y la clave de la cuenta de almacenamiento de Azure en esta sección.You specify the name and key of your Azure storage account in this section. Consulte Servicio vinculado de Azure Storage para más información sobre las propiedades JSON usadas para definir un servicio vinculado de Azure Storage.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 los parámetros storageAccountName y storageAccountKey.The connectionString uses the storageAccountName and storageAccountKey parameters. Los valores de estos parámetros se pasan mediante el uso de un archivo de configuración.The values for these parameters passed by using a configuration file. La definición también usa las variables azureStroageLinkedService y dataFactoryName definidas en la plantilla.The definition also uses variables: azureStorageLinkedService and dataFactoryName defined in the template.

Servicio vinculado a petición de HDInsightHDInsight on-demand linked service

Consulte el artículo Servicios vinculados de proceso para más información sobre las propiedades JSON que se usan para definir un servicio vinculado a petición de HDInsight.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')]"
        }
    }
}

Tenga en cuenta los siguientes puntos:Note the following points:

  • Data Factory crea un clúster de HDInsight basado en Linux con el código JSON anterior.The Data Factory creates a Linux-based HDInsight cluster for you with the above JSON. Para más información, consulte la sección Servicio vinculado a petición de HDInsight de Azure .See On-demand HDInsight Linked Service for details.

  • Puede usar su propio clúster de HDInsight en lugar de usar un clúster de HDInsight a petición.You could use your own HDInsight cluster instead of using an on-demand HDInsight cluster. Para más información, consulte Servicio vinculado de HDInsight de Azure .See HDInsight Linked Service for details.

  • El clúster de HDInsight crea un contenedor predeterminado en el almacenamiento de blobs que especificó en JSON (linkedServiceName).The HDInsight cluster creates a default container in the blob storage you specified in the JSON (linkedServiceName). HDInsight no elimina este contenedor cuando se elimina el clúster.HDInsight does not delete this container when the cluster is deleted. Este comportamiento es así por diseño.This behavior is by design. Con el servicio vinculado de HDInsight a petición se crea un clúster de HDInsight cada vez tenga que procesarse un segmento, a menos que haya un clúster existente activo (timeToLive), que se elimina cuando finaliza el procesamiento.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.

    A medida que se procesen más segmentos, verá numerosos contenedores en su Almacenamiento de blobs de Azure.As more slices are processed, you see many containers in your Azure blob storage. Si no los necesita para solucionar problemas de trabajos, puede eliminarlos para reducir el costo de almacenamiento.If you do not need them for troubleshooting of the jobs, you may want to delete them to reduce the storage cost. Los nombres de estos contenedores siguen este patrón: "adf nombredefactoría dedatos-nombredelserviciovinculado-marcadefechayhora".The names of these containers follow a pattern: "adf yourdatafactoryname-linkedservicename-datetimestamp". Use herramientas como el Explorador de Microsoft Azure Storage para eliminar contenedores de Azure Blob Storage.Use tools such as Microsoft Azure Storage Explorer to delete containers in your Azure blob storage.

Para más información, consulte la sección Servicio vinculado a petición de HDInsight de Azure .See On-demand HDInsight Linked Service for details.

Conjunto de datos de entrada de blob de AzureAzure blob input dataset

Especifique los nombres del contenedor de blobs, la carpeta y el archivo que contiene los datos de entrada.You specify the names of blob container, folder, and file that contains the input data. Consulte las propiedades del conjunto de datos de Azure Blob para más información sobre las propiedades JSON usadas para definir un conjunto de datos de Azure Blob.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
    }
}

Esta definición usa los siguientes parámetros definidos en la plantilla de parámetros: blobContainer, inputBlobFolder y inputBlobName.This definition uses the following parameters defined in parameter template: blobContainer, inputBlobFolder, and inputBlobName.

Conjunto de datos de salida de blob de AzureAzure Blob output dataset

Especifique los nombres del contenedor de blobs y la carpeta que contiene los datos de salida.You specify the names of blob container and folder that holds the output data. Consulte las propiedades del conjunto de datos de Azure Blob para más información sobre las propiedades JSON usadas para definir un conjunto de datos de Azure Blob.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
        }
    }
}

Esta definición usa los siguientes parámetros definidos en la plantilla de parámetros: blobContainer y outputBlobFolder.This definition uses the following parameters defined in the parameter template: blobContainer and outputBlobFolder.

Canalización de datosData pipeline

Defina una canalización que transforme los datos mediante la ejecución de un script de Hive en un clúster a petición de Azure HDInsight.You define a pipeline that transform data by running Hive script on an on-demand Azure HDInsight cluster. Consulte JSON de canalización para obtener descripciones de elementos JSON que se usan para definir una canalización en este ejemplo.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
    }
}

Reutilización de la plantillaReuse the template

En el tutorial, ha creado una plantilla para definir las entidades de Data Factory y una plantilla para pasar valores de parámetros.In the tutorial, you created a template for defining Data Factory entities and a template for passing values for parameters. Para usar la misma plantilla para implementar las entidades de Data Factory en distintos entornos, cree un archivo de parámetros para cada entorno y utilícelo al implementarla en ese entorno.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.

Ejemplo: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

Tenga en cuenta que el primer comando usa el archivo de parámetros para el entorno de desarrollo, el segundo para el entorno de prueba y el tercero para el entorno de producción.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.

También puede volver a usar la plantilla para llevar a cabo tareas repetidas.You can also reuse the template to perform repeated tasks. Por ejemplo, necesita crear muchas factorías de datos con una o varias canalizaciones que implementen la misma lógica, pero cada factoría de datos usa cuentas de Azure Storage y Azure SQL Database.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. En este escenario, usa la misma plantilla en el mismo entorno (desarrollo, prueba o producción) con distintos archivos de parámetros para crear factorías de datos.In this scenario, you use the same template in the same environment (dev, test, or production) with different parameter files to create data factories.

Plantilla de Resource Manager para crear una puerta de enlaceResource Manager template for creating a gateway

Aquí aparece una plantilla de Resource Manager de ejemplo para crear una puerta de enlace lógica en la parte posterior.Here is a sample Resource Manager template for creating a logical gateway in the back. Instale una puerta de enlace en el equipo local o en la máquina virtual de IaaS de Azure y registrar la puerta de enlace con el servicio Data Factory mediante una clave.Install a gateway on your on-premises computer or Azure IaaS VM and register the gateway with Data Factory service using a key. Para más información, consulte Movimiento de datos entre orígenes locales y la nube con Data Management Gateway .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/factories",
            "location": "eastus",
            "resources": [
                {
                    "dependsOn": [ "[concat('Microsoft.DataFactory/factories/', variables('dataFactoryName'))]" ],
                    "type": "gateways",
                    "apiVersion": "[variables('apiVersion')]",
                    "name": "GatewayUsingARM",
                    "properties": {
                        "description": "my gateway"
                    }
                }            
            ]
        }
    ]
}

Esta plantilla crea una factoría de datos denominada GatewayUsingArmDF con una puerta de enlace llamada: GatewayUsingARM.This template creates a data factory named GatewayUsingArmDF with a gateway named: GatewayUsingARM.

Consulte tambiénSee Also

TemaTopic DescripciónDescription
CanalizacionesPipelines Este artículo ayuda a conocer las canalizaciones y actividades de Azure Data Factory y cómo aprovecharlas para construir flujos de trabajo controlados por datos de un extremo a otro para su escenario o negocio.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.
Conjuntos de datosDatasets Este artículo le ayuda a comprender los conjuntos de datos de Azure Data Factory.This article helps you understand datasets in Azure Data Factory.
Programación y ejecución con Data FactoryScheduling and execution En este artículo se explican los aspectos de programación y ejecución del modelo de aplicación de Azure Data Factory.This article explains the scheduling and execution aspects of Azure Data Factory application model.
Supervisión y administración de canalizaciones de Data Factory de Azure mediante la nueva Aplicación de supervisión y administraciónMonitor and manage pipelines using Monitoring App En este artículo se describe cómo supervisar, administrar y depurar las canalizaciones mediante la aplicación de supervisión y administración.This article describes how to monitor, manage, and debug pipelines using the Monitoring & Management App.