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:
-
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.
-
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.
-
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.
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.
-
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.
-
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.
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. |
|
|
Configuration Item |
Itens de configuração necessários para submeter a tarefa Spark on MaxCompute.
|
|
|
Main Class |
Nome da classe principal. Este parâmetro é obrigatório quando o campo Language estiver definido como |
|
|
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 . Nota
Para informações sobre os formatos suportados de parâmetros de agendamento, consulte Formatos suportados de parâmetros de agendamento. |
|
|
Other resources |
Os seguintes tipos de recursos também são suportados. Selecione-os conforme os requisitos do seu negócio.
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:
|
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.
-
Crie um recurso.
-
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')) Salve e envie o recurso.
-
-
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.
-
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).
NotaO 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.
-
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:
Configuração de agendamento: Defina propriedades de agendamento periódico, como configurações de reexecução e dependências para tarefas regulares. Visão geral da configuração de agendamento de tarefas.
Depuração de tarefas: Teste e execute o código do nó para validar sua lógica. Processo de depuração de tarefas.
Implantação de tarefas: Implante os nós para executá-los periodicamente com base nas configurações de agendamento. Implantar tarefas.
Habilitar o diagnóstico de tarefas Spark pelo sistema: O MaxCompute oferece a ferramenta Logview e a Spark Web UI. Consulte os logs das tarefas Spark para verificar se elas foram submetidas e executadas conforme o esperado.