Um nó E-MapReduce (EMR) Spark SQL utiliza um mecanismo de consulta SQL distribuído para processar dados estruturados e aumentar a eficiência na execução de jobs.
Pré-requisitos
-
Para personalizar o ambiente do componente antes do desenvolvimento do nó, crie uma custom image com base na imagem oficial
dataworks_emr_base_task_pode use the image in DataStudio.Por exemplo, é possível substituir um pacote JAR do Spark ou depender de
libraries,filesouJAR packagesespecíficos ao criar uma imagem personalizada. Registre um cluster EMR no DataWorks. Para mais informações, consulte Legacy Data Development: Bind EMR compute resources.
Os usuários RAM devem ter as permissões necessárias. O proprietário ou administrador do workspace precisa adicionar o usuário RAM ao workspace e atribuir a função Development ou Workspace Administrator. A função Workspace Administrator concede permissões amplas; portanto, atribua-a com cautela. Para mais informações, consulte Add members to a workspace.
Adquira e configure um grupo de recursos, incluindo a vinculação a um workspace e a definição das configurações de rede. Para mais informações, consulte Use a serverless resource group.
Crie um fluxo de negócios. No DataStudio, todos os nós de desenvolvimento são organizados em fluxos de negócios. Para mais informações, consulte Create a business flow.
Caso suas tarefas exijam um ambiente de desenvolvimento específico, use o DataWorks para construir uma imagem personalizada com os componentes necessários. Para mais informações, consulte Custom images.
Limitações
Esse tipo de tarefa pode ser executado apenas em um serverless resource group (recomendado) ou em um grupo de recursos exclusivo para agendamento. Se for necessário usar uma imagem no desenvolvimento de dados, utilize um grupo de recursos serverless.
Para gerenciar metadados de um cluster DataLake ou cluster personalizado no DataWorks, configure o EMR-HOOK no cluster. Sem essa configuração, o DataWorks não consegue exibir metadados em tempo real, gerar logs de auditoria, fornecer linhagem de dados ou executar tarefas de governança relacionadas ao EMR. Para mais informações sobre como configurar o EMR-HOOK, consulte Configure EMR-HOOK for Spark SQL.
A linhagem de dados é compatível com clusters EMR Serverless Spark, mas não com clusters EMR on ACK Spark.
O registro visual de funções é suportado para clusters DataLake e clusters personalizados, mas não para clusters EMR on ACK Spark ou EMR Serverless Spark.
Observações
Se você ativou o controle de acesso Ranger para Spark no cluster EMR associado ao workspace atual:
As tarefas Spark que usam a imagem padrão suportam esse recurso automaticamente.
Para executar uma tarefa Spark com uma imagem personalizada, envie um ticket para o suporte técnico solicitando a atualização da imagem.
Etapa 1: Criar um nó
-
Faça login no console do DataWorks. Na região de destino, clique em no painel de navegação à esquerda. Selecione um workspace na lista suspensa e clique em Go to Data Development.
-
Crie um nó EMR Spark SQL.
-
Clique com o botão direito no fluxo de negócios desejado e escolha .
NotaAlternativamente, passe o mouse sobre Create e escolha .
-
Na caixa de diálogo Create Node, defina Name, Compute Engine Instance, Node Type e Path. Clique em Confirm para abrir o editor de nós.
NotaO nome do nó pode conter letras maiúsculas, letras minúsculas, caracteres chineses, dígitos, sublinhados (_) e pontos (.).
-
Etapa 2: Desenvolver a tarefa
No editor de nós EMR Spark SQL, clique duas vezes no nó criado para abrir a página de desenvolvimento da tarefa.
Escrever código SQL
Defina variáveis no formato ${variable_name} e atribua valores no painel Scheduling Settings > Scheduling Parameter para habilitar a passagem dinâmica de parâmetros durante execuções agendadas. Para mais informações sobre os formatos suportados, consulte Formats of scheduling parameters. O código de exemplo a seguir é fornecido.
SHOW TABLES;
-- Use ${var} to define a variable named var. If you assign the ${yyyymmdd} value to this variable, you can create a table whose name is suffixed with the business date.
CREATE TABLE IF NOT EXISTS userinfo_new_${var} (
ip STRING COMMENT'IP address',
uid STRING COMMENT'User ID'
)PARTITIONED BY(
dt STRING
); -- You can use this variable together with scheduling parameters.
O tamanho de uma instrução SQL não pode exceder 130 KB.
Se houver vários recursos de computação EMR vinculados ao seu workspace, selecione aquele necessário para sua tarefa. Esta etapa é desnecessária se apenas um recurso estiver vinculado.
(Opcional) Configurações avançadas
Configure propriedades específicas do Spark nas advanced settings do nó. Para mais informações sobre as propriedades do Spark, consulte Spark Configuration. Os parâmetros avançados disponíveis variam conforme o tipo de cluster EMR, conforme descrito nas tabelas a seguir.
Datalake and custom: EMR on ECS
|
Parâmetro |
Descrição |
|
queue |
Fila de agendamento para envio dos jobs. Valor padrão: default. Para mais informações sobre o EMR YARN, consulte Basic queue configurations. |
|
priority |
Prioridade da tarefa. Valor padrão: 1. |
|
FLOW_SKIP_SQL_ANALYZE |
Modo de execução SQL. Valores válidos:
Nota
Este parâmetro só pode ser utilizado para execuções de teste no ambiente de desenvolvimento. |
|
ENABLE_SPARKSQL_JDBC |
Método usado para enviar código SQL. Valores válidos:
|
|
DATAWORKS_SESSION_DISABLE |
Este parâmetro aplica-se apenas a execuções de teste no ambiente de desenvolvimento. Valores válidos:
Nota
Quando este parâmetro está definido como |
|
Outros |
Adicione parâmetros personalizados de Spark Configuration. Use o seguinte formato: Nota
|
EMR serverless spark
Para mais informações sobre as configurações de parâmetros, consulte Set parameters for submitting a Spark job.
|
Parâmetro |
Descrição |
|
FLOW_SKIP_SQL_ANALYZE |
Modo de execução SQL. Valores válidos:
Nota
Este parâmetro só pode ser utilizado para execuções de teste no ambiente de desenvolvimento. |
|
DATAWORKS_SESSION_DISABLE |
Especifica o método de envio da tarefa. Ao executar uma tarefa no Data Development, ela é enviada ao SQL Compute por padrão. Use este parâmetro para definir se a tarefa deve ser enviada ao SQL Compute ou a uma fila.
|
|
SERVERLESS_RELEASE_VERSION |
Versão do mecanismo Spark. Por padrão, é usada a Default Engine Version configurada para o cluster na página Cluster Management do Management Center. Defina este parâmetro para substituir o padrão para uma tarefa específica. Nota
O parâmetro |
|
SERVERLESS_QUEUE_NAME |
Fila de recursos para onde as tarefas são enviadas. Quando uma tarefa é enviada para uma fila, a Default Resource Queue configurada para o cluster na página Cluster Management do Management Center é usada por padrão. Caso necessite de isolamento e gerenciamento de recursos, adicione filas. Para mais informações, consulte Manage resource queues. Opções de configuração:
Nota
|
|
SERVERLESS_SQL_COMPUTE |
Sessão do SQL Compute que deseja utilizar. Por padrão, o Default SQL Compute configurado para o cluster na página Cluster Management do Management Center é utilizado. Se quiser usar sessões diferentes do SQL Compute para tarefas distintas, especifique-as aqui. Para mais informações sobre como criar e gerenciar sessões do SQL Compute, consulte Manage SQL Compute sessions. |
|
Outros |
Adicione parâmetros personalizados de Spark Configuration. Use o seguinte formato: Nota
O DataWorks permite definir parâmetros globais do Spark no nível do workspace para diferentes módulos. É possível especificar se os parâmetros globais do Spark têm precedência sobre os parâmetros dentro de um módulo específico. Para mais informações, consulte Set global Spark parameters. |
Salvar e executar a tarefa
Na barra de ferramentas, clique no ícone Salvar
para salvar suas instruções SQL e clique no ícone Executar
para rodar a tarefa SQL.
Na caixa de diálogo de execução, selecione um grupo de recursos que tenha uma conexão de rede bem-sucedida com seu service Spark. Se o código do nó utilizar variáveis, atribua valores constantes a elas durante a execução de depuração. Para configurar o grupo de recursos e os parâmetros para execuções agendadas, consulte Configure node scheduling. Para mais informações sobre depuração de tarefas, consulte Task debugging process.
Caso precise alterar os valores dos parâmetros no código, clique em Advanced Run na barra de ferramentas. Para mais informações sobre a lógica de atribuição de valores aos parâmetros, consulte What are the differences in value assignment logic among Run, Advanced Run, and smoke testing in the development environment?.
Spark: EMR on ACK
|
Parâmetro |
Descrição |
|
FLOW_SKIP_SQL_ANALYZE |
Modo de execução SQL. Valores válidos:
Nota
Este parâmetro só pode ser utilizado para execuções de teste no ambiente de desenvolvimento. |
|
Outros |
Adicione parâmetros personalizados de Spark Configuration. Use o seguinte formato: Nota
O DataWorks permite definir parâmetros globais do Spark no nível do workspace para diferentes módulos. É possível especificar se os parâmetros globais do Spark têm precedência sobre os parâmetros dentro de um módulo específico. Para mais informações, consulte Set global Spark parameters. |
Hadoop: EMR on ECS
|
Parâmetro |
Descrição |
|
queue |
Fila de agendamento para envio dos jobs. Valor padrão: default. Para mais informações sobre o EMR YARN, consulte Basic queue configurations. |
|
priority |
Prioridade da tarefa. Valor padrão: 1. |
|
FLOW_SKIP_SQL_ANALYZE |
Modo de execução SQL. Valores válidos:
Nota
Este parâmetro só pode ser utilizado para execuções de teste no ambiente de desenvolvimento. |
|
USE_GATEWAY |
Define se o job do nó deve ser enviado através de um cluster gateway. Valores válidos:
Nota
Se nenhum cluster gateway estiver associado ao cluster onde o nó reside, os envios subsequentes de jobs EMR falharão caso você defina manualmente este parâmetro como |
|
Outros |
Adicione parâmetros personalizados de Spark Configuration. Use o seguinte formato: Nota
|
Executar a tarefa
-
Na barra de ferramentas, clique no ícone Executar
. Na caixa de diálogo Parameter, selecione o grupo de recursos de agendamento criado e clique em Running.NotaPara acessar recursos de computação em uma rede pública ou Virtual Private Cloud (VPC), use um grupo de recursos de agendamento que tenha passado em um teste de conectividade com tais recursos. Para mais informações, consulte Network connectivity.
Se precisar alterar o grupo de recursos para execuções futuras da tarefa, clique no ícone Running with Parameters
e selecione o grupo desejado.Ao usar um nó EMR Spark SQL para consultar dados, podem ser retornados no máximo 10.000 registros, e o tamanho total dos dados não pode exceder 10 MB.
Clique no ícone Salvar
para salvar as instruções SQL.-
(Opcional) Realize um teste de fumaça (smoke test).
Caso deseje realizar um teste de fumaça no ambiente de desenvolvimento, execute-o após rodar ou confirmar (commit) o nó. Para mais informações, consulte Perform a smoke test.
Etapa 3: Configurar agendamento
Se desejar que o sistema execute periodicamente uma tarefa no nó, clique em Properties no painel de navegação à direita, na aba de configuração do nó, para definir as propriedades de agendamento conforme suas necessidades de negócio. Para mais informações, consulte Overview.
É obrigatório configurar as propriedades Rerun attribute e Parent Nodes do nó antes de submetê-lo.
-
Para personalizar o ambiente do componente, crie uma custom image baseada na imagem oficial
dataworks_emr_base_task_pode use it in DataStudio.Por exemplo, é possível substituir pacotes JAR do Spark ou incluir
libraries,filesouJAR packagesespecíficos ao criar uma imagem personalizada.
Etapa 4: Implantar a tarefa
Após configurar uma tarefa em um nó, confirme e implante a tarefa. Depois disso, o sistema executará a tarefa regularmente com base nas configurações de agendamento.
Clique no ícone
na barra de ferramentas superior para salvar a tarefa.-
Clique no ícone
na barra de ferramentas superior para confirmar (commit) a tarefa.Na caixa de diálogo Submit, configure o parâmetro Change description. Em seguida, decida se deseja revisar o código da tarefa após o commit, conforme suas necessidades de negócio.
NotaConfigure os parâmetros Rerun e Parent Nodes na aba Properties antes de confirmar a tarefa.
Utilize o recurso de revisão de código para garantir a qualidade das tarefas e evitar erros de execução causados por código inválido. Se a revisão de código estiver ativada, o código confirmado só poderá ser implantado após aprovação. Para mais informações, consulte Code review.
Se utilizar um workspace no modo padrão, implante a tarefa no ambiente de produção após confirmá-la. Para implantar uma tarefa em um nó, clique em Deploy no canto superior direito da aba de configuração do nó. Para mais informações, consulte Deploy a node.
Mais operações
Depois de confirmar e implantar a tarefa, ela será executada periodicamente conforme as configurações de agendamento. Clique em Operation Center no canto superior direito da aba de configuração do nó correspondente para acessar o Operation Center e visualizar o status de agendamento da tarefa. Para mais informações, consulte Manage scheduled tasks.
FAQ
Antes de enviar uma tarefa EMR Spark SQL para o SQL Compute a partir do Data Development, verifique se a sessão do SQL Compute está no estado Running. Caso contrário, a tarefa falhará. Para mais informações sobre como verificar o status, consulte Manage SQL Compute sessions.