Tutorial: Creación de una aplicación Apache Spark con IntelliJ mediante un área de trabajo de Synapse

En este tutorial se muestra cómo usar el complemento de Azure Toolkit for IntelliJ para desarrollar aplicaciones Apache Spark escritas en Scala y enviarlas a continuación a un grupo de Apache Spark sin servidor directamente desde el entorno de desarrollo integrado (IDE) de IntelliJ. Puede usar el complemento de varias maneras:

  • Desarrollar y enviar una aplicación Spark en Scala a un grupo de Spark.
  • Acceder a los recursos de los grupos de Spark.
  • Desarrollar y ejecutar localmente una aplicación Spark en Scala.

En este tutorial, aprenderá a:

  • Usar el complemento Azure Toolkit for IntelliJ
  • Desarrollar aplicaciones de Apache Spark
  • Envío de una aplicación a grupos de Spark

Requisitos previos

Creación de una aplicación Spark en Scala para un grupo de Spark

  1. Inicie IntelliJ IDEA y seleccione Create New Project (Crear proyecto) para abrir la ventana New Project (Nuevo proyecto).

  2. Seleccione Azure Spark/HDInsight en el panel izquierdo.

  3. Seleccione Spark Project with Samples (Scala) (Proyecto de Spark con ejemplos [Scala]) en la ventana principal.

  4. En la lista desplegable Build tool (Herramienta de compilación), seleccione uno de los siguientes tipos:

    • Maven: para agregar compatibilidad con el asistente para la creación de proyectos de Scala.
    • SBT para administrar las dependencias y compilar el proyecto de Scala.

    IntelliJ IDEA New Project dialog box

  5. Seleccione Siguiente.

  6. En la ventana New Project (Nuevo proyecto), proporcione la siguiente información:

    Propiedad Descripción
    Nombre de proyecto Escriba un nombre. En este tutorial se usa myApp.
    Ubicación del proyecto Escriba la ubicación deseada para guardar el proyecto.
    Project SDK (SDK del proyecto) Podría quedarse en blanco la primera vez que se usa IDEA. Seleccione New... (Nuevo...) y vaya a su JDK.
    Versión de Spark El asistente de creación integra la versión adecuada de los SDK de Spark y Scala. Aquí puedes elegir la versión de Spark que necesites.

    Selecting the Apache Spark SDK

  7. Seleccione Finalizar. El proyecto puede tardar unos minutos en estar disponible.

  8. El proyecto de Spark crea automáticamente un artefacto. Para ver el artefacto, haga lo siguiente:

    a. En la barra de menús, vaya a Archivo>Estructura del proyecto... .

    b. En la ventana Estructura del proyecto, seleccione Artefactos.

    c. Seleccione Cancelar después de ver el artefacto.

    Artifact info in the dialog box

  9. Busque LogQuery en myApp>src>main>scala>sample>LogQuery. En este tutorial se usa LogQuery para la ejecución.

    Commands for creating a Scala class from Project

Conexión a los grupos de Spark

Inicie sesión en la suscripción de Azure para conectarse a los grupos de Spark.

Inicie sesión en la suscripción de Azure

  1. En la barra de menús, vaya a Ver>Ventanas de herramientas>Azure Explorer.

    IntelliJ IDEA shows Azure Explorer

  2. En Azure Explorer, haga clic con el botón derecho en el nodo Azure y después seleccione Iniciar sesión.

    IntelliJ IDEA explorer right-click Azure

  3. En el cuadro de diálogo de inicio de sesión en Azure, seleccione Inicio de sesión del dispositivo y, a continuación, Iniciar sesión.

    IntelliJ IDEA Azure sign-in

  4. En el cuadro de diálogo Inicio de sesión del dispositivo de Azure, seleccione Copiar y abrir.

    IntelliJ IDEA Azure device login

  5. En la interfaz del explorador, pegue el código y, a continuación, seleccione Siguiente.

    Microsoft enters code dialog for HDI

  6. Escriba sus credenciales de Azure y, a continuación, cierre el explorador.

    Microsoft enters e-mail dialog for HDI

  7. Cuando haya iniciado sesión, en el cuadro de diálogo Select Subscriptions (Seleccionar suscripciones) se enumeran todas las suscripciones de Azure asociadas a las credenciales. Seleccione la suscripción y, a continuación, elija Seleccionar.

    The Select Subscriptions dialog box

  8. En Azure Explorer, expanda Apache Spark en Synapse para ver las áreas de trabajo de las suscripciones.

    IntelliJ IDEA Azure Explorer main view

  9. Para ver los grupos de Spark, puede expandir un área de trabajo.

    Azure Explorer storage accounts

