Todos os produtos
Search
Central de documentação

MaxCompute:Desenvolver uma tarefa do MaxCompute Spark

Última atualização: Jul 05, 2026

Execute tarefas do Spark on MaxCompute nos modos local ou cluster. Também é possível executar tarefas offline do Spark on MaxCompute no modo cluster no DataWorks para integrá-las a outros tipos de nós de agendamento. Este tópico descreve como configurar e agendar uma tarefa do Spark on MaxCompute no DataWorks.

Visão geral

O Spark on MaxCompute é um serviço de computação do MaxCompute compatível com o Spark open source. Ele oferece um framework de computação Spark sobre recursos unificados e um sistema de permissões de conjuntos de dados. Isso permite submeter e executar tarefas Spark com métodos de desenvolvimento familiares, atendendo a diversas necessidades de processamento e análise de dados. No DataWorks, use um nó MaxCompute Spark para agendar e executar tarefas do Spark on MaxCompute e integrá-las a outras tarefas.

O Spark on MaxCompute suporta desenvolvimento em Java, Scala e Python, com execução de tarefas no modo local ou cluster. No DataWorks, as tarefas offline do Spark on MaxCompute executam no modo cluster. Para obter mais informações sobre os modos de execução, consulte Modos de execução.

Limites

Se ocorrer 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 Criar e usar um grupo de recursos serverless.

Preparações

Use um nó MaxCompute Spark para executar uma tarefa offline do Spark on MaxCompute em Java/Scala ou Python. As etapas de desenvolvimento e configuração variam conforme a linguagem. Escolha a linguagem adequada aos seus requisitos de negócio.

Java/Scala

Antes de executar código Java ou Scala em um nó ODPS Spark, conclua o desenvolvimento do código da tarefa Spark on MaxCompute na máquina local e envie-o para o DataWorks como um recurso do MaxCompute. Siga estas etapas:

  1. Prepare o ambiente de desenvolvimento.

    Configure o ambiente de desenvolvimento onde a tarefa Spark on MaxCompute será executada, considerando o sistema operacional em uso. Para mais informações, consulte Configurar um ambiente de desenvolvimento Linux ou Configurar um ambiente de desenvolvimento Windows.

  2. Desenvolva o código Java ou Scala.

    Conclua o desenvolvimento do código da tarefa Spark on MaxCompute na máquina local ou no ambiente preparado antes de executá-lo em um nó ODPS Spark. Recomendamos o uso do modelo de projeto de exemplo fornecido pelo Spark on MaxCompute.

  3. Empacote o código desenvolvido e envie-o 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 Criar e usar recursos do MaxCompute.

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

O DataWorks permite desenvolver uma tarefa PySpark escrevendo código diretamente em um recurso Python online e enviando-o para execução por meio de um nó ODPS Spark. Para saber como criar um recurso Python no DataWorks e ver exemplos de desenvolvimento de aplicações Spark on MaxCompute com PySpark, consulte Criar e usar recursos do MaxCompute e Desenvolver uma aplicação Spark on MaxCompute usando PySpark.

Nota

Use o ambiente Python padrão fornecido pelo DataWorks para desenvolver seu código. Se os pacotes de terceiros suportados por esse ambiente 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 nós PyODPS 2 ou PyODPS 3, que oferecem suporte a mais recursos Python para desenvolvimento.

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

Se o ambiente Python padrão não atender aos requisitos de negócio, siga as etapas abaixo para preparar um ambiente Python personalizado e executar sua tarefa Spark on MaxCompute.

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

    Consulte a documentação sobre Versões do Python para PySpark e dependências suportadas para configurar o ambiente Python conforme suas necessidades.

  2. Empacote o código do ambiente Python e envie-o para o DataWorks.

    Compacte o código do ambiente Python no formato ZIP e envie o pacote para o DataWorks como um recurso do MaxCompute. Assim, a tarefa Spark on MaxCompute poderá ser executada nesse ambiente. Para mais informações, consulte Criar e usar recursos do MaxCompute.

Descrição dos parâmetros

O DataWorks executa tarefas offline do Spark on MaxCompute no modo cluster. Nesse modo, especifique o ponto de entrada da aplicação personalizada no método main. A tarefa Spark termina quando o método main finaliza a execução, retornando o status Success ou Fail. Além disso, adicione individualmente as configurações do arquivo spark-defaults.conf aos itens de configuração do nó MaxCompute Spark. Exemplos incluem o número de instâncias de executor, tamanho de memória e a configuração spark.hadoop.odps.runtime.end.point.

Nota

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

Parâmetro

Descrição

Comando spark-submit

Spark Version

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

Nota

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

Nenhum

Language

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

Nenhum

Main JAR Resource

Arquivo de recurso principal JAR ou Python.

Envie previamente o arquivo de recurso necessário para o DataWorks e faça o commit dele. Para mais detalhes, consulte Criar e usar recursos do MaxCompute.

app jar or Python file

Configuration Item

Itens de configuração necessários para submeter a tarefa Spark on MaxCompute.

  • Não é preciso 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 automaticamente os valores do projeto MaxCompute atual. Configure-os explicitamente apenas se precisar substituir os valores padrão.

  • Não é necessário enviar um arquivo spark-defaults.conf. Adicione cada configuração do arquivo spark-defaults.conf individualmente como um item de configuração do nó MaxCompute Spark, como o número de executores, tamanho de 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 a 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 Formatos suportados de parâmetros de agendamento.

[app arguments]

Other resources

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

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

  • Recurso Python: Disponível somente se o campo Language estiver definido como Python.

  • Recurso de arquivo

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

Envie previamente o arquivo de recurso necessário para o DataWorks e faça o commit dele. Para mais detalhes, consulte Criar e usar 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

Esta seção apresenta um exemplo simples de como usar um nó ODPS Spark para desenvolver uma tarefa Spark on MaxCompute. Neste exemplo, uma tarefa Spark on MaxCompute 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 Criar e usar 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 da tarefa MaxCompute Spark consultando a seção Descrição dos parâmetros 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 criado.

  3. Acesse o Operation Center no ambiente de desenvolvimento para realizar backfill de dados no nó ODPS Spark. Para mais informações, consulte Backfill de dados e visualização de instâncias de backfill (nova versão).

    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 obter mais informações sobre o desenvolvimento de tarefas Spark on MaxCompute em outros cenários, consulte os seguintes tópicos:

Próximos passos

Após concluir o desenvolvimento da tarefa Spark on MaxCompute, execute as seguintes operações: