Todos os produtos
Search
Central de documentação

MaxCompute:Desenvolver uma tarefa do MaxCompute Spark

Última atualização: Sep 22, 2026

Você pode executar tarefas do Spark on MaxCompute no local or cluster mode. No DataWorks, é possível agendar tarefas offline do Spark on MaxCompute no modo cluster e integrá-las a outros tipos de nó.

Visão geral

O Spark on MaxCompute é um service de computação do MaxCompute compatível com o Spark de open source. Ele fornece uma estrutura de computação Spark sobre recursos de computação unificados e um sistema de permissões de conjuntos de dados. No DataWorks, você pode usar um nó do MaxCompute Spark para agendar e executar tarefas do Spark on MaxCompute e integrá-las a outras tarefas.

O Spark on MaxCompute oferece suporte ao desenvolvimento em Java, Scala e Python, e executa tarefas no modo local ou no modo cluster. No DataWorks, as tarefas offline do Spark on MaxCompute são executadas no modo cluster. Para obter mais informações sobre os modos de execução, consulte modos de execução.

Limites

Se um erro for relatado ao enviar um nó ODPS Spark que usa a versão Spark 3.X, adquira um grupo de recursos serverless. Para obter mais informações, consulte crie e use um grupo de recursos serverless.

Preparativos

Um nó do MaxCompute Spark oferece suporte a Java/Scala e Python. As etapas de desenvolvimento e o processo de configuração diferem para cada linguagem.

Java/Scala

Antes de executar código Java ou Scala em um nó ODPS Spark, desenvolva a tarefa do Spark on MaxCompute na sua máquina local e faça o upload do código para o DataWorks como um recurso do MaxCompute. Por favor, execute as seguintes etapas:

  1. Prepare um ambiente de desenvolvimento.

    Prepare o ambiente de desenvolvimento no qual deseja executar uma tarefa do Spark on MaxCompute com base no sistema operacional utilizado. Para obter mais informações, consulte defina um ambiente de desenvolvimento Linux ou defina um ambiente de desenvolvimento Windows.

  2. Desenvolva o código Java ou Scala.

    Antes de executar código Java ou Scala em um nó ODPS Spark, conclua o desenvolvimento do código para uma tarefa do Spark on MaxCompute na sua máquina local ou no ambiente de desenvolvimento preparado. Recomendamos o uso do sample project template fornecido pelo Spark on MaxCompute.

  3. Empacote o código desenvolvido e faça o upload para o DataWorks.

    Após desenvolver o código, empacote-o e faça o upload do pacote para o DataWorks como um recurso do MaxCompute. Para obter mais informações, consulte crie e use recursos do MaxCompute.

Linguagem de programação: Python (Usar o ambiente Python padrão)

É possível desenvolver uma tarefa PySpark escrevendo código em um recurso Python online no DataWorks e executando-o por meio de um nó ODPS Spark. Para obter mais informações, consulte crie e use recursos do MaxCompute e Desenvolva um aplicativo Spark on MaxCompute usando PySpark.

Nota

Você pode usar o ambiente Python padrão fornecido pelo DataWorks para desenvolver código. Se os pacotes de terceiros suportados pelo ambiente Python padrão não atenderem aos requisitos da tarefa PySpark, consulte Linguagem de programação: Python (Usar um ambiente Python personalizado) para preparar um ambiente Python personalizado. Você também pode usar o nós PyODPS 2 ou o nós PyODPS 3, que oferecem suporte a mais recursos Python para o desenvolvimento.

Linguagem de programação: Python (Usar um ambiente Python personalizado)

Se o ambiente Python padrão não atender aos seus requisitos, prepare um ambiente Python personalizado executando as seguintes etapas.

  1. Prepare um ambiente Python na sua máquina local.

    consulte versões Python do PySpark e dependências suportadas para configurar um ambiente Python com base nos seus requisitos de negócios.

  2. Empacote o código do ambiente Python e faça o upload do pacote para o DataWorks.

    Empacote o código do ambiente Python no formato ZIP e faça o upload do pacote para o DataWorks como um recurso do MaxCompute. Dessa forma, você pode executar a tarefa do Spark on MaxCompute no ambiente. Para obter mais informações, consulte crie e use recursos do MaxCompute.

Descrições dos parâmetros

O DataWorks executa tarefas offline do Spark on MaxCompute no modo cluster. Especifique o ponto de entrada do seu aplicativo no método main. A tarefa termina quando a execução do método main é concluída, com um status de Success ou Fail. Adicione também cada configuração do arquivo spark-defaults.conf individualmente ao nó do MaxCompute Spark, como o número de instâncias de executor, o tamanho da memória e a configuração spark.hadoop.odps.runtime.end.point.

Nota

Não é necessário fazer o upload do arquivo spark-defaults.conf. Em vez disso, adicione cada configuração do arquivo spark-defaults.conf individualmente como um item de configuração para o nó do MaxCompute Spark.

