Envío de trabajos de Spark en un clúster de macrodatos de SQL Server en Visual Studio CodeSubmit Spark jobs on SQL Server big data cluster in Visual Studio Code

Obtenga información sobre cómo usar Spark & Hive Tools para Visual Studio Code para crear y enviar scripts de PySpark para Apache Spark; primero, describiremos cómo instalar Spark & Hive Tools en Visual Studio Code y, después, explicaremos cómo enviar trabajos a Spark.Learn how to use Spark & Hive Tools for Visual Studio Code to create and submit PySpark scripts for Apache Spark, first we'll describe how to install the Spark & Hive tools in Visual Studio Code and then we'll walk through how to submit jobs to Spark.

Spark & Hive Tools se puede instalar en las plataformas compatibles con Visual Studio Code, que son Windows, Linux y macOS.Spark & Hive Tools can be installed on platforms that are supported by Visual Studio Code, which include Windows, Linux, and macOS. A continuación, encontrará los requisitos previos para las diferentes plataformas.Below you'll find the prerequisites for different platforms.

PrerrequisitosPrerequisites

Los elementos siguientes son necesarios para completar los pasos indicados en este artículo:The following items are required for completing the steps in this article:

Instalar Spark & Hive ToolsInstall Spark & Hive Tools

Después de completar los requisitos previos, puede instalar Spark & Hive Tools para Visual Studio Code.After you have completed the prerequisites, you can install Spark & Hive Tools for Visual Studio Code. Siga este procedimiento para instalar Spark & Hive Tools:Complete the following steps to install Spark & Hive Tools:

  1. Abra Visual Studio Code.Open Visual Studio Code.

  2. En la barra de menús, vaya a Ver > Extensiones.From the menu bar, navigate to View > Extensions.

  3. En el cuadro de búsqueda, escriba Spark & Hive.In the search box, enter Spark & Hive.

  4. En los resultados de la búsqueda, seleccione Spark & Hive Tools y, después, seleccione Instalar.Select Spark & Hive Tools from the search results, and then select Install.

    Instalar la extensión

  5. Si es necesario, vuelva a cargar la aplicación.Reload when needed.

Abrir la carpeta de trabajoOpen work folder

Siga este procedimiento para abrir una carpeta de trabajo y crear un archivo en Visual Studio Code:Complete the following steps to open a work folder, and create a file in Visual Studio Code:

  1. En la barra de menús, vaya a Archivo > Abrir carpeta… > C:\SQLBDC\SQLBDCexample y, después, haga clic en el botón Seleccionar carpeta.From the menu bar, navigate to File > Open Folder... > C:\SQLBDC\SQLBDCexample, then select the Select Folder button. La carpeta se mostrará en la vista Explorador de la parte izquierda.The folder appears in the Explorer view on the left.

  2. En la vista Explorador, seleccione la carpeta SQLBDCexample y, después, haga clic en el icono de Nuevo archivo junto a la carpeta de trabajo.From the Explorer view, select the folder, SQLBDCexample, and then the New File icon next to the work folder.

    Nuevo archivo

  3. Asigne un nombre al nuevo archivo con la extensión de archivo .py (script de Spark).Name the new file with the .py (Spark script) file extension. En este ejemplo, se usa HelloWorld.py.This example uses HelloWorld.py.

  4. Copie y pegue el código siguiente en el archivo de script:Copy and paste the following code into the script file:

     import sys
     from operator import add
     from pyspark.sql import SparkSession, Row
    
     spark = SparkSession\
         .builder\
         .appName("PythonWordCount")\
         .getOrCreate()
    
     data = [Row(col1='pyspark and spark', col2=1), Row(col1='pyspark', col2=2), Row(col1='spark vs hadoop', col2=2), Row(col1='spark', col2=2), Row(col1='hadoop', col2=2)]
     df = spark.createDataFrame(data)
     lines = df.rdd.map(lambda r: r[0])
    
     counters = lines.flatMap(lambda x: x.split(' ')) \
         .map(lambda x: (x, 1)) \
         .reduceByKey(add)
    
     output = counters.collect()
     sortedCollection = sorted(output, key = lambda r: r[1], reverse = True)
    
     for (word, count) in sortedCollection:
         print("%s: %i" % (word, count))
    

Antes de enviar scripts a los clústeres desde Visual Studio Code, necesita vincular un clúster de macrodatos de SQL Server.Before you can submit scripts to your clusters from Visual Studio Code, you need to link a SQL Server big data cluster.

  1. En la barra de menús, vaya a Ver > Paleta de comandos… y escriba Spark/Hive: Link a Cluster (vincular un clúster).From the menu bar navigate to View > Command Palette..., and enter Spark / Hive: Link a Cluster.

    comando para vincular un clúster

  2. Seleccione el tipo de clúster vinculado Macrodatos de SQL Server.Select linked cluster type SQL Server Big Data.

  3. Especifique el punto de conexión de macrodatos de SQL Server.Enter SQL Server Big Data endpoint.

  4. Especifique el nombre de usuario del clúster de macrodatos de SQL Server.Enter SQL Server Big Data Cluster user name.

  5. Escriba la contraseña del administrador de usuarios.Enter password for user admin.

  6. Establezca el nombre para mostrar del clúster (opcional).Set the display name of the cluster (Optional).

  7. Muestre una lista de los clústeres y revise la vista SALIDA.List clusters, review OUTPUT view for verification.

Lista de clústeresList clusters

  1. En la barra de menús, vaya a Ver > Paleta de comandos… y escriba Spark/Hive: List Cluster (lista de clústeres).From the menu bar navigate to View > Command Palette..., and enter Spark / Hive: List Cluster.

  2. Revise la ventana de SALIDA.Review the OUTPUT view. En la vista, se muestran los clústeres vinculados.The view will show your linked cluster(s).

    Establecer una configuración de clúster predeterminado

Establecer un clúster predeterminadoSet default cluster

  1. Vuelva a abrir la carpeta SQLBDCexample creada anteriormente (si está cerrada).Re-Open the folder SQLBDCexample created earlier if closed.

  2. Seleccione el archivo HelloWorld.py que ha creado anteriormente para abrirlo en el editor de scripts.Select the file HelloWorld.py created earlier and it will open in the script editor.

  3. Si aún no lo ha hecho, vincule un clúster.Link a cluster if you haven't yet done so.

  4. Haga clic con el botón derecho en el editor de scripts y seleccione Spark/Hive: Set Default Cluster (establecer clúster predeterminado).Right-click the script editor, and select Spark / Hive: Set Default Cluster.

  5. Seleccione un clúster como el clúster predeterminado para el archivo de script actual.Select a cluster as the default cluster for the current script file. Las herramientas actualizan automáticamente el archivo de configuración .VSCode\settings.json.The tools automatically update the configuration file .VSCode\settings.json.

    Establecer la configuración del clúster predeterminado

Enviar consultas de PySpark interactivasSubmit interactive PySpark queries

Para enviar consultas de PySpark interactivas, siga este procedimiento:You can submit interactive PySpark queries by following the steps below:

  1. Vuelva a abrir la carpeta SQLBDCexample creada anteriormente (si está cerrada).Reopen the folder SQLBDCexample created earlier if closed.

  2. Seleccione el archivo HelloWorld.py que ha creado anteriormente para abrirlo en el editor de scripts.Select the file HelloWorld.py created earlier and it will open in the script editor.

  3. Si aún no lo ha hecho, vincule un clúster.Link a cluster if you haven't yet done so.

  4. Seleccione todo el código, haga clic con el botón derecho en el editor de scripts y seleccione Spark: PySpark Interactive (PySpark interactivo) para enviar la consulta, o bien use el método abreviado de teclado Ctrl + Alt + I.Choose all the code and right-click the script editor, select Spark: PySpark Interactive to submit the query, or use shortcut Ctrl + Alt + I.

    menú contextual de PySpark Interactive

  5. Si aún no ha especificado un clúster predeterminado, seleccione el clúster.Select the cluster if you haven't specified a default cluster. En un momento, los resultados de Python Interactive se mostrarán en una pestaña nueva. Las herramientas también le permiten enviar un bloque de código, en lugar de todo el archivo de script, mediante el menú contextual.After a few moments, the Python Interactive results appear in a new tab. The tools also allow you to submit a block of code instead of the whole script file using the context menu.

    ventana de Python Interactive de PySpark Interactive

  6. Escriba “%%info” y, después, presione Mayús + Entrar para ver la información del trabajo.Enter "%%info", and then press Shift + Enter to view job information. (Opcional)(Optional)

    ver la información del trabajo

    Nota

    Si la opción Python Extension Enabled (Extensión de Python habilitada) está desactivada en la configuración (de forma predeterminada, esta opción está activada), los resultados de la interacción de PySpark enviados se mostrarán en la ventana anterior.When Python Extension Enabled is unchecked in the settings (The default setting is checked), the submitted pyspark interaction results will use the old window.

    extensión de Python de PySpark Interactive deshabilitada

Enviar trabajo por lotes de PySparkSubmit PySpark batch job

  1. Vuelva a abrir la carpeta SQLBDCexample creada anteriormente (si está cerrada).Reopen the folder SQLBDCexample created earlier if closed.

  2. Seleccione el archivo HelloWorld.py que ha creado anteriormente para abrirlo en el editor de scripts.Select the file HelloWorld.py created earlier and it will open in the script editor.

  3. Si aún no lo ha hecho, vincule un clúster.Link a cluster if you haven't yet done so.

  4. Haga clic con el botón derecho en el editor de scripts y, después, seleccione Spark: PySpark Batch (lote de PySpark), o bien use el método abreviado de teclado Ctrl + Alt + H.Right-click the script editor, and then select Spark: PySpark Batch, or use shortcut Ctrl + Alt + H.

  5. Si aún no ha especificado un clúster predeterminado, seleccione el clúster.Select the cluster if you haven't specified a default cluster. Después de enviar trabajo de Python, los registros de envío se muestran en la ventana de SALIDA en Visual Studio Code.After you submit a Python job, submission logs appear in the OUTPUT window in Visual Studio Code. También se muestran la URL de la interfaz de usuario de Spark y la URL de la interfaz de usuario de Yarn.The Spark UI URL and Yarn UI URL are shown as well. Para realizar un seguimiento del estado del trabajo, puede abrir la URL en un explorador web.You can open the URL in a web browser to track the job status.

    Enviar el resultado de un trabajo de Python

Configuración de Apache LivyApache Livy configuration

Se admite la configuración de Apache Livy, que puede configurarse en el archivo .VSCode\settings.json de la carpeta del área de trabajo.Apache Livy configuration is supported, it can be set at the .VSCode\settings.json in the work space folder. En la actualidad, la configuración de Livy solo admite el script de Python.Currently, Livy configuration only supports Python script. Para obtener más información, vea Livy README (LÉAME de Livy).More details, see Livy README.

Cómo activar la configuración de LivyHow to trigger Livy configuration

Método 1Method 1

  1. En la barra de menús, vaya a Archivo > Preferencias > Configuración.From the menu bar, navigate to File > Preferences > Settings.
  2. En el cuadro de texto Configuración de búsqueda, escriba Envío de trabajo de HDInsight: configuración de Livy.In the Search settings text box enter HDInsight Job Sumission: Livy Conf.
  3. Seleccione Editar en settings.json para el resultado de la búsqueda relevante.Select Edit in settings.json for the relevant search result.

Método 2Method 2

Envíe un archivo; la carpeta .vscode se agregará automáticamente a la carpeta de trabajo.Submit a file, notice the .vscode folder is added automatically to the work folder. Para encontrar la configuración de Livy, haga clic en .vscode\settings.json.You can find the Livy configuration by clicking .vscode\settings.json.

  • Configuración del proyecto:The project settings:

    configuración de Livy

Nota

En el caso de las opciones driverMomory y executorMomry, establezca el valor con una unidad (por ejemplo, “1g” o “1024m”).For settings driverMomory and executorMomry, set the value with unit, for example 1g or 1024m.

Configuraciones de Livy admitidasSupported Livy configurations

POST /batchesPOST /batches

Cuerpo de la solicitudRequest body

