Tutorial: Compilación de la primera instancia de Azure Data Factory con la API de REST de Data FactoryTutorial: Build your first Azure data factory using Data Factory REST API

Nota

Este artículo se aplica a la versión 1 de Data Factory.This article applies to version 1 of Data Factory. Si usa la versión actual del servicio Data Factory, consulte Guía de inicio rápido: Creación de una factoría de datos mediante 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á la API de REST de Data Factory para crear su primera instancia de Azure Data Factory.In this article, you use Data Factory REST API 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

Este artículo no abarca toda la API de REST.This article does not cover all the REST API. Para obtener documentación completa sobre la API de REST, consulte la referencia de la API de REST de Data Factory.For comprehensive documentation on REST API, see Data Factory REST API Reference.

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.

  • Lea el artículo Tutorial: Compilación de la primera canalización para procesar datos mediante el clúster de Hadoop y complete los pasos de los requisitos previos .Read through Tutorial Overview article and complete the prerequisite steps.

  • Instale Curl en su máquina.Install Curl on your machine. Utilice la herramienta CURL con comandos de REST para crear una factoría de datos.You use the CURL tool with REST commands to create a data factory.

  • Siga las instrucciones de este artículo para:Follow instructions from this article to:

    1. Cree una aplicación web denominada ADFGetStartedApp en Azure Active Directory.Create a Web application named ADFGetStartedApp in Azure Active Directory.
    2. Obtenga el Id. de cliente y la Clave secreta.Get client ID and secret key.
    3. Obtenga el Identificador de inquilino.Get tenant ID.
    4. Asigne la aplicación ADFGetStartedApp al rol Colaborador de Data Factory.Assign the ADFGetStartedApp application to the Data Factory Contributor role.
  • Instale Azure PowerShell.Install Azure PowerShell.

  • Inicie PowerShell y ejecute el comando siguiente.Launch PowerShell and run the following command. Mantenga Azure PowerShell abierto hasta el final de este tutorial.Keep Azure PowerShell open until the end of this tutorial. Si lo cierra y vuelve a abrirlo, deberá ejecutar los comandos de nuevo.If you close and reopen, you need to run the commands again.

    1. Ejecute Connect-AzAccount y escriba el mismo nombre de usuario y contraseña que utiliza para iniciar sesión en Azure Portal.Run Connect-AzAccount and enter the user name and password that you use to sign in to the Azure portal.
    2. Ejecute Get-AzSubscriptionn para ver todas las suscripciones para esta cuenta.Run Get-AzSubscription to view all the subscriptions for this account.
    3. Ejecute Get-AzSubscription -SubscriptionName NameOfAzureSubscription | Set-AzContext para seleccionar la suscripción con la que desea trabajar.Run Get-AzSubscription -SubscriptionName NameOfAzureSubscription | Set-AzContext to select the subscription that you want to work with. Reemplace NameOfAzureSubscription por el nombre de su suscripción de Azure.Replace NameOfAzureSubscription with the name of your Azure subscription.
  • Cree un grupo de recursos de Azure denominado ADFTutorialResourceGroup , para lo que debe ejecutar el siguiente comando en PowerShell:Create an Azure resource group named ADFTutorialResourceGroup by running the following command in the PowerShell:

    New-AzResourceGroup -Name ADFTutorialResourceGroup  -Location "West US"
    

    En algunos de los pasos de este tutorial se supone que se usa el grupo de recursos denominado ADFTutorialResourceGroup.Some of the steps in this tutorial assume that you use the resource group named ADFTutorialResourceGroup. Si usa un otro grupo de recursos, deberá usar su nombre en lugar de ADFTutorialResourceGroup en este tutorial.If you use a different resource group, you need to use the name of your resource group in place of ADFTutorialResourceGroup in this tutorial.

Creación de definiciones de JSONCreate JSON definitions

Cree los siguientes archivos JSON en la carpeta en la que se encuentra curl.exe.Create following JSON files in the folder where curl.exe is located.

