Las tareas de Spark on MaxCompute se ejecutan en local or cluster mode. En DataWorks, es posible programar tareas sin conexión de Spark on MaxCompute en modo clúster e integrarlas con otros tipos de nodos.
Descripción general
Spark on MaxCompute es un servicio de cómputo de MaxCompute compatible con Spark de código abierto. Proporciona un framework de cómputo de Spark sobre recursos de cómputo unificados y un sistema de permisos para conjuntos de datos. En DataWorks, utilice un nodo de MaxCompute Spark para programar y ejecutar tareas de Spark on MaxCompute, así como para integrarlas con otras tareas.
Spark on MaxCompute admite el desarrollo en Java, Scala y Python. Además, ejecuta las tareas en modo local o en modo clúster. En DataWorks, las tareas sin conexión de Spark on MaxCompute se ejecutan en modo clúster. Para obtener más información sobre los modos de ejecución, consulte Run modes.
Límites
Si se reporta un error al enviar un nodo ODPS Spark que utiliza la versión Spark 3.X, adquiera un serverless resource group. Para obtener más información, consulte Create and use a serverless resource group.
Preparativos
Un nodo de MaxCompute Spark es compatible con Java/Scala y Python. Los pasos de desarrollo y el proceso de configuración varían según el lenguaje.
Java/Scala
Antes de ejecutar código Java o Scala en un nodo ODPS Spark, desarrolle la tarea de Spark on MaxCompute en su computadora local y cargue el código en DataWorks como un recurso de MaxCompute. Siga estos pasos:
-
Prepare un entorno de desarrollo.
Prepare el entorno de desarrollo donde ejecutará la tarea de Spark on MaxCompute, de acuerdo con el sistema operativo que utilice. Para obtener más información, consulte Set up a Linux development environment o Set up a Windows development environment.
-
Desarrolle el código en Java o Scala.
Antes de ejecutar código Java o Scala en un nodo ODPS Spark, complete el desarrollo del código para la tarea de Spark on MaxCompute en su computadora local o en el entorno preparado. Se recomienda utilizar la sample project template proporcionada por Spark on MaxCompute.
-
Empaquete el código desarrollado y cárguelo en DataWorks.
Una vez desarrollado el código, empaquételo y cargue el paquete en DataWorks como un recurso de MaxCompute. Para obtener más información, consulte Create and use MaxCompute resources.
Lenguaje de programación: Python (uso del entorno predeterminado de Python)
Para desarrollar una tarea de PySpark, escriba el código en un recurso de Python directamente en DataWorks y ejecútelo mediante un nodo ODPS Spark. Para obtener más información, consulte Create and use MaxCompute resources y Develop a Spark on MaxCompute application by using PySpark.
Utilice el entorno predeterminado de Python que proporciona DataWorks para desarrollar el código. Si los paquetes de terceros compatibles con este entorno no cubren los requisitos de la tarea de PySpark, consulte la sección Lenguaje de programación: Python (uso de un entorno personalizado de Python) para preparar un entorno a la medida. También puede usar PyODPS 2 nodes o PyODPS 3 nodes, ya que admiten más recursos de Python durante el desarrollo.
Lenguaje de programación: Python (uso de un entorno personalizado de Python)
Si el entorno predeterminado de Python no cumple con sus requerimientos, prepare un entorno personalizado con los siguientes pasos.
-
Prepare un entorno de Python en su computadora local.
Consulte Versiones de Python para PySpark y dependencias compatibles para configurar el entorno de Python según sus necesidades de negocio.
-
Empaquete el código del entorno de Python y cargue el paquete en DataWorks.
Empaquete el código del entorno de Python en formato ZIP y cargue el paquete en DataWorks como un recurso de MaxCompute. De esta forma, podrá ejecutar la tarea de Spark on MaxCompute dentro de dicho entorno. Para obtener más información, consulte Create and use MaxCompute resources.
Descripción de los parámetros
DataWorks ejecuta las tareas sin conexión de Spark on MaxCompute en modo clúster. Especifique el punto de entrada de su aplicación en el método main. La tarea finaliza cuando termina la ejecución del método main, con un estado Success o Fail. Agregue también cada configuración del archivo spark-defaults.conf de manera individual al nodo de MaxCompute Spark; por ejemplo, el número de instancias de executor, el tamaño de memoria y la configuración spark.hadoop.odps.runtime.end.point.
No es necesario cargar el archivo spark-defaults.conf. En su lugar, agregue cada configuración de dicho archivo spark-defaults.conf como un elemento de configuración individual del nodo de MaxCompute Spark.
|
Parámetro |
Descripción |
Comando spark-submit |
|
Spark Version |
La versión de Spark. Valores válidos: Spark1.x, Spark2.x y Spark3.x. Nota
Si se reporta un error al enviar un nodo ODPS Spark que utiliza la versión Spark 3.X, adquiera un serverless resource group. Para obtener más información, consulte Create and use a serverless resource group. |
Ninguna |
|
Language |
Seleccione Java/Scala o Python según el lenguaje de desarrollo de su tarea de Spark on MaxCompute. |
Ninguna |
|
Main JAR Resource |
El archivo principal de recurso JAR o Python. Cargue previamente en DataWorks el archivo de recurso obligatorio y envíelo. Para obtener más información, consulte Create and use MaxCompute resources. |
|
|
Configuration Item |
Los elementos de configuración obligatorios para enviar la tarea de Spark on MaxCompute.
|
|
|
Main Class |
El nombre de la clase principal. Este parámetro es obligatorio cuando Language se establece en |
|
|
Parameter |
Agregue los argumentos de su aplicación según sea necesario, separados por espacios. DataWorks admite parámetros de programación con el formato ${variable_name}. Después de configurar las variables en el campo Parameter, asígneles valores en el panel de navegación derecho, en . Nota
Para conocer los formatos admitidos de los parámetros de programación, consulte Supported formats of scheduling parameters. |
|
|
Otros recursos |
También se admiten a continuación los siguientes tipos de recursos. Seleccione los que requiera según sus necesidades de negocio.
Cargue previamente en DataWorks el archivo de recurso obligatorio y envíelo. Para obtener más información, consulte Create and use MaxCompute resources. |
Comandos para los distintos tipos de recursos:
|
Ejemplo básico de edición de código
En el siguiente ejemplo se utiliza un nodo ODPS Spark para desarrollar una tarea de Spark on MaxCompute. En este caso, la tarea determina si una cadena de texto se puede convertir en dígitos.
-
Cree un recurso.
-
En la página DataStudio, cree un nuevo recurso de Python y asígnele el nombre spark_is_number.py. Para obtener más información, consulte Create and use MaxCompute resources. Utilice el siguiente código:
# -*- coding: utf-8 -*- import sys from pyspark.sql import SparkSession try: # for python 2 reload(sys) sys.setdefaultencoding('utf8') except: # python 3 not needed pass if __name__ == '__main__': spark = SparkSession.builder\ .appName("spark sql")\ .config("spark.sql.broadcastTimeout", 20 * 60)\ .config("spark.sql.crossJoin.enabled", True)\ .config("odps.exec.dynamic.partition.mode", "nonstrict")\ .config("spark.sql.catalogImplementation", "odps")\ .getOrCreate() def is_number(s): try: float(s) return True except ValueError: pass try: import unicodedata unicodedata.numeric(s) return True except (TypeError, ValueError): pass return False print(is_number('foo')) print(is_number('1')) print(is_number('1.3')) print(is_number('-1.37')) print(is_number('1e3')) Guarde y envíe el recurso.
-
-
En el nodo ODPS Spark creado, configure los parámetros y las propiedades de programación de la tarea de MaxCompute Spark con base en la sección Descriptions of parameters de este tema. Luego, guarde y envíe el nodo.
Parámetro
Descripción
Spark Version
Seleccione Spark2.x.
Language
Seleccione Python.
Main Python Resource
El recurso de Python spark_is_number.py que creó.
-
Vaya a Operation Center en el entorno de desarrollo para rellenar datos del nodo ODPS Spark. Para obtener más información, consulte Backfill data and view data backfill instances (new version).
NotaDataWorks no ofrece puntos de entrada para ejecutar nodos ODPS Spark en DataStudio. Estos nodos deben ejecutarse en Operation Center dentro del entorno de desarrollo.
-
Consulte el resultado.
Cuando la instancia de relleno de datos se ejecute correctamente, haga clic en tracking URL en los registros generados para consultar el resultado. Se devuelve la siguiente información:
False True True True True
Ejemplos avanzados de edición de código
Para desarrollar con Spark on MaxCompute en otros escenarios, consulte los siguientes temas:
Pasos siguientes
Una vez desarrollada la tarea de Spark on MaxCompute, realice las siguientes operaciones:
Configuración de programación: establezca propiedades de programación periódica, como los ajustes de reejecución y las dependencias, para las tareas que se ejecutan de forma regular. Overview of task scheduling configuration.
Depuración de tareas: pruebe y ejecute el código del nodo para comprobar su lógica. Task debugging process.
Despliegue de tareas: despliegue los nodos para que se ejecuten periódicamente según su configuración de programación. Deploy tasks.
Enable the system to diagnose Spark tasks: MaxCompute proporciona la herramienta Logview y Spark Web UI. Consulte los registros de las tareas de Spark para comprobar si se enviaron y ejecutaron según lo previsto.