Desenvolva e agende periodicamente jobs Spark em um cluster EMR Serverless Spark no DataWorks. O Spark oferece suporte a computação complexa em memória, tornando-o ideal para análise de dados em larga escala com baixa latência.
Pré-requisitos
Limitações de recursos computacionais: Apenas bound EMR Serverless Spark compute resources são compatíveis. Verifique se o grupo de recursos e o recurso computacional conseguem se comunicar pela rede.
Restrições de grupo de recursos: Apenas Serverless resource groups podem executar este tipo de tarefa.
-
(Opcional, para usuários RAM) O usuário Resource Access Management (RAM) responsável pelo desenvolvimento de tarefas deve ser adicionado ao workspace e receber a função Development ou Workspace Administrator (esta função inclui permissões extensas e deve ser concedida com cautela). Para mais informações, consulte Add workspace members.
Se você estiver usando uma conta root, ignore esta etapa.
Crie um nó
Para obter instruções, consulte Create a node.
Desenvolva o nó
Antes de desenvolver um job Serverless Spark Batch, desenvolva o código do job Spark no E-MapReduce (EMR) e compile-o em um pacote JAR. Para orientações sobre desenvolvimento Spark, consulte Spark tutorials.
Escolha a abordagem mais adequada ao seu caso de uso:
Opção 1: Faça upload e referencie o EMR JAR
Faça upload do pacote JAR compilado no DataWorks como um recurso EMR JAR. Essa abordagem funciona para pacotes JAR menores que 500 MB.
-
Crie um recurso EMR JAR.
No painel de navegação à esquerda, clique no ícone
para acessar a página Resource Management.Na página Resource Management, clique no ícone
, selecione e nomeie o recurso como spark-examples_2.11-2.4.0.jar.Clique em Click Upload e faça upload do arquivo spark-examples_2.11-2.4.0.jar.
-
Selecione um Storage Path, Data Sources e Resource Group.
ImportantePara o data source, selecione o cluster EMR Serverless Spark vinculado.
Clique em Save.
-
Referencie o recurso EMR JAR.
Abra o nó Serverless Spark Batch criado e permaneça na página do editor de código.
No painel Resource Management à esquerda, localize o recurso desejado, clique com o botão direito e selecione Insert Resource Path.
-
O recurso é referenciado com sucesso quando o seguinte código é adicionado automaticamente ao editor de código do nó Serverless Spark Batch:
##@resource_reference{"spark-examples_2.11-2.4.0.jar"} spark-examples_2.11-2.4.0.jarNo código acima, spark-examples_2.11-2.4.0.jar é o nome do recurso EMR JAR cujo upload você realizou.
-
Modifique o código do nó adicionando o comando spark-submit. O exemplo a seguir mostra o código modificado.
ImportanteSiga o exemplo exatamente. Não adicione comentários, pois eles causam falha no nó.
Para o EMR Serverless Spark, não é necessário definir o parâmetro
deploy-modeno comandospark-submit. Apenas o modoclusteré compatível.
##@resource_reference{"spark-examples_2.11-2.4.0.jar"} spark-submit --class org.apache.spark.examples.SparkPi spark-examples_2.11-2.4.0.jar 100Comando
Descrição
classA classe principal da aplicação no arquivo JAR. Neste exemplo, o valor é
org.apache.spark.examples.SparkPi.NotaPara mais informações sobre parâmetros, consulte Submit a job using spark-submit.
Opção 2: Referencie um recurso OSS
Referencie um recurso armazenado no Object Storage Service (OSS). O DataWorks carrega automaticamente o recurso OSS especificado em tempo de execução. Use esta abordagem quando um job EMR exigir dependências JAR ou depender de scripts.
Desenvolva o recurso JAR: Este tópico usa SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jar como exemplo.
-
Faça upload do recurso JAR.
Acesse o OSS console. No painel de navegação à esquerda, clique em buckets.
Clique no nome do bucket de destino para acessar a página de gerenciamento de arquivos.
Clique em Create Directory para criar um diretório onde o recurso JAR será armazenado.
Acesse o diretório e faça upload do arquivo
SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jarno bucket.
-
Referencie o recurso JAR.
-
No editor de código do nó Serverless Spark Batch criado, escreva o código para referenciar o recurso JAR.
ImportanteNo código a seguir, o nome do bucket OSS é
mybuckete o diretório éemr. Substitua-os pelos seus valores reais.spark-submit --class com.aliyun.emr.example.spark.SparkMaxComputeDemo oss://mybucket/emr/SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jarParâmetros:
Parâmetro
Descrição
classO nome completamente qualificado da classe principal a ser executada.
ossfile pathO formato é
oss://{bucket}/{object}.-
bucket: O contêiner OSS que armazena objetos. Cada bucket tem um nome exclusivo. Acesse o OSS console para visualizar todos os buckets da sua conta.
-
object: Um arquivo ou caminho armazenado em um bucket.
NotaPara mais informações sobre parâmetros, consulte Submit a job using spark-submit.
-
-
Depure o nó
-
No painel Run Configuration, configure as opções de Compute resource e resource group.
Parâmetro
Descrição
Compute resource
Selecione um EMR Serverless Spark compute resource vinculado. Se nenhum estiver disponível, selecione Create Compute Resource na lista suspensa.
resource group
Selecione um grupo de recursos vinculado ao workspace.
Script parameters
Defina variáveis no código do nó usando o formato
${Parameter name}. Em seguida, defina o Parameter name e o Parameter Value na seção Script Parameters. Em tempo de execução, o DataWorks substitui essas variáveis pelos valores especificados. Para mais informações, consulte Scheduling parameters.ServerlessSpark node parameters
Parâmetros de tempo de execução para o programa Spark. Os seguintes tipos são compatíveis:
-
Parâmetros de tempo de execução personalizados do DataWorks. Para mais informações, consulte Appendix: DataWorks parameters.
-
Propriedades nativas do Spark. Para mais informações, consulte Open-source Spark properties e Custom Spark Conf parameters.
O formato de configuração é:
"spark.eventLog.enabled": false. O DataWorks adiciona automaticamente essa configuração ao código enviado ao Serverless Spark no formato--conf key=value.NotaÉ possível definir parâmetros Spark globais no nível do workspace e especificar se eles têm prioridade sobre os parâmetros definidos em um módulo específico. Para detalhes, consulte Configure global Spark parameters.
-
-
Na barra de ferramentas no topo do editor de nós, clique em Run.
ImportanteAntes de publicar, sincronize os <!--@uicontrol {"id":"babb263c1173g","data-init-id="1b10eba4b2lar"}-->ServerlessSpark node parameters em ServerlessSpark node parameters com os Run Configuration em ServerlessSpark node parameters.
Próximas etapas
Configure node scheduling: Para executar um nó periodicamente, configure a Scheduling Settings no painel Scheduling Policy à direita.
Publish a node: Para executar uma tarefa no ambiente de produção, clique no ícone
para publicar o nó. Um nó só é executado conforme o agendamento após ser publicado no ambiente de produção.O&M de tarefas: Após a publicação de uma tarefa, monitore suas execuções periódicas no Operation Center. Para mais informações, consulte Get started with Operation Center.
Documentação relacionada
Apêndice: parâmetros do DataWorks
|
Parâmetro |
Descrição |
|
SERVERLESS_QUEUE_NAME |
A fila de recursos para a qual o job é enviado. Por padrão, os jobs são enviados para a Scheduling Settings configurada para o cluster em Default Resource Queue no Clusters. Para isolar e gerenciar recursos, adicione filas. Para mais informações, consulte Manage resource queues. Métodos de configuração:
|