Todos os produtos
Search
Central de documentação

MaxCompute:Desenvolver uma tarefa do MaxCompute Spark

Última atualização: Jul 20, 2026

As tarefas Spark on MaxCompute podem ser executadas em 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 open-source. Ele oferece um framework de computação Spark sobre recursos de computação unificados e um sistema de permissões de conjuntos de dados. No DataWorks, utilize um nó MaxCompute Spark para agendar e executar tarefas do Spark on MaxCompute, além de integrá-las a outras tarefas.

O Spark on MaxCompute suporta desenvolvimento em Java, Scala e Python, permitindo a execução de 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 Run modes.

Limites

Caso ocorra um erro ao enviar um nó ODPS Spark que utiliza a versão Spark 3.X, adquira um grupo de recursos serverless. Para mais detalhes, consulte Create and use a serverless resource group.

Preparações

Um nó MaxCompute Spark suporta Java/Scala e Python. As etapas de desenvolvimento e o processo de configuração variam conforme a linguagem escolhida.

Java/Scala

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

  1. Prepare o ambiente de desenvolvimento.

    É necessário preparar o ambiente onde a tarefa Spark on MaxCompute será executada, considerando o sistema operacional utilizado. Para mais informações, consulte Set up a Linux development environment ou Set up a Windows development environment.

  2. Desenvolva o código Java ou Scala.

    Para executar código Java ou Scala em um nó ODPS Spark, conclua previamente o desenvolvimento do código da tarefa Spark on MaxCompute em sua máquina local ou no ambiente 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 concluir o desenvolvimento, empacote o código e envie o pacote para o DataWorks como um recurso do MaxCompute. Para mais detalhes, consulte Create and use MaxCompute resources.

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

É possível desenvolver uma tarefa PySpark escrevendo código diretamente em um recurso Python online no DataWorks e executando-o por meio de um nó ODPS Spark. Para mais informações, consulte Create and use MaxCompute resources e Develop a Spark on MaxCompute application by using PySpark.

Nota

Utilize o ambiente Python padrão fornecido pelo DataWorks para desenvolver seu código. Se os pacotes de terceiros suportados pelo ambiente padrão não atenderem aos requisitos da tarefa PySpark, consulte a seção Linguagem de programação: Python (Usar um ambiente Python personalizado) para preparar um ambiente customizado. Alternativamente, use PyODPS 2 nodes ou PyODPS 3 nodes, que oferecem suporte a uma maior variedade de recursos Python para desenvolvimento.

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

Se o ambiente Python padrão não atender às suas necessidades, prepare um ambiente Python personalizado seguindo as etapas abaixo.

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

    Consulte Versões do Python para PySpark e dependências suportadas para configurar o ambiente Python de acordo com seus requisitos de negócio.

  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 envie o pacote para o DataWorks como um recurso do MaxCompute. Assim, você poderá executar a tarefa Spark on MaxCompute nesse ambiente. Para mais informações, consulte Create and use MaxCompute resources.

Descrição dos parâmetros

O DataWorks executa tarefas offline do Spark on MaxCompute no modo cluster. Especifique o ponto de entrada da aplicação no método main. A tarefa termina quando a execução do método main é concluída, resultando em um status de Success ou Fail. Adicione também cada configuração do arquivo spark-defaults.conf individualmente ao nó 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 presente no arquivo spark-defaults.conf individualmente como um item de configuração no nó 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

Caso ocorra um erro ao enviar um nó ODPS Spark que utiliza a versão Spark 3.X, adquira um grupo de recursos serverless. Para mais detalhes, consulte Create and use a serverless resource group.

Nenhum

Language

Selecione Java/Scala ou Python conforme a linguagem de desenvolvimento da sua tarefa Spark on MaxCompute.

Nenhum

Main JAR Resource

O arquivo de recurso principal JAR ou Python.

Faça o upload do arquivo de recurso necessário para o DataWorks e envie-o antecipadamente. Para mais informações, consulte Create and use MaxCompute resources.

app jar or Python file

Configuration Item

Itens de configuração necessários para enviar a tarefa 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 MaxCompute atual por padrão. Configure-os explicitamente caso precise 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 no nó 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

Nome da classe principal. Este parâmetro é obrigatório quando o campo Language estiver definido como Java/Scala.

--class CLASS_NAME

Parameter

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

Nota

Para informações sobre os formatos suportados de parâmetros de agendamento, consulte Supported formats of scheduling parameters.

[app arguments]

Other resources

Os seguintes tipos de recursos também são suportados. Selecione-os conforme seus requisitos de negócio.

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

  • Recurso Python: Disponível apenas quando o campo Language for 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 antecipadamente. Para mais informações, consulte Create and use MaxCompute resources.

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 utiliza um nó ODPS Spark para desenvolver uma tarefa Spark on MaxCompute. Neste exemplo, a tarefa verifica se uma string pode ser convertida em dígitos.

  1. Crie um recurso.

    1. Na página DataStudio, crie um novo recurso Python com o nome spark_is_number.py. Para mais informações, consulte Create and use MaxCompute resources. Utilize 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 da tarefa MaxCompute Spark consultando a seção Descriptions of parameters deste tópico. Em seguida, 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 realizar o backfill de dados do nó ODPS Spark. Para mais informações, consulte Backfill data and view data backfill instances (new version).

    Nota

    O DataWorks não fornece pontos de entrada para executar nós ODPS Spark diretamente no DataStudio. Execute os nós ODPS Spark no Operation Center do 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 serão retornadas:

    False
    True
    True
    True
    True

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

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

Próximos passos

Após desenvolver a tarefa Spark on MaxCompute, realize as operações abaixo:

  • Configuração de agendamento: Defina propriedades de agendamento periódico, como configurações de reexecução e dependências para tarefas regulares. Overview of task scheduling configuration.

  • Depuração de tarefas: Teste e execute o código do nó para validar sua lógica. Task debugging process.

  • Implantação de tarefas: Implante os nós para executá-los periodicamente com base nas configurações de agendamento. Deploy tasks.

  • Enable the system to diagnose Spark tasks: O MaxCompute oferece a ferramenta Logview e a Spark Web UI. Consulte os logs das tarefas Spark para verificar se foram enviadas e executadas conforme o esperado.