Transformación de datos en la nube mediante una actividad de Spark en Azure Data Factory

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. Obtenga información sobre cómo iniciar una nueva evaluación gratuita.

En este tutorial, usará Azure Portal para crear una canalización de Azure Data Factory. Esta canalización permite transformar datos mediante una actividad de Spark y un servicio vinculado de Azure HDInsight a petición.

En este tutorial, realizará los siguientes pasos:

  • Creación de una factoría de datos.
  • Creación de una canalización que use una actividad de Spark.
  • Desencadenamiento de una ejecución de la canalización
  • Supervisión de la ejecución de la canalización

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Requisitos previos

Nota:

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. 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.

  • Cuenta de Azure Storage. Debe crear un script de Python y un archivo de entrada y cargarlos en Azure Storage. La salida del programa Spark se almacena en esta cuenta de almacenamiento. El clúster de Spark a petición usa la misma cuenta de almacenamiento que el almacenamiento principal.

Nota

HdInsight admite solo cuentas de almacenamiento de uso general con nivel estándar. Asegúrese de que la cuenta no sea una cuenta de almacenamiento solo Premium o de blobs.

Carga del script de Python en la cuenta de Blob Storage

  1. Cree un archivo de Python denominado WordCount_Spark.py con el siguiente contenido:

    import sys
    from operator import add
    
    from pyspark.sql import SparkSession
    
    def main():
        spark = SparkSession\
            .builder\
            .appName("PythonWordCount")\
            .getOrCreate()
    
        lines = spark.read.text("wasbs://adftutorial@<storageaccountname>.blob.core.windows.net/spark/inputfiles/minecraftstory.txt").rdd.map(lambda r: r[0])
        counts = lines.flatMap(lambda x: x.split(' ')) \
            .map(lambda x: (x, 1)) \
            .reduceByKey(add)
        counts.saveAsTextFile("wasbs://adftutorial@<storageaccountname>.blob.core.windows.net/spark/outputfiles/wordcount")
    
        spark.stop()
    
    if __name__ == "__main__":
        main()
    
  2. Reemplace <storageAccountName> por el nombre de la cuenta de Azure Storage. A continuación, guarde el archivo.

  3. En Azure Blob Storage, cree un contenedor denominado adftutorial si no existe.

  4. Cree una carpeta llamada spark.

  5. Cree una subcarpeta denominada script en la carpeta spark.

  6. Cargue el archivo WordCount_Spark.py a la subcarpeta script.

Carga del archivo de entrada

  1. Cree un archivo denominado minecraftstory.txt con algo de texto. El programa Spark contará el número de palabras de este texto.
  2. Cree una subcarpeta denominada inputfiles en la carpeta spark.
  3. Cargue el archivo minecraftstory.txt en la subcarpeta inputfiles.

Crear una factoría de datos

Siga los pasos del artículo Inicio rápido: Creación de una factoría de datos mediante Azure Portal para crear una factoría de datos si aún no tiene una con la que trabajar.

Crear servicios vinculados

En esta sección, deberá crear dos servicios vinculados:

  • Un servicio vinculado a Azure Storage que vincule una cuenta de Azure Storage con la factoría de datos. Este almacenamiento lo usa el clúster HDInsight a petición. También contiene el script de Spark que se ejecutará.
  • Un servicio vinculado de HDInsight a petición. Azure Data Factory permite crear automáticamente un clúster de HDInsight y ejecutar el programa de Spark. A continuación, elimina el clúster de HDInsight si el clúster está inactivo durante un tiempo configurado previamente.

Creación de un servicio vinculado de Azure Storage

  1. En la página principal, cambie a la pestaña Administrar del panel de la izquierda.

    Screenshot that shows the Manage tab.

  2. Seleccione Connections (Conexiones) en la parte inferior de la ventana y seleccione + New (+ Nuevo).

    Buttons for creating a new connection

  3. En la ventana New Linked Service (Nuevo servicio vinculado), seleccione Data Store>Azure Blob Storage y después Continue (Continuar).

    Selecting the "Azure Blob Storage" tile

  4. En Storage account name (Nombre de la cuenta de almacenamiento), seleccione el nombre de la lista y, a continuación, seleccione Save (Guardar).

    Box for specifying the storage account name