datafactory.jsondatafactory.json

Importante

El nombre debe ser único globalmente, por lo que quizás desee usar el prefijo/sufijo ADFCopyTutorialDF para que sea un nombre único.Name must be globally unique, so you may want to prefix/suffix ADFCopyTutorialDF to make it a unique name.

{
    "name": "FirstDataFactoryREST",
    "location": "WestUS"
}

azurestoragelinkedservice.jsonazurestoragelinkedservice.json

Importante

Reemplace accountname y accountkey por el nombre y la clave de su cuenta de almacenamiento de Azure.Replace accountname and accountkey with name and key of your Azure storage account. Para aprender a obtener la clave de acceso de almacenamiento, consulte Administración de claves de acceso de la cuenta de almacenamiento.To learn how to get your storage access key, see Manage storage account access keys.

{
    "name": "AzureStorageLinkedService",
    "properties": {
        "type": "AzureStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
        }
    }
}

hdinsightondemandlinkedservice.jsonhdinsightondemandlinkedservice.json

{
    "name": "HDInsightOnDemandLinkedService",
    "properties": {
        "type": "HDInsightOnDemand",
        "typeProperties": {
            "version": "3.5",
            "clusterSize": 1,
            "timeToLive": "00:05:00",
            "osType": "Linux",
            "linkedServiceName": "AzureStorageLinkedService"
        }
    }
}

En la siguiente tabla se ofrecen descripciones de las propiedades JSON que se usan en el fragmento de código:The following table provides descriptions for the JSON properties used in the snippet:

PropiedadProperty DescripciónDescription
clusterSizeclusterSize Tamaño del clúster de HDInsight.Size of the HDInsight cluster.
timeToLivetimeToLive Especifica el tiempo de inactividad del clúster de HDInsight, antes de que se elimine.Specifies that the idle time for the HDInsight cluster, before it is deleted.
linkedServiceNamelinkedServiceName Especifica la cuenta de almacenamiento que se usa para almacenar los registros que genera HDInsight.Specifies the storage account that is used to store the logs that are generated by HDInsight

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 se procesa 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 is 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.

inputdataset.jsoninputdataset.json

{
    "name": "AzureBlobInput",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": "AzureStorageLinkedService",
        "typeProperties": {
            "fileName": "input.log",
            "folderPath": "adfgetstarted/inputdata",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ","
            }
        },
        "availability": {
            "frequency": "Month",
            "interval": 1
        },
        "external": true,
        "policy": {}
    }
}

Este código JSON define un conjunto de datos denominado AzureBlobInput, que representa los datos de entrada de una actividad en la canalización.The JSON defines a dataset named AzureBlobInput, which represents input data for an activity in the pipeline. Además, especifica que los datos de entrada se colocan en el contenedor de blobs adfgetstarted y en la carpeta inputdata.In addition, it specifies that the input data is located in the blob container called adfgetstarted and the folder called inputdata.

En la siguiente tabla se ofrecen descripciones de las propiedades JSON que se usan en el fragmento de código:The following table provides descriptions for the JSON properties used in the snippet:

PropiedadProperty DescripciónDescription
typetype La propiedad type se establece en AzureBlob porque los datos residen en Almacenamiento de blobs de Azure.The type property is set to AzureBlob because data resides in Azure blob storage.
linkedServiceNamelinkedServiceName hace referencia a StorageLinkedService que creó anteriormente.refers to the StorageLinkedService you created earlier.
fileNamefileName Esta propiedad es opcional.This property is optional. Si omite esta propiedad, se seleccionan todos los archivos de folderPath.If you omit this property, all the files from the folderPath are picked. En este caso, se procesa solo el archivo input.log.In this case, only the input.log is processed.
typetype Los archivos de registro están en formato de texto, por lo que usaremos TextFormat.The log files are in text format, so we use TextFormat.
columnDelimitercolumnDelimiter Las columnas de los archivos de registro están delimitadas por una coma (,).columns in the log files are delimited by a comma character (,)
frequency/intervalfrequency/interval La frecuencia está establecida en Mes y el intervalo es 1, lo que significa que los segmentos de entrada estarán disponibles cada mes.frequency set to Month and interval is 1, which means that the input slices are available monthly.
externalexternal Esta propiedad se establece en true si el servicio Factoría de datos no ha generado los datos de entrada.this property is set to true if the input data is not generated by the Data Factory service.

