O Spark on MaxCompute permite executar jobs nos modos local e cluster. No DataWorks, é possível rodar jobs offline do Spark on MaxCompute no modo cluster para integrá-los a outros tipos de nós no agendamento. Este documento descreve como configurar e agendar jobs do Spark on MaxCompute usando o DataWorks.
Visão geral
O Spark on MaxCompute é um service de computação fornecido pelo MaxCompute, compatível com o Spark open source. Ele oferece um framework de computação Spark baseado em um sistema unificado de recursos de computação e permissões. Isso permite que você envie e execute jobs Spark utilizando fluxos de trabalho de desenvolvimento familiares para atender a diversas necessidades de processamento e análise de dados. No DataWorks, utilize o nó MaxCompute Spark para agendar e executar jobs do Spark on MaxCompute, além de integrá-los a outros jobs.
O Spark on MaxCompute suporta desenvolvimento em Java, Scala e Python, executando jobs tanto no modo local quanto no modo cluster. Ao executar um job offline do Spark on MaxCompute no DataWorks, ele roda no modo cluster. Para mais informações sobre os modos de execução do Spark on MaxCompute, consulte Run modes.
Requisitos de permissão
Para desenvolver jobs, adicione usuários RAM ao workspace correspondente e conceda a função Development ou Workspace Administrator. A função Workspace Administrator inclui permissões amplas e deve ser concedida com cautela. Para mais detalhes sobre como adicionar um membro a um workspace, consulte Add workspace members.
Se você estiver usando uma conta Alibaba Cloud, pule esta etapa.
Limitações
Caso encontre um erro ao enviar um nó MaxCompute Spark que utiliza Spark 3.x, compre e utilize um grupo de recursos serverless. Para mais informações, consulte Use a serverless resource group.
Antes de começar
O nó MaxCompute Spark suporta a execução de jobs offline do Spark on MaxCompute usando Java/Scala e Python. As etapas de desenvolvimento e a interface de configuração variam conforme a linguagem. Escolha a linguagem adequada às suas necessidades de negócio.
Java/Scala
Antes de executar código Java ou Scala em um nó MaxCompute Spark, desenvolva o código do job Spark on MaxCompute localmente e faça o upload dele como um recurso do MaxCompute para o DataWorks. Siga estas etapas:
-
Configure o ambiente de desenvolvimento.
Prepare um ambiente de desenvolvimento para executar jobs do Spark on MaxCompute de acordo com seu sistema operacional. Para mais informações, consulte Set up a Linux development environment e Set up a Windows development environment.
-
Desenvolva o código Java/Scala.
Antes de rodar o código em um nó MaxCompute Spark, desenvolva seu código Spark on MaxCompute localmente ou em um ambiente existente. Recomendamos o uso do sample project template fornecido pelo Spark on MaxCompute.
-
Empacote o código e faça o upload para o DataWorks.
Após concluir o desenvolvimento, empacote seu código e faça o upload para o DataWorks como um recurso do MaxCompute. Para mais informações, consulte Resource Management.
Python com ambiente padrão
Desenvolva jobs PySpark no DataWorks escrevendo o código diretamente em um recurso Python. Em seguida, envie e execute o código usando um nó MaxCompute Spark. Para exemplos de desenvolvimento, consulte PySpark development examples.
Se o ambiente padrão não atender aos requisitos de dependência do seu job, consulte a seção Python (usando um ambiente personalizado) para preparar um ambiente Python customizado. Alternativamente, utilize um nó PyODPS 2 ou PyODPS 3, que oferecem melhor suporte para recursos Python.
Python com ambiente personalizado
Caso o ambiente Python padrão não atenda às suas necessidades de negócio, siga estas etapas para usar um ambiente Python personalizado na execução do seu job Spark on MaxCompute.
-
Prepare um ambiente Python localmente.
Consulte Versões do Python e suporte a dependências do PySpark para configurar o ambiente Python necessário.
-
Empacote o ambiente e faça o upload para o DataWorks.
Compacte o ambiente Python em um pacote .zip e faça o upload para o DataWorks como um recurso do MaxCompute. Esse pacote se tornará o ambiente de execução do seu job Spark on MaxCompute.
Parâmetros
O DataWorks executa jobs offline do Spark on MaxCompute no modo Cluster. Nesse modo, especifique um ponto de entrada personalizado do programa main. O job Spark correspondente termina quando a função main finaliza com status Success ou Fail. Além disso, adicione as configurações do arquivo spark-defaults.conf individualmente às configurações do nó MaxCompute Spark. Por exemplo, o número de executor s, o tamanho da memória e a configuração spark.hadoop.odps.runtime.end.point.
Não é necessário fazer o upload do arquivo spark-defaults.conf. Em vez disso, adicione as configurações presentes no arquivo spark-defaults.conf uma a uma nos itens de configuração do nó MaxCompute Spark.
Java/Scala
|
Parâmetro |
Descrição |
Comando Spark-submit |
|
Spark Version |
A versão do Spark. Valores válidos: Spark 1.x, Spark 2.x e Spark 3.x. Nota
Se ocorrer um erro ao enviar um nó MaxCompute Spark que usa a versão Spark 3.x, compre e utilize um grupo de recursos serverless. Para mais informações, consulte Use a serverless resource group. |
— |
|
Language |
A linguagem de programação. Selecione Java/Scala ou Python conforme a linguagem usada no desenvolvimento do seu job Spark on MaxCompute. |
— |
|
Main JAR Resource |
Especifica o arquivo de recurso JAR principal para o job. O arquivo de recurso deve ser enviado ao DataWorks e submetido. Para mais informações, consulte Resource Management. |
|
|
Configuration Item |
Define os itens de configuração para envio do job. Observe o seguinte:
|
|
|
Main Class |
Configure o nome da classe principal. Este parâmetro é obrigatório quando a linguagem de desenvolvimento é |
|
|
Parameter |
Adicione parâmetros conforme necessário, separando múltiplos parâmetros com um espaço. O DataWorks suporta parâmetros de agendamento. O formato para o campo Parameter é Para informações sobre os formatos suportados de valores de parâmetros de agendamento, consulte Sources and expressions of scheduling parameters. |
|
|
JAR Resources |
Suportado apenas quando a linguagem de programação é Os arquivos de recurso devem ser enviados ao DataWorks e submetidos. Para mais informações, consulte Resource Management. |
Comando de recurso:
|
|
File Resources |
Especifica os recursos de arquivo para o job. |
|
|
Archive Resources |
Define os recursos de arquivo compactado para o job. Apenas arquivos .zip são suportados. |
|
Python
|
Parâmetro |
Descrição |
Comando Spark-submit |
|
Spark Version |
A versão do Spark. Valores válidos: Spark 1.x, Spark 2.x e Spark 3.x. Nota
Se ocorrer um erro ao enviar um nó MaxCompute Spark que usa a versão Spark 3.x, compre e utilize um grupo de recursos serverless. Para mais informações, consulte Use a serverless resource group. |
— |
|
Language |
A linguagem de programação. Selecione Python conforme a linguagem usada no desenvolvimento do seu job Spark on MaxCompute. |
— |
|
Main Python Resource |
Especifica o arquivo de recurso Python principal para o job. O arquivo de recurso deve ser enviado ao DataWorks e submetido. Para mais informações, consulte Resource Management. |
|
|
Configuration Item |
Define os itens de configuração para envio do job. Observe o seguinte:
|
|
|
Parameter |
Adicione parâmetros conforme necessário, separados por espaços. O DataWorks suporta parâmetros de agendamento, que devem estar no formato Para informações sobre os formatos suportados de valores de parâmetros de agendamento, consulte Sources and expressions of scheduling parameters. |
|
|
Python Resources |
Utilizável apenas quando a linguagem de desenvolvimento é Os arquivos de recurso devem ser enviados ao DataWorks e submetidos. Para mais informações, consulte Resource Management. |
|
|
File Resources |
Especifica os recursos de arquivo para o job. |
|
|
Archive Resources |
Define os recursos de arquivo compactado para o job. |
|
Procedimento
-
Crie um recurso.
-
Localize Resource Management na barra de navegação à esquerda da página Data Studio e clique em Create. Crie um recurso Python do tipo MaxCompute Spark e nomeie-o como
spark_is_number.py. Para mais informações, consulte Resource Management. O código é o seguinte:# -*- 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 o recurso.
-
No nó MaxCompute Spark criado, configure os parâmetros do nó e os parâmetros de agendamento. Para mais informações, consulte Parameters.
Para executar o job em um agendamento, configure suas propriedades de agendamento de acordo com suas necessidades de negócio. Para mais informações, consulte Node scheduling configuration.
Após configurar o job do nó, implante o nó. Para mais informações, consulte Deploy nodes/workflows.
-
Depois que o job for implantado, acesse o Operation Center para visualizar o status de execução do job periódico. Para mais informações, consulte Get started with Operation Center.
NotaOs nós MaxCompute Spark não possuem um ponto de entrada de execução no Data Studio. Execute os jobs Spark no Operation Center, no ambiente de desenvolvimento.
Após a execução bem-sucedida da instância de backfill de dados, abra a URL de rastreamento no log de execução da instância para visualizar o resultado.
Referências
-
Para mais informações sobre o desenvolvimento de jobs Spark on MaxCompute para outros casos de uso, consulte os seguintes tópicos:
FAQ do Spark: Encontre soluções para problemas comuns de execução do Spark para acelerar a solução de problemas. Para mais informações, consulte Spark FAQ.
Diagnóstico de jobs Spark: O MaxCompute fornece a ferramenta Logview e a interface web do Spark. Utilize os logs do job para verificar se ele foi enviado e está sendo executado corretamente. Para mais informações, consulte Spark job diagnosis.