Todos los productos
Search
Centro de documentos

MaxCompute:Desarrollo de una tarea de MaxCompute Spark

Última actualización: Sep 22, 2026

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:

  1. 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.

  2. 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.

  3. 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.

Nota

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.

  1. 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.

  2. 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.

Nota

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.

app jar or Python file

Configuration Item

Los elementos de configuración obligatorios para enviar la tarea de Spark on MaxCompute.

  • No es necesario configurar spark.hadoop.odps.access.id (AccessKey ID), spark.hadoop.odps.access.key (AccessKey Secret) ni spark.hadoop.odps.end.point (endpoint). La plataforma inyecta automáticamente los valores del proyecto actual de MaxCompute. Configúrelos de forma explícita si necesita sobrescribir los valores predeterminados.

  • No es necesario cargar un archivo spark-defaults.conf. Agregue cada configuración de dicho archivo spark-defaults.conf como un elemento de configuración individual del nodo de MaxCompute Spark; por ejemplo, el número de executors, el tamaño de memoria y la configuración spark.hadoop.odps.runtime.end.point.

--conf PROP=VALUE

Main Class

El nombre de la clase principal. Este parámetro es obligatorio cuando Language se establece en Java/Scala.

--class CLASS_NAME

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 Scheduling Settings > Parameter.

Nota

Para conocer los formatos admitidos de los parámetros de programación, consulte Supported formats of scheduling parameters.

[app arguments]

Otros recursos

También se admiten a continuación los siguientes tipos de recursos. Seleccione los que requiera según sus necesidades de negocio.

  • Recurso JAR: disponible únicamente cuando Language es Java/Scala.

  • Recurso Python: disponible únicamente cuando Language es Python.

  • Recurso de archivo

  • Recurso de archivo comprimido: muestra solo los recursos comprimidos en formato ZIP.

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:

  • --jars JARS

  • --py-files PY_FILES

  • --files FILES

  • --archives ARCHIVES

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.

  1. Cree un recurso.

    1. 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'))
    2. Guarde y envíe el recurso.

  2. 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ó.

  3. 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).

    Nota

    DataWorks no ofrece puntos de entrada para ejecutar nodos ODPS Spark en DataStudio. Estos nodos deben ejecutarse en Operation Center dentro del entorno de desarrollo.

  4. 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.