outputdataset.jsonoutputdataset.json

{
    "name": "AzureBlobOutput",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": "AzureStorageLinkedService",
        "typeProperties": {
            "folderPath": "adfgetstarted/partitioneddata",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ","
            }
        },
        "availability": {
            "frequency": "Month",
            "interval": 1
        }
    }
}

Este código JSON define un conjunto de datos denominado AzureBlobOutput, que representa los datos de salida de una actividad en la canalización.The JSON defines a dataset named AzureBlobOutput, which represents output data for an activity in the pipeline. Además, especifica que los resultados se almacenan en el contenedor de blobs adfgetstarted y en la carpeta partitioneddata.In addition, it specifies that the results are stored in the blob container called adfgetstarted and the folder called partitioneddata. La sección availability especifica que el conjunto de datos de salida se genera mensualmente.The availability section specifies that the output dataset is produced on a monthly basis.

pipeline.jsonpipeline.json

Importante

Reemplace storageaccountname por el nombre de la cuenta de Almacenamiento de Azure.Replace storageaccountname with name of your Azure storage account.

{
    "name": "MyFirstPipeline",
    "properties": {
        "description": "My first Azure Data Factory pipeline",
        "activities": [{
            "type": "HDInsightHive",
            "typeProperties": {
                "scriptPath": "adfgetstarted/script/partitionweblogs.hql",
                "scriptLinkedService": "AzureStorageLinkedService",
                "defines": {
                    "inputtable": "wasb://adfgetstarted@<storageaccountname>.blob.core.windows.net/inputdata",
                    "partitionedtable": "wasb://adfgetstarted@<storageaccountname>t.blob.core.windows.net/partitioneddata"
                }
            },
            "inputs": [{
                "name": "AzureBlobInput"
            }],
            "outputs": [{
                "name": "AzureBlobOutput"
            }],
            "policy": {
                "concurrency": 1,
                "retry": 3
            },
            "scheduler": {
                "frequency": "Month",
                "interval": 1
            },
            "name": "RunSampleHiveActivity",
            "linkedServiceName": "HDInsightOnDemandLinkedService"
        }],
        "start": "2017-07-10T00:00:00Z",
        "end": "2017-07-11T00:00:00Z",
        "isPaused": false
    }
}

En este fragmento de código JSON, se crea una canalización formada por una sola actividad que usa Hive para procesar los datos en un clúster de HDInsight.In the JSON snippet, you are creating a pipeline that consists of a single activity that uses Hive to process data on a HDInsight cluster.

El archivo de script de Hive, partitionweblogs.hql, se almacena en la cuenta de Azure Storage (especificada mediante la propiedad scriptLinkedService, llamada StorageLinkedService) en una carpeta denominada script del contenedor adfgetstarted.The Hive script file, partitionweblogs.hql, is stored in the Azure storage account (specified by the scriptLinkedService, called StorageLinkedService), and in script folder in the container adfgetstarted.

La sección defines especifica la configuración de tiempo de ejecución que se pasa al script de Hive como valores de configuración de Hive (por ejemplo, ${hiveconf:inputtable}, ${hiveconf:partitionedtable}).The defines section specifies runtime settings that are passed to the hive script as Hive configuration values (e.g ${hiveconf:inputtable}, ${hiveconf:partitionedtable}).

Las propiedades start y end de la canalización especifican el período activo de esta canalización.The start and end properties of the pipeline specifies the active period of the pipeline.