namename descriptiondescription typetype
archivofile Archivo que contiene la aplicación que se ejecutaráFile containing the application to execute ruta (obligatorio)path (required)
proxyUserproxyUser Usuario que se suplantará al ejecutar el trabajoUser to impersonate when running the job stringstring
classNameclassName Clase principal de Java/Spark de la aplicaciónApplication Java/Spark main class stringstring
argsargs Argumentos de la línea de comandos para la aplicaciónCommand line arguments for the application lista de cadenaslist of strings
jarsjars Archivos jar que se usarán en esta sesiónjars to be used in this session Lista de cadenasList of string
pyFilespyFiles Archivos de Python que se usarán en esta sesiónPython files to be used in this session Lista de cadenasList of string
filesfiles Archivos que se usarán en esta sesiónfiles to be used in this session Lista de cadenasList of string
driverMemorydriverMemory Cantidad de memoria que se usará para el proceso del controladorAmount of memory to use for the driver process stringstring
driverCoresdriverCores Número de núcleos que se usarán para el proceso del controladorNumber of cores to use for the driver process intint
executorMemoryexecutorMemory Cantidad de memoria que se usará por proceso de ejecutorAmount of memory to use per executor process stringstring
executorCoresexecutorCores Número de núcleos que se usará para cada ejecutorNumber of cores to use for each executor intint
numExecutorsnumExecutors Número de ejecutores que se iniciarán para esta sesiónNumber of executors to launch for this session intint
archivesarchives Archivos que se usarán en esta sesiónArchives to be used in this session Lista de cadenasList of string
colaqueue Nombre de la cola de YARN al que se realizará el envíoThe name of the YARN queue to which submitted stringstring
namename Nombre de esta sesiónThe name of this session stringstring
confconf Propiedades de configuración de SparkSpark configuration properties Mapa de clave=valorMap of key=val

Cuerpo de la respuestaResponse Body

Objeto por lotes creado.The created batch object.

namename descriptiondescription typetype
idid Identificador de la sesiónThe session id intint
appIdappId Identificador de aplicación de esta sesiónThe application id of this session StringString
appInfoappInfo Información detallada sobre la aplicaciónThe detailed application info Mapa de clave=valorMap of key=val
loglog Líneas de registroThe log lines lista de cadenaslist of strings
statestate Estado del loteThe batch state stringstring

Nota

La configuración de Livy asignada se mostrará en el panel de resultados al enviar el script.The assigned Livy config will display in output pane when submit script.

Características adicionalesAdditional features

Spark & Hive para Visual Studio Code admite las características siguientes:Spark & Hive for Visual Studio Code supports the following features:

  • Autocompletar de IntelliSense.IntelliSense autocomplete. Se muestran sugerencias emergentes de palabras clave, métodos, variables, etc.Suggestions pop up for keyword, methods, variables, and so on. Se representan diferentes tipos de objetos con distintos iconos.Different icons represent different types of objects.

    Tipos de objetos de IntelliSense en Spark & Hive Tools para Visual Studio Code

  • Marcador de error de IntelliSense.IntelliSense error marker. El servicio de lenguaje subraya los errores de edición en el script de Hive.The language service underlines the editing errors for the Hive script.

  • Sintaxis resaltada.Syntax highlights. El servicio de lenguaje usa distintos colores para diferenciar variables, palabras clave, tipos de datos, funciones, etc.The language service uses different colors to differentiate variables, keywords, data type, functions, and so on.

    Sintaxis resaltada de Spark & Hive Tools para Visual Studio Code

  1. En la barra de menús, vaya a Ver > Paleta de comandos… y escriba Spark/Hive: desvincular un clúster.From the menu bar navigate to View > Command Palette..., and then enter Spark / Hive: Unlink a Cluster.

  2. Seleccione el clúster que quiera desvincular.Select cluster to unlink.

  3. Revise la vista SALIDA.Review OUTPUT view for verification.

Pasos siguientesNext steps

Para obtener más información sobre los clústeres de macrodatos de SQL Server y los escenarios relacionados, vea Clústeres de macrodatos de SQL ServerSQL Server Big Data Clusters.For more information on SQL Server big data cluster and related scenarios, See Clústeres de macrodatos de SQL ServerSQL Server Big Data Clusters.