À medida que a engenharia de dados se torna cada vez mais complexa, as organizações procuram novas formas de agilizar os seus fluxos de trabalho de processamento de dados. Muitos engenheiros de dados hoje usam o Apache Airflow para construir, agendar e monitorar seus pipelines de dados.
No entanto, à medida que o volume de dados aumenta, gerenciar e dimensionar esses pipelines pode se tornar uma tarefa difícil. Fluxos de trabalho gerenciados da Amazon para Apache Airflow (Amazon MWAA) pode ajudar a simplificar o processo de construção, execução e gerenciamento de pipelines de dados. Ao fornecer o Apache Airflow como uma plataforma totalmente gerenciada, o Amazon MWAA permite que os engenheiros de dados se concentrem na criação de fluxos de trabalho de dados em vez de se preocuparem com a infraestrutura.
Hoje, as empresas e organizações exigem maneiras econômicas e eficientes de processar grandes quantidades de dados. Amazon EMR sem servidor é uma solução econômica e escalável para processamento de big data que pode lidar com grandes volumes de dados. O Amazon Provider no Apache Airflow vem com operadores EMR Serverless e já está incluído no Amazon MWAA, facilitando aos engenheiros de dados a criação de pipelines de processamento de dados escalonáveis e confiáveis. Você pode usar o EMR Serverless para executar trabalhos do Spark nos dados e usar o Amazon MWAA para gerenciar os fluxos de trabalho e as dependências entre esses trabalhos. Essa integração também pode ajudar a reduzir custos ao dimensionar automaticamente os recursos necessários para processar dados.
O Amazon Athena é um serviço de análise interativo e sem servidor criado com base em estruturas de código aberto e compatível com formatos de arquivos e tabelas abertas. Você pode usar SQL padrão para interagir com os dados. Athena, um serviço de análise interativo e sem servidor, torna isso possível sem a necessidade de gerenciar infraestrutura complexa.
Nesta postagem, usamos Amazon MWAA, EMR Serverless e Athena para construir um pipeline completo de processamento de dados de ponta a ponta.
Visão geral da solução
O diagrama a seguir ilustra a arquitetura da solução.
O fluxo de trabalho inclui as seguintes etapas:
- Crie um fluxo de trabalho do Amazon MWAA que recupere dados da sua entrada Serviço de armazenamento simples da Amazon (Amazon S3).
- Use o EMR Serverless para processar os dados armazenados no Amazon S3. O EMR Serverless aumenta ou diminui automaticamente com base na carga de trabalho, para que você não precise se preocupar com provisionamento ou gerenciamento de qualquer infraestrutura.
- Use o EMR Serverless para transformar os dados usando o código PySpark e, em seguida, armazene os dados transformados de volta em seu bucket S3.
- Use o Athena para criar uma tabela externa baseada no conjunto de dados S3 e executar consultas para analisar os dados transformados. Atena usa o Cola AWS Catálogo de Dados para armazenar os metadados da tabela.
Pré-requisitos
Você deve ter os seguintes pré-requisitos:
Preparação de dados
Para ilustrar o uso de trabalhos EMR Serverless com Apache Spark por meio do Amazon MWAA e validação de dados usando Athena, usamos o conjunto de dados de táxi de Nova York disponível publicamente. Baixe os seguintes conjuntos de dados para sua máquina local:
- Registros de viagem de táxi verde e táxi amarelo – Registros de viagem para táxis amarelos e verdes, que incluem informações como datas e horários de coleta e entrega, locais, distâncias de viagem e tipos de pagamento. Em nosso exemplo, usamos os arquivos Parquet mais recentes para 2022.
- Conjunto de dados para pesquisa de zona de táxi – Um conjunto de dados que fornece IDs de localização e detalhes de zona correspondentes para táxis.
Nas etapas posteriores, carregaremos esses conjuntos de dados no Amazon S3.
Criar recursos de solução
Esta seção descreve as etapas para configurar o processamento e a transformação de dados.
Crie um aplicativo EMR sem servidor
Você pode criar um ou mais aplicativos EMR Serverless que usam estruturas analíticas de código aberto, como Apache Spark ou Apache Hive. Ao contrário do EMR no EC2, você não precisa excluir ou encerrar aplicativos EMR Serverless. O aplicativo EMR Serverless é apenas uma definição e, uma vez criado, pode ser reutilizado pelo tempo que for necessário. Isso torna o pipeline MWAA mais simples, pois agora você só precisa enviar trabalhos para um aplicativo EMR Serverless pré-criado.
Por padrão, o aplicativo EMR Serverless será iniciado automaticamente no envio do trabalho e interrompido automaticamente quando ocioso por 15 minutos por padrão para garantir eficiência de custos. Você pode modificar a quantidade de tempo ocioso ou optar por desativar o recurso.
Para criar um aplicativo usando o console EMR Serverless, siga as instruções em “Crie um aplicativo EMR sem servidor". Anote o ID do aplicativo, pois o usaremos nas etapas a seguir.
Criar um bucket e pastas do S3
Conclua as etapas a seguir para configurar o bucket e as pastas do S3:
- No console do Amazon S3, criar um balde S3 para armazenar o conjunto de dados.
- Anote o nome do bucket S3 a ser usado nas etapas posteriores.
- Crie uma
input_data
pasta para armazenar dados de entrada. - Dentro dessa pasta, crie três pastas separadas, uma para cada conjunto de dados:
green
,yellow
ezone_lookup
.
Você pode baixar e trabalhar com os conjuntos de dados mais recentes disponíveis. Para nossos testes, usamos os seguintes arquivos:
- A
green/
pasta tem o arquivogreen_tripdata_2022-06.parquet
- A
yellow/
pasta tem o arquivoyellow_tripdata_2022-06.parquet
- A
zone_lookup/
pasta tem o arquivotaxi_zone_lookup.csv
Configurar os scripts DAG do Amazon MWAA
Conclua as etapas a seguir para configurar seus scripts DAG:
- Baixe os seguintes scripts para sua máquina local:
- requisitos.txt – Uma dependência do Python é qualquer pacote ou distribuição que não esteja incluído na instalação base do Apache Airflow para sua versão do Apache Airflow em seu ambiente Amazon MWAA. Para este post, usamos Boto3
version >=1.23.9
. - blog_dag_mwaa_emrs_ny_taxi.py – Este script faz parte do Amazon MWAA DAG e consiste nas seguintes tarefas:
yellow_taxi_zone_lookup
,green_taxi_zone_lookup
eny_taxi_summary
,. Essas tarefas envolvem a execução de trabalhos do Spark para pesquisar zonas de táxi e gerar um resumo de dados. - zona_verde.py – Este script PySpark lê arquivos de dados para viagens de táxi verde e pesquisa de zona, executa uma operação de junção para combiná-los e gera um arquivo de saída contendo viagens de táxi verde com informações de zona. Ele utiliza visualizações temporárias para o
df_green
edf_zone
quadros de dados, realiza junções baseadas em colunas e agrega dados como contagem de passageiros, distância da viagem e valor da tarifa. Por último, cria ooutput_data
pasta no bucket S3 especificado para gravar o quadro de dados resultante,df_green_zone
, como arquivos Parquet. - zona_amarela.py – Este script PySpark processa arquivos de dados de corrida de táxi amarelo e pesquisa de zona, unindo-os para gerar um arquivo de saída contendo corridas de táxi amarelo com informações de zona. O script aceita um nome de bucket S3 fornecido pelo usuário e inicia uma sessão do Spark com o nome do aplicativo
yellow_zone
. Ele lê os arquivos de táxi amarelos e o arquivo de pesquisa de zona do bucket S3 especificado, cria visualizações temporárias, executa uma junção com base no ID do local e calcula estatísticas como contagem de passageiros, distância da viagem e valor da tarifa. Por último, cria ooutput_data
pasta no bucket S3 especificado para gravar o quadro de dados resultante,df_yellow_zone
, como arquivos Parquet. - ny_taxi_summary.py – Este script PySpark processa o
green_zone
eyellow_zone
arquivos para agregar estatísticas sobre corridas de táxi, agrupando dados por zonas de serviço e IDs de localização. Requer um nome de bucket S3 como argumento de linha de comando, cria uma SparkSession chamadany_taxi_summary
, lê os arquivos do S3, realiza uma junção e gera um novo quadro de dados denominadony_taxi_summary
. Ele cria uma pasta output_data no bucket S3 especificado para gravar o quadro de dados resultante em novos arquivos Parquet.
- requisitos.txt – Uma dependência do Python é qualquer pacote ou distribuição que não esteja incluído na instalação base do Apache Airflow para sua versão do Apache Airflow em seu ambiente Amazon MWAA. Para este post, usamos Boto3
- Na sua máquina local, atualize o
blog_dag_mwaa_emrs_ny_taxi.py
script com as seguintes informações:- Atualize o nome do bucket S3 nas duas linhas a seguir:
- Atualize o ARN do nome da sua função:
- Atualize o ID do aplicativo sem servidor EMR. Use o ID do aplicativo criado anteriormente.
- Nos envie os
requirements.txt
arquivo para o bucket S3 criado anteriormente - No bucket S3, crie uma pasta chamada
dags
e carregue o atualizadoblog_dag_mwaa_emrs_ny_taxi.py
arquivo da sua máquina local. - No console do Amazon S3, crie uma nova pasta chamada
scripts
dentro do bucket S3 e carregue os scripts para esta pasta de sua máquina local.
Crie um ambiente Amazon MWAA
Para criar um ambiente Airflow, execute as seguintes etapas:
- No console Amazon MWAA, escolha Criar ambiente.
- Escolha Nome, entrar
mwaa_emrs_athena_pipeline
. - Escolha Versão do fluxo de ar, escolha a versão mais recente (para esta postagem, 2.5.1).
- Escolha Balde S3, insira o caminho para seu bucket S3.
- Escolha Pasta DAGs, insira o caminho para o seu
dags
pasta. - Escolha Arquivo de requisitos, insira o caminho para o
requirements.txt
arquivo. - Escolha Próximo.
- Escolha Nuvem privada virtual (VPC), escolha uma VPC que tenha no mínimo duas sub-redes privadas.
Isso preencherá duas das sub-redes privadas em sua VPC.
- Debaixo Acesso ao servidor web, selecione Rede pública.
Isso permite que a UI do Apache Airflow seja acessada pela Internet por usuários com acesso ao Política IAM para seu ambiente.
- Escolha Grupo(s) de segurança, selecione Criar novo grupo de segurança.
- Escolha Classe de ambiente, selecione mw1.pequeno.
- Escolha Função de execução, escolha Crie uma nova função.
- Escolha Nome do papel, Insira o nome.
- Deixe as outras configurações como padrão e escolha Próximo.
- Na próxima página, escolha Crie meio Ambiente.
Pode levar cerca de 20 a 30 minutos para criar seu ambiente Amazon MWAA.
- Quando o status do ambiente do Amazon MWAA muda para Disponível, navegue até o console do IAM e atualize a função de execução do cluster para adicionar passar privilégios de função para
emr_serverless_execution_role
.
Acione o Amazon MWAA DAG
Para acionar o DAG, conclua as seguintes etapas:
- No console Amazon MWAA, escolha Ambientes no painel de navegação.
- Abra seu ambiente e escolha Abra a IU do Airflow.
- Selecionar
blog_dag_mwaa_emr_ny_taxi
, escolha o ícone de reprodução e escolha Acionar DAG. - Quando o DAG estiver em execução, escolha o DAG
blog_dag_mwaa_emrs_ny_taxi
e escolha Gráfico para localizar seu fluxo de trabalho de execução do DAG.
O DAG levará aproximadamente de 4 a 6 minutos para executar todos os scripts. Você verá todas as tarefas concluídas e o status geral do DAG será mostrado como sucesso.
Para executar novamente o DAG, remova s3://<<your_s3_bucket here >>/output_data/
.
Opcionalmente, para entender como o Amazon MWAA executa essas tarefas, escolha a tarefa que deseja inspecionar.
Escolha Execute para visualizar os detalhes da execução da tarefa.
A captura de tela a seguir mostra um exemplo de logs de tarefas.
Se você gosta de se aprofundar nos logs de execução, no console EMR Serverless, navegue até “Aplicativos”. Os logs do driver Apache Spark indicarão o início do seu trabalho junto com os detalhes dos executores, estágios e tarefas que foram criados pelo EMR Serverless. Esses logs podem ser úteis para monitorar o progresso do seu trabalho e solucionar falhas.
Por padrão, o EMR Serverless armazenará logs de aplicativos com segurança no armazenamento gerenciado do Amazon EMR por um período de 30 dias. No entanto, você também pode especificar Amazon S3 ou Amazon CloudWatch como suas opções de entrega de log durante o envio do trabalho.
Valide o conjunto de resultados final com Athena
Vamos validar os dados carregados pelo processo usando consultas SQL do Athena.
- No console Athena, escolha Editor de consultas no painel de navegação.
- Se você estiver usando o Athena pela primeira vez, em Configurações, escolha Gerencie e insira o local do bucket S3 que você criou anteriormente (
<S3_BUCKET_NAME>/athena
), então escolha Salvar. - No editor de consultas, insira a seguinte consulta para criar uma tabela externa:
Execute a seguinte consulta no arquivo criado recentemente ny_taxi_summary
tabela para recuperar as primeiras 10 linhas para validar os dados:
limpar
Para evitar cobranças futuras, execute as seguintes etapas:
- No console do Amazon S3, exclua o bucket do S3 que você criou para armazenar o DAG, os scripts e os logs do Amazon MWAA.
- No console do Athena, elimine a tabela que você criou:
- No console do Amazon MWAA, navegue até o ambiente que você criou e escolha Apagar.
- No console do EMR Studio, exclua o aplicativo.
Para excluir o aplicativo, navegue até o Listar aplicativos página. Selecione o aplicativo que você criou e escolha Ações → Parar para parar o aplicativo. Depois que o aplicativo estiver no estado STOPPED, selecione o mesmo aplicativo e escolha Ações → Excluir.
Conclusão
A engenharia de dados é um componente crítico de muitas organizações e, à medida que os volumes de dados continuam a crescer, é essencial encontrar formas de agilizar os fluxos de trabalho de processamento de dados. A combinação do Amazon MWAA, EMR Serverless e Athena fornece uma solução poderosa para criar, executar e gerenciar pipelines de dados com eficiência. Com esse pipeline de processamento de dados de ponta a ponta, os engenheiros de dados podem processar e analisar facilmente grandes quantidades de dados de maneira rápida e econômica, sem a necessidade de gerenciar infraestruturas complexas. A integração desses serviços da AWS fornece uma solução robusta e escalável para processamento de dados, ajudando as organizações a tomar decisões informadas com base em seus insights de dados.
Agora que você viu como enviar trabalhos do Spark no EMR Serverless por meio do Amazon MWAA, recomendamos que você use o Amazon MWAA para criar um fluxo de trabalho que executará trabalhos do PySpark por meio do EMR Serverless.
Agradecemos seus comentários e perguntas. Fique à vontade para entrar em contato conosco se tiver alguma dúvida ou comentário.
Sobre os autores
Rahul Sonawane é arquiteto principal de soluções analíticas na AWS com AI/ML e análise como sua área de especialidade.
Gaurav Parekh é um arquiteto de soluções que ajuda os clientes da AWS a construir arquiteturas modernas em grande escala. Ele é especialista em análise de dados e redes. Fora do trabalho, Gaurav gosta de jogar críquete, futebol e vôlei.
Histórico de auditoria
Dezembro de 2023: Esta postagem foi revisada quanto à precisão técnica por Santosh Gantaram, gerente técnico sênior de contas.
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- PlatoData.Network Gerativa Vertical Ai. Capacite-se. Acesse aqui.
- PlatoAiStream. Inteligência Web3. Conhecimento Amplificado. Acesse aqui.
- PlatãoESG. Carbono Tecnologia Limpa, Energia, Ambiente, Solar, Gestão de resíduos. Acesse aqui.
- PlatoHealth. Inteligência em Biotecnologia e Ensaios Clínicos. Acesse aqui.
- Fonte: https://aws.amazon.com/blogs/big-data/orchestrate-amazon-emr-serverless-spark-jobs-with-amazon-mwaa-and-data-validation-using-amazon-athena/
- :tem
- :é
- :não
- $UP
- 1
- 10
- 100
- 118
- 15%
- 16
- 2022
- 2023
- 23
- 25
- 30
- 300
- 7
- 700
- 8
- 9
- 990
- a
- Sobre
- Aceita
- Acesso
- acessadas
- Conta
- precisão
- adicionar
- Depois de
- agregar
- AI / ML
- Todos os Produtos
- permite
- juntamente
- já
- tb
- Amazon
- Amazona atena
- Amazon EMR
- Amazon Web Services
- quantidade
- quantidades
- an
- analítica
- analisar
- e
- qualquer
- apache
- Apache Spark
- Aplicação
- aplicações
- aproximadamente
- arquitetura
- SOMOS
- ÁREA
- argumento
- AS
- At
- automaticamente
- disponível
- AWS
- em caminho duplo
- base
- baseado
- BE
- tornam-se
- torna-se
- entre
- Grande
- Big Data
- construir
- Prédio
- construído
- negócios
- by
- calcula
- CAN
- catálogo
- alterar
- Alterações
- acusações
- Escolha
- classificação
- Na nuvem
- Agrupar
- código
- combinação
- combinar
- vem
- comentários
- completar
- integrações
- componente
- consiste
- cônsul
- continuar
- Correspondente
- Custo
- relação custo-benefício
- custos
- crio
- criado
- cria
- Grilo
- crítico
- Clientes
- DAG
- dados,
- Análise de Dados
- informática
- conjuntos de dados
- Datas
- dias
- decisões
- profundo
- Padrão
- definição
- Entrega
- dependências
- Dependência
- detalhes
- distância
- distribuição
- mergulho
- do
- não
- duplo
- down
- download
- motorista
- Cair
- durante
- e
- cada
- Mais cedo
- facilmente
- fácil
- editor
- eficiência
- eficiente
- eficientemente
- encorajar
- end-to-end
- Engenharia
- Engenheiros
- garantir
- Entrar
- Meio Ambiente
- essencial
- Éter (ETH)
- exemplo
- execução
- externo
- extra
- falhas
- Característica
- retornos
- sentir
- Envie o
- Arquivos
- final
- Encontre
- Primeiro nome
- primeira vez
- Foco
- seguir
- seguinte
- Escolha
- formato
- QUADRO
- enquadramentos
- Gratuito
- da
- totalmente
- futuro
- gerar
- gera
- gerando
- concedido
- Verde
- Cresça:
- Cresce
- Hadoop
- manipular
- Ter
- he
- ajudar
- útil
- ajuda
- SUA PARTICIPAÇÃO FAZ A DIFERENÇA
- sua
- Colméia
- Como funciona o dobrador de carta de canal
- Como Negociar
- Contudo
- HTML
- http
- HTTPS
- IAM
- ÍCONE
- ID
- inativo
- ids
- if
- ilustrar
- ilustra
- in
- incluir
- incluído
- inclui
- cada vez mais
- indicam
- INFORMAÇÕES
- informado
- Infraestrutura
- Inicia
- iniciação
- entrada
- Inquéritos
- dentro
- insights
- instalar
- em vez disso
- instruções
- integração
- interagir
- interativo
- Internet
- envolver
- IT
- Trabalho
- Empregos
- juntar
- juntando
- Junta
- jpg
- apenas por
- grande
- por último
- mais tarde
- mais recente
- como
- LIMITE
- Line
- linhas
- local
- localização
- locais
- log
- longo
- procurando
- pesquisa
- máquina
- fazer
- FAZ
- Fazendo
- gerencia
- gerenciados
- Gerente
- gestão
- muitos
- Posso..
- metadados
- mínimo
- minutos
- EQUIPAMENTOS
- modificar
- Monitore
- mais
- nome
- Nomeado
- Navegar
- Navegação
- você merece...
- necessário
- networking
- Novo
- Próximo
- nenhum
- agora
- NYC
- of
- WOW!
- on
- uma vez
- ONE
- só
- aberto
- open source
- operação
- operadores
- Opções
- or
- organizações
- Outros
- A Nossa
- Fora
- contornos
- saída
- lado de fora
- Acima de
- global
- pacote
- página
- pão
- parte
- caminho
- pagamento
- executa
- significativo
- oleoduto
- plataforma
- platão
- Inteligência de Dados Platão
- PlatãoData
- Jogar
- jogar
- por favor
- Privacidade
- possível
- Publique
- poderoso
- pré-requisitos
- evitar
- Diretor
- privado
- processo
- processos
- em processamento
- Progresso
- provedor
- fornece
- fornecendo
- publicamente
- Python
- consultas
- Frequentes
- rapidamente
- alcançar
- recentemente
- registros
- reduzir
- confiável
- remover
- requerer
- exige
- Recursos
- resultar
- resultando
- Comentários
- Viajar
- passeios
- uma conta de despesas robusta
- Tipo
- LINHA
- Execute
- corrida
- é executado
- s
- mesmo
- escalável
- Escala
- Escalas
- dimensionamento
- cronograma
- escrita
- Scripts
- Seção
- firmemente
- segurança
- Vejo
- visto
- selecionar
- separado
- servidor
- Serverless
- serviço
- Serviços
- Sessão
- conjunto
- contexto
- rede de apoio social
- mostrar
- Shows
- simples
- simplificar
- So
- futebol
- solução
- Soluções
- fonte
- Faísca
- especializada
- Especialidade
- especificada
- SQL
- Estágio
- padrão
- Estado
- estatística
- Status
- Passos
- Dê um basta
- parou
- armazenamento
- loja
- armazenadas
- simplificar
- Tanga
- estudo
- submissão
- enviar
- sub-redes
- tal
- RESUMO
- Apoiar
- mesa
- Tire
- Tarefa
- tarefas
- Dados Técnicos:
- temporário
- ensaio
- que
- A
- deles
- Eles
- então
- Este
- isto
- três
- tempo
- vezes
- para
- hoje
- Transformar
- Transformação
- transformado
- desencadear
- viagem
- VIRAR
- dois
- tipos
- ui
- para
- compreender
- ao contrário
- Atualizar
- Atualizada
- us
- usar
- usuários
- usos
- utilização
- utiliza
- VALIDAR
- validação
- versão
- via
- Ver
- visualizações
- volume
- volumes
- queremos
- foi
- maneiras
- we
- web
- serviços web
- boas-vindas
- foram
- quando
- qual
- precisarão
- de
- sem
- Atividades:
- de gestão de documentos
- fluxos de trabalho
- preocupar-se
- preocupante
- escrever
- amarelo
- Você
- investimentos
- zefirnet
- zonas