Ejecución remota de una aplicación Spark en Scala en un grupo de Spark

Después de crear una aplicación en Scala, puede ejecutarla de forma remota.

  1. Seleccione el icono para abrir la ventana Configuraciones de ejecución/depuración.

    The Submit Spark Application to HDInsight command 1

  2. En el ventana de diálogo Configuraciones de ejecución/depuración, seleccione + y, a continuación, elija Apache Spark en Synapse.

    The Submit Spark Application to HDInsight command 2

  3. En la ventana Configuraciones de ejecución/depuración, proporcione los valores siguientes y, a continuación, seleccione Aceptar:

    Propiedad Value
    Grupos de Spark Seleccione los grupos de Spark en los que quiere ejecutar la aplicación.
    Seleccione un artefacto para enviarlo Deje la configuración predeterminada.
    Nombre de clase principal el valor predeterminado es la clase principal del archivo seleccionado. Puede cambiar la clase si selecciona los puntos suspensivos ( ... ) y elige otra clase.
    Configuraciones del trabajo Puede cambiar las claves y valores predeterminados. Para más información, consulte API de REST de Apache Livy.
    Argumentos de la línea de comandos Puede especificar los argumentos divididos por un espacio para la clase principal, si es necesario.
    Archivos jar a los que se hace referencia y archivos a los que se hace referencia puede escribir las rutas de acceso de los archivos y los Jar a los que se hace referencia, si los hubiera. También puede examinar archivos en el sistema de archivos virtual de Azure, que actualmente solo admite el clúster de ADLS Gen2. Para obtener más información: Configuración de Apache Spark y Cómo cargar recursos en el clúster.
    Almacenamiento de carga del trabajo Expanda para mostrar opciones adicionales.
    Tipo de almacenamiento Seleccione Use Azure Blob to upload (Usar Azure Blob para cargar) o Use cluster default storage account to upload (Usar la cuenta de almacenamiento predeterminada del clúster para cargar).
    Cuenta de almacenamiento Escriba su cuenta de Storage.
    Clave de almacenamiento Escriba su clave de almacenamiento.
    Contenedor de almacenamiento Seleccione su contenedor de almacenamiento en la lista desplegable una vez que se hayan escrito Cuenta de Storage y Clave de almacenamiento.

    The Spark Submission dialog box 1

  4. Seleccione el icono SparkJobRun para enviar el proyecto al grupo de Spark seleccionado. La pestaña Remote Spark Job in Cluster (Trabajo de Spark remoto en clúster) muestra el progreso de la ejecución del trabajo en la parte inferior. Puede detener la aplicación si selecciona el botón rojo.

    Apache Spark Submission window

    The Spark Submission dialog box 2

Ejecución/depuración local de aplicaciones Apache Spark

Puede seguir las instrucciones siguientes para configurar la ejecución local y la depuración local para el trabajo de Apache Spark.

Escenario 1: Ejecución local

  1. Abra el cuadro de diálogo Configuraciones de ejecución/depuración y seleccione el signo más (+). A continuación, seleccione la opción Apache Spark en Synapse. Escriba la información de Nombre y Nombre de clase principal para guardar.

    Intellij Run debug configurations local run 1

    • Las variables de entorno y la ubicación de WinUtils.exe son solo para los usuarios de Windows.
    • Variables de entorno: la variable de entorno del sistema se puede detectar automáticamente si se ha establecido antes y no es necesario agregarla manualmente.
    • Ubicación de WinUtils.exe: para especificar la ubicación de WinUtils, seleccione el icono de carpeta de la derecha.
  2. A continuación, seleccione el botón de reproducción local.

    Intellij Run debug configurations local run 2

  3. Una vez completada la ejecución local, si el script incluye una salida, puede comprobar el archivo de salida desde data>default.

    Intellij Project local run result 1