Creación de un servicio vinculado de HDInsight a petición

  1. Seleccione el botón + New (+ Nuevo) una vez más para crear otro servicio vinculado.

  2. En la ventana New Linked Service (Nuevo servicio vinculado), seleccione Compute>Azure HDInsight y seleccione Continue (Continuar).

    Selecting the "Azure HDInsight" tile

  3. En la ventana New Linked Service (Nuevo servicio vinculado), realice los pasos siguientes:

    a. Escriba AzureHDInsightLinkedService como nombre.

    b. Confirme que On-demand HDInsight (HDInsight a petición) está seleccionado en tipo.

    c. Seleccione AzureBlobStorage1 como Servicio vinculado de Azure Storage. Este servicio vinculado lo creó anteriormente. Si usó un nombre diferente, especifique el nombre correcto aquí.

    d. Seleccione spark como tipo de clúster.

    e. Escriba el identificador de la entidad de servicio que tenga permiso para crear un clúster de HDInsight.

    Esta entidad de servicio debe ser miembro del rol de colaborador de la suscripción o del grupo de recursos en el que se crea el clúster. Para más información, consulte Creación de una aplicación de Microsoft Entra y una entidad de servicio con acceso a los recursos. El Id. de entidad de servicio es equivalente al Id. de aplicación y una Clave de entidad de servicio es equivalente al valor de un Secreto de cliente.

    f. Escriba la clave de la entidad de servicio.

    g. Seleccione el mismo grupo de recursos que utilizó al crear la factoría de datos en Grupo de recursos. El clúster de Spark se crea en este grupo de recursos.

    h. Expanda OS type (Tipo de SO).

    i. Escriba un nombre para Cluster user name (Nombre de usuario del clúster).

    j. Escriba el valor de Cluster password (Contraseña del clúster) para el usuario.

    k. Seleccione Finalizar.

    HDInsight linked service settings

Nota:

Azure HDInsight limita el número total de núcleos que se pueden utilizar en cada región de Azure que admite. Para el servicio vinculado de HDInsight a petición, el clúster de HDInsight se creará en la misma ubicación de Azure Storage que se usó como almacenamiento principal. Asegúrese de que dispone de suficientes cuotas de núcleo para que el clúster se cree correctamente. Para obtener más información, consulte Configuración de clústeres en HDInsight con Hadoop, Spark, Kafka, etc.

Crear una canalización

  1. Seleccione el botón + (Más) y, después, seleccione Canalización en el menú.

    Buttons for creating a new pipeline

  2. En el cuadro de herramientas Activities (Actividades), expanda HDInsight. Arrastre la actividad de Spark del cuadro de herramientas Activities (Actividades) a la superficie del diseñador de canalizaciones.

    Dragging the Spark activity

  3. En las propiedades de la ventana de la actividad de Spark de la parte inferior, realice los pasos siguientes:

    a. Vaya a la pestaña HDI Cluster (Clúster de HDI).

    b. Seleccione el servicio AzureHDInsightLinkedService que creó en el procedimiento anterior.

    Specifying the HDInsight linked service

  4. Cambie a la pestaña Script/Jar y complete los pasos siguientes:

    a. Seleccione AzureBlobStorage1 como servicio vinculado de trabajo.

    b. Seleccione Browse Storage (Examinar almacenamiento).

    Specifying the Spark script on the "Script/Jar" tab

    c. Vaya a la carpeta adftutorial/spark/script , seleccione WordCount_Spark.py y seleccione Finalizar.

  5. Para comprobar la canalización, seleccione el botón Validate (Comprobar) en la barra de herramientas. Seleccione el botón >> (flecha derecha) para cerrar la ventana de comprobación.

    "Validate" button

  6. Seleccione Publish All (Publicar todo). La interfaz de usuario de Data Factory permite publicar entidades (servicios vinculados y canalizaciones) en el servicio Azure Data Factory.

    "Publish All" button

Desencadenamiento de una ejecución de la canalización

Seleccione Add Trigger (Agregar desencadenador) en la barra de herramientas y, después, seleccione Trigger Now (Desencadenar ahora).

"Trigger" and "Trigger Now" buttons

Supervisión de la ejecución de la canalización

  1. Vaya a la pestaña Monitor (Supervisar). Confirme que ve una ejecución de canalización. Se tardan veinte minutos aproximadamente en crear un clúster de Spark.

  2. Seleccione Actualizar periódicamente para comprobar el estado de la ejecución de canalización.

    Tab for monitoring pipeline runs, with "Refresh" button

  3. Para ver las ejecuciones de actividad asociadas con la ejecución de esta canalización, seleccione View Activity Runs (Ver ejecuciones de actividad) de la columna Actions (Acciones).

    Pipeline run status

    Puede volver a la vista de ejecuciones de canalización. Para ello seleccione el vínculo All Pipeline Runs (Todas las ejecuciones de canalizaciones) en la parte superior.

    "Activity Runs" view

Comprobación del resultado

Compruebe que se crea el archivo de salida en la carpeta spark/otuputfiles/wordcount del contenedor adftutorial.

Location of the output file

El archivo debe incluir todas las palabras del archivo de texto de entrada y el número de veces que cada palabra aparecía en el archivo. Por ejemplo:

(u'This', 1)
(u'a', 1)
(u'is', 1)
(u'test', 1)
(u'file', 1)

La canalización de este ejemplo permite transformar datos mediante una actividad de Spark y un servicio vinculado de HDInsight a petición. Ha aprendido a:

  • Creación de una factoría de datos.
  • Creación de una canalización que use una actividad de Spark.
  • Desencadenamiento de una ejecución de la canalización
  • Supervisión de la ejecución de la canalización

Pase al siguiente tutorial para obtener información sobre cómo puede transformar datos mediante la ejecución del script de Hive en un clúster de Azure HDInsight que se encuentra en una red virtual: