Bootcamp de Engenharia de Dados
Setup AWS
- Crie uma conta na AWS (Conta root);
- Crie uma conta com permissão de
administrador
para ser a conta usada para projeto; - Crie um servidor PostgreSQL na versão 13 usando o Amazon RDS;
- Clique no Security Groupo e libere o acesso a porta 5432 vindo do seu ip público;
Setup Ingestion to RDS
- Edite o arquivo
.env
com as informções do Amazon RDS; - Instale todas as bibliotecas necessárias para rodar a aplicação de ingestão com o comando:
pip install -r requirements.txt
- Execute a aplicação
app-ingestion-sql
- Conecte no banco de dados usando algum cliente de banco de dados, por exemplo o dbeaver e verifique se as tabelas foram criadas.
Setup Ingestion to Data Lake
- Edite o arquivo .env informando as credencias de chave de acesso, por exemplo:
AWS_ACCESS_KEY_ID=AKIA4WFGE4SB25sdfadf
AWS_SECRET_ACCESS_KEY=mwXXs8NjLwI83fnxrZ7rm4zsQHEftY3adfafd
- Crie um bucket na aws, no meu caso criei raw-bootcampde-872226808963
- Edit o arquivo .env informando o nome do bucket criado na variável BUCKET_NAME
- Execute a aplicação
app-mobile-customers.py
- Verifique se os arquivos .json estão sendo inseridos no bucket.
Importante:
-
Interrompa o banco de dados RDS.
-
DMS Setup
- Crie uma instância de replicação.
- Crie os endpoints target e source.
- Use o código abaixo para criar a police/role para o endpoint target no s3.
- Documentação do s3 como target endpoint: https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.S3.html
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:DeleteObject",
"s3:PutObjectTagging"
],
"Resource": [
"arn:aws:s3:::raw-bootcampde-872226808963/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::raw-bootcampde-872226808963"
]
}
]
}
- Adicione a opção
AddColumName
no endpoint target. - Crie uma task para iniciar o DMS.
Setup EMR
- Libere o acesso na porta 22. Para isso clique em
EC2 security group
clique no security group e libere a porta 22 para o IP.
Acesso via ssh com Putty:
-
- Download PuTTY.exe to your computer from: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
- Start PuTTY.
- In the Category list, choose Session.
- In the Host Name field, enter hadoop@ec2-52-23-204-207.compute-1.amazonaws.com
- In the Category list, expand Connection > SSH and then choose Auth.
- For private key file for authentication, choose Browse and select the private key file (key-boot02.ppk) that you used to launch the cluster.
- Select Open.
- Select Yes to dismiss the security alert.
- Copie a aplicação para o servidor do Amazon EMR usando o WinScp (Windows) ou o scp (linux), para linux segue um exemplo:
scp -i ~/Downloads/pair-bootcamp.pem job-spark-app-emr-redshift.py hadoop@ec2-54-90-3-194.compute-1.amazonaws.com:/home/hadoop/
- Para executar o cluster Spark use o comando abaixo:
spark-submit --packages io.delta:delta-core_2.12:2.0.0 --conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" --conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog" app-spark-processing.py
Crawlers
- Usar os data catalog com o caminho o URI do objeto:
s3://teste-872226808963/orders/
- Sempre usar a barra no final para informar o data store.
- Usar Natives tables
Athena
- Importante: Alterar o engine para usar athena 3.0 (tabelas delta)
- Utilize o arquivo
querys.sql
para consultar as tabelas diretamente no Athena.
Setup Athena + Power BI
Configuração do DSN 1 - Baixar o drive ODBC no site: Conectar-se ao Amazon Athena com ODBC - Amazon Athena
1.1 - Escolha o drive conforme o sitema operacional:
2 – Instalar o drive baixado.
3 – No Windows pesquise "Odbc" no menu iniciar, depois clique em em Fonte de dados ODBC > DSN de sistema > Adicionar
4 – Clique em DNS do Sistema, depois escolha o Simba Athena ODBC drive
5 – Configurar o Simba com os dados solicitados
6 – Configurar as opções de autenticação
Obtendo dados do Athena no Power BI
1 – No Power BI, em obter dados, selecionar o conector ODBC
2 – Escolher o DSN configurado
3 – Escolher as tabelas desejadas
Delta tables
- Enforcement Schema
ALTER TABLE public.customers ADD sexo varchar NULL;
ALTER TABLE public.orders ADD setor varchar NULL;
ALTER TABLE public.products ADD estoque_id varchar NULL;
- Para trabalhar com alteração de schemas em tabelas delta use:
- mergeSchema para atualizações em tabelas.
- overwriteSchema para sobrescrever todo o schema de uma tabela.
.option("mergeSchema", "true")\
.option("overwriteSchema", "true")\
Terraform
- Instale o aplicativo aws-cli
- Faça o download aqui conforme o seu sistema operacional: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
- Se estiver usando Windows instale com o seguinte comando:
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi
-
Feche o VSCode e abra novamente para o terminal encontrar o
aws
app no terminal. -
abra o terminal e digite: aws configure
-
entre com as credenciais, exemplo: ACCESS_KEY: AKIA4WFGE4SBSIJOBTdd SECRET_KEY: 1qNX6PCP+g3RzjFank+nRKnLiIDMkYQfQMDcMdfx
-
Para validar que as credenciais da AWS deram certo execute o comando: aws s3 ls
-
Deve listar os buckets da conta.
Terraform - Infraestrutura como Código
-
Antes de fazer o setup do terraform crie um bucket para ser nosso bucket de backend.
-
Após criar o bucket, edite o arquivo backend.tf informando o nome do bucket criado. Exemplo:
terraform { backend "s3" { # Edit the bucket name and region bucket = "stack-terraform-backend-872226808963" key = "global/s3/terraform.tfstate" region = "us-east-1" } }*
Instalando o Terraform
-
Faça o download aqui: https://developer.hashicorp.com/terraform/downloads
-
extraia o binário do terraform dentro da pasta "terraform".
-
Execute o comando para inicializar o terraform e fazer o setup do bucket para o backend
terraform init
- Execute o comando abaixo para planejar os recursos a serem criados:
terraform plan
- Execute o comando abaixo para fazer deploy de todos os recursos:
terraform apply
- Execute o comando abaixo para fazer remover toda infraestrutura criada:
terraform destroy