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:
-
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.
-
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.
-
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.
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.
-
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.
-
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.
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. |
|
|
Configuration Item |
Os itens de configuração necessários para enviar a tarefa do Spark on MaxCompute.
|
|
|
Main Class |
O nome da classe principal. Este parâmetro é obrigatório quando o Language está definido como |
|
|
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 . Nota
Para obter informações sobre os formatos suportados de parâmetros de agendamento, consulte Formatos suportados de parâmetros de agendamento. |
|
|
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.
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:
|
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.
-
Crie um recurso.
-
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')) Salve e envie o recurso.
-
-
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.
-
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).
NotaO 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.
-
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:
Configuração de agendamento: Configure propriedades de agendamento periódico, como configurações de nova execução e dependências para tarefas executadas regularmente. Visão geral da configuração de agendamento de tarefas.
Depuração de tarefas: Teste e execute o código do nó e verifique sua lógica. Processo de depuração de tarefas.
Implantação de tarefas: Implante nós para executá-los periodicamente com base em suas configurações de agendamento. Implante tarefas.
ative o sistema para diagnosticar tarefas do Spark: O MaxCompute fornece a ferramenta Logview e a Spark Web UI. visualize os logs das tarefas Spark e verifique se as tarefas são enviadas e executadas conforme o esperado.