En el código JSON de la actividad, debe indicar que el script de Hive se ejecuta en el proceso especificado por linkedServiceNameHDInsightOnDemandLinkedService.In the activity JSON, you specify that the Hive script runs on the compute specified by the linkedServiceNameHDInsightOnDemandLinkedService.

Nota

Consulte la sección "JSON de canalización" en Canalizaciones y actividades en Azure Data Factory para más información acerca de las propiedades de JSON utilizadas en el ejemplo anterior.See "Pipeline JSON" in Pipelines and activities in Azure Data Factory for details about JSON properties used in the preceding example.

Definición de variables globalesSet global variables

En Azure PowerShell, ejecute los comandos siguientes después de reemplazar los valores por los suyos propios:In Azure PowerShell, execute the following commands after replacing the values with your own:

Importante

Consulte la sección Requisitos previos para obtener instrucciones sobre cómo obtener el identificador de cliente, el secreto del cliente, el identificador de inquilino y el identificador de suscripción.See Prerequisites section for instructions on getting client ID, client secret, tenant ID, and subscription ID.

$client_id = "<client ID of application in AAD>"
$client_secret = "<client key of application in AAD>"
$tenant = "<Azure tenant ID>";
$subscription_id="<Azure subscription ID>";

$rg = "ADFTutorialResourceGroup"
$adf = "FirstDataFactoryREST"

Autenticación con AADAuthenticate with AAD

$cmd = { .\curl.exe -X POST https://login.microsoftonline.com/$tenant/oauth2/token  -F grant_type=client_credentials  -F resource=https://management.core.windows.net/ -F client_id=$client_id -F client_secret=$client_secret };
$responseToken = Invoke-Command -scriptblock $cmd;
$accessToken = (ConvertFrom-Json $responseToken).access_token;

(ConvertFrom-Json $responseToken)

Creación de Data FactoryCreate data factory

En este paso, creará una instancia de Azure Data Factory llamada LogProcessingFactory.In this step, you create an Azure Data Factory named FirstDataFactoryREST. 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. Por ejemplo, una actividad de copia para copiar datos desde un origen a un almacén de datos de destino o una actividad de Hive de HDInsight para ejecutar un script de Hive que transforme los datos de entrada.For example, a Copy Activity to copy data from a source to a destination data store and a HDInsight Hive activity to run a Hive script to transform data. Ejecute los siguientes comandos para crear la factoría de datos:Run the following commands to create the data factory:

  1. Asigne el comando a la variable denominada cmd.Assign the command to variable named cmd.

    Confirme que el nombre de la factoría de datos que especifique aquí (ADFCopyTutorialDF) coincide con el nombre especificado en el archivo datafactory.json.Confirm that the name of the data factory you specify here (ADFCopyTutorialDF) matches the name specified in the datafactory.json.

    $cmd = {.\curl.exe -X PUT -H "Authorization: Bearer $accessToken" -H "Content-Type: application/json" --data "@datafactory.json" https://management.azure.com/subscriptions/$subscription_id/resourcegroups/$rg/providers/Microsoft.DataFactory/datafactories/FirstDataFactoryREST?api-version=2015-10-01};
    
  2. Ejecute el comando con Invoke-Command.Run the command by using Invoke-Command.

    $results = Invoke-Command -scriptblock $cmd;
    
  3. Vea los resultados.View the results. Si la factoría de datos se ha creado correctamente, verá su JSON en los resultados; de lo contrario, verá un mensaje de error.If the data factory has been successfully created, you see the JSON for the data factory in the results; otherwise, you see an error message.

    Write-Host $results
    

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

  • El nombre de Azure Data Factory debe ser único de forma global.The name of the Azure Data Factory must be globally unique. Si ve el siguiente error en los resultados: El nombre “ADFCopyTutorialDF” de factoría de datos no está disponible, siga estos pasos:If you see the error in results: Data factory name “FirstDataFactoryREST” is not available, do the following steps:

    1. Cambie el nombre (por ejemplo, yournameFirstDataFactoryREST) en el archivo datafactory.json .Change the name (for example, yournameFirstDataFactoryREST) in the datafactory.json file. Consulte el tema Factoría de datos: reglas de nomenclatura para las reglas de nomenclatura para los artefactos de Factoría de datos.See Data Factory - Naming Rules topic for naming rules for Data Factory artifacts.
    2. En el primer comando, donde se asigna un valor a la variable $cmd , reemplace FirstDataFactoryREST por el nuevo nombre y ejecute el comando.In the first command where the $cmd variable is assigned a value, replace FirstDataFactoryREST with the new name and run the command.
    3. Ejecute los dos comandos siguientes para invocar la API de REST para crear la factoría de datos e imprimir los resultados de la operación.Run the next two commands to invoke the REST API to create the data factory and print the results of the operation.
  • Para crear instancias de Data Factory, debe ser administrador o colaborador de la suscripción de Azure.To create Data Factory instances, you need to be a contributor/administrator of the Azure subscription

  • El nombre de la factoría de datos se puede registrar como un nombre DNS en el futuro y, por lo tanto, que sea visible públicamente.The name of the data factory may be registered as a DNS name in the future and hence become publicly visible.

  • Si recibe el error: "La suscripción no está registrada para usar el espacio de nombres Microsoft.DataFactory", realice una de las acciones siguientes e intente publicarla de nuevo:If you receive the error: "This subscription is not registered to use namespace Microsoft.DataFactory", do one of the following and try publishing again:

    • En Azure PowerShell, ejecute el siguiente comando para registrar el proveedor de Data Factory:In Azure PowerShell, run the following command to register the Data Factory provider:

      Register-AzResourceProvider -ProviderNamespace Microsoft.DataFactory
      

      Puede ejecutar el comando siguiente para confirmar que se ha registrado el proveedor de Data Factory:You can run the following command to confirm that the Data Factory provider is registered:

      Get-AzResourceProvider
      
    • Inicie sesión mediante la suscripción de Azure en el Portal de Azure y vaya a una hoja de Data Factory (o) cree una factoría de datos en el Portal de Azure.Login using the Azure subscription into the Azure portal and navigate to a Data Factory blade (or) create a data factory in the Azure portal. Esta acción registra automáticamente el proveedor.This action automatically registers the provider for you.

Antes de crear una canalización, debe crear algunas entidades de factoría de datos primero.Before creating a pipeline, you need to create a few Data Factory entities first. En primer lugar debe crear servicios vinculados para vincular los almacenes de datos y procesos con su almacén de datos, y, después, definir los conjuntos de datos de entrada y salida para representar los datos en los almacenes de datos vinculados.You first create linked services to link data stores/computes to your data store, define input and output datasets to represent data in linked data stores.

Crear servicios vinculadosCreate linked services

En este paso, vinculará su cuenta de Azure Storage y el clúster de Azure HDInsight a petición con su factoría de datos.In this step, you link your Azure Storage account and an on-demand Azure HDInsight cluster to your 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. El servicio vinculado de HDInsight se usa para ejecutar un script de Hive especificado en la actividad de la canalización en este ejemplo.The HDInsight linked service is used to run a Hive script specified in the activity of the pipeline in this sample.

Creación de un servicio vinculado de Azure StorageCreate Azure Storage linked service

En este paso, vinculará su cuenta de Azure Storage con su factoría de datos.In this step, you link your Azure Storage account to your data factory. Con este tutorial, usará la misma cuenta de Azure Storage para almacenar los datos de entrada y salida y el archivo de script de HQL.With this tutorial, you use the same Azure Storage account to store input/output data and the HQL script file.

  1. Asigne el comando a la variable denominada cmd.Assign the command to variable named cmd.

    $cmd = {.\curl.exe -X PUT -H "Authorization: Bearer $accessToken" -H "Content-Type: application/json" --data “@azurestoragelinkedservice.json” https://management.azure.com/subscriptions/$subscription_id/resourcegroups/$rg/providers/Microsoft.DataFactory/datafactories/$adf/linkedservices/AzureStorageLinkedService?api-version=2015-10-01};
    
  2. Ejecute el comando con Invoke-Command.Run the command by using Invoke-Command.

    $results = Invoke-Command -scriptblock $cmd;
    
  3. Vea los resultados.View the results. Si el servicio vinculado se ha creado correctamente, verá su JSON en los resultados; de lo contrario, verá un mensaje de error.If the linked service has been successfully created, you see the JSON for the linked service in the results; otherwise, you see an error message.

    Write-Host $results
    

Creación de un servicio vinculado de HDInsight de AzureCreate Azure HDInsight linked service

En este paso, vinculará un clúster de HDInsight a petición con la factoría de datos.In this step, you link an on-demand HDInsight cluster to your data factory. El clúster de HDInsight se crea automáticamente en tiempo de ejecución y se elimina después de hacer el procesamiento y de permanecer inactivo durante el período de tiempo especificado.The HDInsight cluster is automatically created at runtime and deleted after it is done processing and idle for the specified amount of time. 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. Consulte Servicios vinculados de procesos para más información.See Compute Linked Services for details.

  1. Asigne el comando a la variable denominada cmd.Assign the command to variable named cmd.

    $cmd = {.\curl.exe -X PUT -H "Authorization: Bearer $accessToken" -H "Content-Type: application/json" --data "@hdinsightondemandlinkedservice.json" https://management.azure.com/subscriptions/$subscription_id/resourcegroups/$rg/providers/Microsoft.DataFactory/datafactories/$adf/linkedservices/hdinsightondemandlinkedservice?api-version=2015-10-01};
    
  2. Ejecute el comando con Invoke-Command.Run the command by using Invoke-Command.

    $results = Invoke-Command -scriptblock $cmd;
    
  3. Vea los resultados.View the results. Si el servicio vinculado se ha creado correctamente, verá su JSON en los resultados; de lo contrario, verá un mensaje de error.If the linked service has been successfully created, you see the JSON for the linked service in the results; otherwise, you see an error message.

    Write-Host $results
    

Creación de conjuntos de datosCreate datasets

En este paso, creará conjuntos de datos que representan los datos de entrada y salida para el procesamiento de Hive.In this step, you create datasets to represent the input and output data for Hive processing. Estos conjuntos de datos hacen referencia al servicio StorageLinkedService que ha creado anteriormente en este tutorial.These datasets refer to the StorageLinkedService you have created earlier in this tutorial. El servicio vinculado apunta a una cuenta de Azure Storage y los conjuntos de datos especifican el contenedor, la carpeta y el nombre de archivo en el almacenamiento que contiene los datos de entrada y salida.The linked service points to an Azure Storage account and datasets specify container, folder, file name in the storage that holds input and output data.

Creación de un conjunto de datos de entradaCreate input dataset

En este paso, creará el conjunto de datos de entrada que representa los datos de entrada almacenados en Almacenamiento de blobs de Azure.In this step, you create the input dataset to represent input data stored in the Azure Blob storage.

  1. Asigne el comando a la variable denominada cmd.Assign the command to variable named cmd.

    $cmd = {.\curl.exe -X PUT -H "Authorization: Bearer $accessToken" -H "Content-Type: application/json" --data "@inputdataset.json" https://management.azure.com/subscriptions/$subscription_id/resourcegroups/$rg/providers/Microsoft.DataFactory/datafactories/$adf/datasets/AzureBlobInput?api-version=2015-10-01};
    
  2. Ejecute el comando con Invoke-Command.Run the command by using Invoke-Command.

    $results = Invoke-Command -scriptblock $cmd;
    
  3. Vea los resultados.View the results. Si el conjunto de datos se ha creado correctamente, verá su JSON en los resultados; de lo contrario, verá un mensaje de error.If the dataset has been successfully created, you see the JSON for the dataset in the results; otherwise, you see an error message.

    Write-Host $results
    

Creación del conjunto de datos de salidaCreate output dataset

En este paso, creará el conjunto de datos de salida que representa los datos de salida almacenados en Almacenamiento de blobs de Azure.In this step, you create the output dataset to represent output data stored in the Azure Blob storage.

  1. Asigne el comando a la variable denominada cmd.Assign the command to variable named cmd.

    $cmd = {.\curl.exe -X PUT -H "Authorization: Bearer $accessToken" -H "Content-Type: application/json" --data "@outputdataset.json" https://management.azure.com/subscriptions/$subscription_id/resourcegroups/$rg/providers/Microsoft.DataFactory/datafactories/$adf/datasets/AzureBlobOutput?api-version=2015-10-01};
    
  2. Ejecute el comando con Invoke-Command.Run the command by using Invoke-Command.

    $results = Invoke-Command -scriptblock $cmd;
    
  3. Vea los resultados.View the results. Si el conjunto de datos se ha creado correctamente, verá su JSON en los resultados; de lo contrario, verá un mensaje de error.If the dataset has been successfully created, you see the JSON for the dataset in the results; otherwise, you see an error message.

    Write-Host $results
    

Creación de una canalizaciónCreate pipeline

En este paso, creará la primera canalización con una actividad HDInsightHive .In this step, you create your first pipeline with a HDInsightHive activity. El segmento de entrada está disponible de forma mensual (frecuencia: mensual, intervalo: 1), el segmento de salida se genera mensualmente y la propiedad de programador de la actividad también se establece en mensual.Input slice is available monthly (frequency: Month, interval: 1), output slice is produced monthly, and the scheduler property for the activity is also set to monthly. La configuración del conjunto de datos de salida y la del programador de la actividad deben coincidir.The settings for the output dataset and the activity scheduler must match. Actualmente, el conjunto de datos de salida es lo que controla la programación, por lo que debe crear un conjunto de datos de salida aunque la actividad no genere ninguna salida.Currently, output dataset is what drives the schedule, so you must create an output dataset even if the activity does not produce any output. Si la actividad no toma ninguna entrada, puede omitir la creación del conjunto de datos de entrada.If the activity doesn't take any input, you can skip creating the input dataset.

Confirme que el archivo input.log aparece en la carpeta adfgetstarted/inputdata en Azure Blob Storage y ejecute el siguiente comando para implementar la canalización.Confirm that you see the input.log file in the adfgetstarted/inputdata folder in the Azure blob storage, and run the following command to deploy the pipeline. Como las fechas de inicio y finalización están establecidas en el pasado e isPaused está establecido en false, la canalización (la actividad de la canalización) se ejecuta nada más realizar la implementación.Since the start and end times are set in the past and isPaused is set to false, the pipeline (activity in the pipeline) runs immediately after you deploy.

  1. Asigne el comando a la variable denominada cmd.Assign the command to variable named cmd.

    $cmd = {.\curl.exe -X PUT -H "Authorization: Bearer $accessToken" -H "Content-Type: application/json" --data "@pipeline.json" https://management.azure.com/subscriptions/$subscription_id/resourcegroups/$rg/providers/Microsoft.DataFactory/datafactories/$adf/datapipelines/MyFirstPipeline?api-version=2015-10-01};
    
  2. Ejecute el comando con Invoke-Command.Run the command by using Invoke-Command.

    $results = Invoke-Command -scriptblock $cmd;
    
  3. Vea los resultados.View the results. Si el conjunto de datos se ha creado correctamente, verá su JSON en los resultados; de lo contrario, verá un mensaje de error.If the dataset has been successfully created, you see the JSON for the dataset in the results; otherwise, you see an error message.

    Write-Host $results
    
  4. Enhorabuena, ya creó correctamente su primera canalización con Azure PowerShell.Congratulations, you have successfully created your first pipeline using Azure PowerShell!

Supervisión de la canalizaciónMonitor pipeline

En este paso, utilizará la API de REST de Data Factory para supervisar los segmentos que la canalización está produciendo.In this step, you use Data Factory REST API to monitor slices being produced by the pipeline.

$ds ="AzureBlobOutput"

$cmd = {.\curl.exe -X GET -H "Authorization: Bearer $accessToken" https://management.azure.com/subscriptions/$subscription_id/resourcegroups/$rg/providers/Microsoft.DataFactory/datafactories/$adf/datasets/$ds/slices?start=1970-01-01T00%3a00%3a00.0000000Z"&"end=2016-08-12T00%3a00%3a00.0000000Z"&"api-version=2015-10-01};

$results2 = Invoke-Command -scriptblock $cmd;

IF ((ConvertFrom-Json $results2).value -ne $NULL) {
    ConvertFrom-Json $results2 | Select-Object -Expand value | Format-Table
} else {
        (convertFrom-Json $results2).RemoteException
}

Importante

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.

Ejecute Invoke-Command y el siguiente hasta que vea el segmento en estado Listo o Error.Run the Invoke-Command and the next one until you see the slice in Ready state or Failed state. 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. La creación de un clúster de HDInsight a petición normalmente requiere algo de tiempo.The creation of an on-demand HDInsight cluster usually takes some time.

datos de salida

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.

También puede usar el Portal de Azure para supervisar los segmentos y solucionar cualquier problema.You can also use Azure portal to monitor slices and troubleshoot any issues. Consulte más detalles en la sección sobre la supervisión de canalizaciones con el Portal de Azure .See Monitor pipelines using Azure portal details.

ResumenSummary

En este tutorial, ha creado una instancia de Data Factory de Azure para procesar datos mediante la ejecución de un script de Hive en un clúster de Hadoop en HDInsight.In this tutorial, you created an Azure data factory to process data by running Hive script on a HDInsight hadoop cluster. Ha usado el Editor de Data Factory en el Portal de Azure para realizar los siguientes pasos:You used the Data Factory Editor in the Azure portal to do the following steps:

  1. Ha creado una factoría de datos de Azure.Created an Azure data factory.
  2. Ha creado dos servicios vinculados:Created two linked services:
    1. Azure Storage para vincular la instancia de Azure Blob Storage que contiene los archivos de entrada y salida a la factoría de datos.Azure Storage linked service to link your Azure blob storage that holds input/output files to the data factory.
    2. HDInsight de Azure para vincular un clúster de Hadoop en HDInsight a petición a la factoría de datos.Azure HDInsight on-demand linked service to link an on-demand HDInsight Hadoop cluster to the data factory. Azure Data Factory crea un clúster de Hadoop en HDInsight justo a tiempo para procesar los datos de entrada y generar los datos de salida.Azure Data Factory creates a HDInsight Hadoop cluster just-in-time to process input data and produce output data.
  3. Ha creado dos conjuntos de datos, que describen los datos de entrada y salida para la actividad de Hive de HDInsight en la canalización.Created two datasets, which describe input and output data for HDInsight Hive activity in the pipeline.
  4. Ha creado una canalización con una actividad de Hive de HDInsight.Created a pipeline with a HDInsight Hive activity.

Pasos siguientesNext steps

En este artículo, creó una canalización con una actividad de transformación (actividad de HDInsight) que ejecuta un script de Hive en un clúster de HDInsight de Azure a petición.In this article, you have created a pipeline with a transformation activity (HDInsight Activity) that runs a Hive script on an on-demand Azure HDInsight cluster. Para ver cómo se usa una actividad de copia para copiar datos de un blob de Azure en SQL Azure, consulte Tutorial: Copia de datos de un blob de Azure a Azure SQL.To see how to use a Copy Activity to copy data from an Azure Blob to Azure SQL, see Tutorial: Copy data from an Azure Blob to Azure SQL.

Consulte tambiénSee Also

TemaTopic DescripciónDescription
Referencia de API de REST de Data FactoryData Factory REST API Reference Consulte la documentación completa sobre los cmdlets de Factoría de datosSee comprehensive documentation on Data Factory cmdlets
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ónScheduling 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.