Escenario 2: Depuración local

  1. Abra el script LogQuery y establezca puntos de interrupción.

  2. Seleccione el icono Depuración local para realizar la depuración local.

    Intellij Project local run result 2

Acceso y administración del área de trabajo de Synapse

Puede realizar diferentes operaciones en Azure Explorer dentro de Azure Toolkit for IntelliJ. En la barra de menús, vaya a Ver>Ventanas de herramientas>Azure Explorer.

Inicio del área de trabajo

  1. En Azure Explorer, vaya a Apache Spark en Synapse y, a continuación, expándalo.

    IntelliJ IDEA Azure Explorer main view

  2. Haga clic con el botón derecho en un área de trabajo y, a continuación, seleccione Iniciar área de trabajo, se abrirá el sitio web.

    Spark Job View Application details 1

    Spark Job View Application details 2

Consola de Spark

Puede ejecutar la consola local de Spark (Scala) o la consola de sesión interactiva de Spark Livy (Scala).

Consola local de Spark (Scala)

Asegúrese de que cumple el requisito previo de WINUTILS.EXE.

  1. En la barra de menús, vaya a Ejecutar>Editar configuraciones...

  2. En la ventana Configuraciones de ejecución/depuración, en el panel izquierdo, vaya a Apache Spark en Synapse>[Spark en Synapse] myApp.

  3. En la ventana principal, seleccione la pestaña Ejecutar de forma local.

  4. Proporcione los valores siguientes y seleccione Aceptar:

    Propiedad Value
    Variables de entorno Asegúrese de que el valor de HADOOP_HOME sea correcto.
    Ubicación de WINUTILS.exe Asegúrese de que la ruta de acceso sea correcta.

    Local Console Set Configuration

  5. En el proyecto, vaya a myApp>src>main>scala>myApp.

  6. En la barra de menús, vaya a Herramientas>Consola de Spark>Ejecutar consola local de Spark (Scala) .

  7. Pueden aparecer dos cuadros de diálogo para preguntarle si quiere corregir automáticamente las dependencias. Si es así, seleccione Autocorrección.

    IntelliJ IDEA Spark Auto Fix dialog1

    IntelliJ IDEA Spark Auto Fix dialog2

  8. El aspecto de la consola debería ser similar al de la siguiente imagen. En la ventana de la consola, escriba sc.appName y presione CTRL + Entrar. Se muestra el resultado. Para detener la consola local, seleccione el botón rojo.

    IntelliJ IDEA local console result

Consola de sesión interactiva de Spark Livy (Scala)

Solo se admite en IntelliJ 2018.2 y 2018.3.

  1. En la barra de menús, vaya a Ejecutar>Editar configuraciones...

  2. En la ventana Configuraciones de ejecución/depuración, en el panel izquierdo, vaya a Apache Spark en Synapse>[Spark en Synapse] myApp.

  3. En la ventana principal, seleccione la pestaña Remotely Run in Cluster (Ejecutar en clúster de forma remota).

  4. Proporcione los valores siguientes y seleccione Aceptar:

    Propiedad Value
    Nombre de clase principal Seleccione el nombre de clase Main.
    Grupos de Spark Seleccione los grupos de Spark en los que quiere ejecutar la aplicación.

    Interactive Console Set Configuration

  5. En el proyecto, vaya a myApp>src>main>scala>myApp.

  6. En la barra de menús, vaya a Herramientas>Consola de Spark>Ejecutar consola de sesión interactiva de Spark Livy (Scala) .

  7. El aspecto de la consola debería ser similar al de la siguiente imagen. En la ventana de la consola, escriba sc.appName y presione CTRL + Entrar. Se muestra el resultado. Para detener la consola local, seleccione el botón rojo.

    IntelliJ IDEA Interactive Console Result

Envío de la selección a la consola de Spark

Puede ver el resultado del script si envía algún código a la consola local o la consola de sesión interactiva de Livy (Scala). Para hacerlo, puede resaltar parte del código en el archivo de Scala y hacer clic con el botón derecho en Enviar selección a consola de Spark. El código seleccionado se envía a la consola y se ejecuta. El resultado se muestra después del código en la consola. La consola comprobará si hay errores.

Send Selection to Spark console

Pasos siguientes