Parâmetro

Descrição

Comando spark-submit

Spark Version

A versão do Spark. Valores válidos: Spark1.x, Spark2.x e Spark3.x.

Nota

Se um erro for relatado ao enviar um nó ODPS Spark que usa a versão Spark 3.X, adquira um grupo de recursos serverless. Para obter mais informações, consulte crie e use um grupo de recursos serverless.

Nenhum

Language

Selecione Java/Scala ou Python com base na linguagem de desenvolvimento da sua tarefa do Spark on MaxCompute.

Nenhum

Main JAR Resource

O arquivo de recurso JAR principal ou Python.

Faça o upload do arquivo de recurso necessário para o DataWorks e envie o arquivo de recurso antecipadamente. Para obter mais informações, consulte crie e use recursos do MaxCompute.

app jar or Python file

Configuration Item

Os itens de configuração necessários para enviar a tarefa do Spark on MaxCompute.

  • Não é necessário configurar spark.hadoop.odps.access.id (AccessKey ID), spark.hadoop.odps.access.key (AccessKey Secret) ou spark.hadoop.odps.end.point (endpoint). A plataforma injeta os valores do projeto atual do MaxCompute por padrão. Configure-os explicitamente para substituir os valores padrão.

  • Não é necessário fazer o upload de um arquivo spark-defaults.conf. Em vez disso, adicione cada configuração do arquivo spark-defaults.conf individualmente como um item de configuração para o nó do MaxCompute Spark, como o número de executors, o tamanho da memória e a configuração spark.hadoop.odps.runtime.end.point.

--conf PROP=VALUE

Main Class

O nome da classe principal. Este parâmetro é obrigatório quando o Language está definido como Java/Scala.

--class CLASS_NAME

Parameter

Adicione argumentos para o seu aplicativo conforme necessário, separados por espaços. O DataWorks oferece suporte a parâmetros de agendamento no formato ${variable_name}. Após configurar as variáveis no campo Parameter, atribua valores a elas no painel de navegação à direita em Scheduling Settings > Parameter.

Nota

Para obter informações sobre os formatos suportados de parâmetros de agendamento, consulte Formatos suportados de parâmetros de agendamento.

[app arguments]

Outros recursos

Os seguintes tipos de recursos também são suportados. Selecione os tipos de recursos com base nos seus requisitos de negócios.

  • Recurso JAR: Disponível apenas quando o Language é Java/Scala.

  • Recurso Python: Disponível apenas quando o Language é Python.

  • Recurso de arquivo

  • Recurso de arquivo compactado: Exibe apenas recursos compactados no formato ZIP.

Faça o upload do arquivo de recurso necessário para o DataWorks e envie o arquivo de recurso antecipadamente. Para obter mais informações, consulte crie e use recursos do MaxCompute.

Comandos para diferentes tipos de recursos:

  • --jars JARS

  • --py-files PY_FILES

  • --files FILES

  • --archives ARCHIVES

Exemplo simples de edição de código

O exemplo a seguir usa um nó ODPS Spark para desenvolver uma tarefa do Spark on MaxCompute. Neste exemplo, a tarefa determina se uma string pode ser convertida em dígitos.

  1. Crie um recurso.

    1. Na página DataStudio, crie um novo recurso Python e nomeie-o como spark_is_number.py. Para obter mais informações, consulte crie e use recursos do MaxCompute. Use o seguinte 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. Salve e envie o recurso.

  2. No nó ODPS Spark criado, configure os parâmetros e as propriedades de agendamento para a tarefa do MaxCompute Spark consultando a seção Descrições dos parâmetros neste tópico, e salve e envie o nó.

    Parâmetro

    Descrição

    Spark Version

    Selecione Spark2.x.

    Language

    Selecione Python.

    Main Python Resource

    O recurso Python spark_is_number.py que você criou.

  3. Acesse o Operation Center no ambiente de desenvolvimento para fazer o backfill de dados do nó ODPS Spark. Para obter mais informações, consulte Faça o backfill de dados e visualize instâncias de backfill de dados (nova versão).

    Nota

    O DataWorks não fornece pontos de entrada para executar nós ODPS Spark no DataStudio. Execute os nós ODPS Spark no Operation Center no ambiente de desenvolvimento.

  4. visualize o resultado.

    Após a execução bem-sucedida da instância de backfill de dados, clique em tracking URL nos logs de execução gerados para visualizar o resultado. As seguintes informações são retornadas:

    False
    True
    True
    True
    True

Exemplos avançados de edição de código

Para o desenvolvimento do Spark on MaxCompute em outros cenários, consulte os seguintes tópicos:

Próximos passos

Após desenvolver a tarefa do Spark on MaxCompute, você pode realizar as seguintes operações: