DEV Community

Andre Yai
Andre Yai

Posted on

Conectando Athena com Amazon S3

Atualmente os cientistas de dados lidam com volumes cada vez maiores de dados, a integração entre o Amazon Athena e o Amazon S3 oferece uma solução poderosa e eficiente. Com a capacidade de executar consultas SQL em gigabytes ou até petabytes de dados armazenados no S3, os cientistas de dados podem extrair insights valiosos de maneira rápida e escalável.

O Amazon S3 serve como um repositório seguro e durável para os dados brutos, enquanto o Amazon Athena fornece uma camada de consulta simplificada, permitindo que os cientistas de dados executem consultas ad-hoc e análises complexas sem a necessidade de configurar ou gerenciar infraestrutura. Isso libera tempo e recursos para se concentrar na análise e na descoberta de padrões nos dados.

Com a capacidade de lidar com conjuntos de dados de qualquer tamanho, o Amazon Athena é uma ferramenta essencial no arsenal de qualquer cientista de dados em busca de agilidade e flexibilidade. A simplicidade de escrever consultas SQL padrão no console do Athena facilita a exploração e a análise de dados complexos, permitindo descobertas significativas.

Para cientistas de dados que buscam uma solução escalável, ágil e econômica para suas necessidades de análise de dados, a integração entre o Amazon Athena e o Amazon S3 oferece um caminho claro para desbloquear o potencial dos dados armazenados na nuvem.

Uma vez tendo acesso a conta da AWS e aos serviços mencionados acima. As etapas para este processo geralmente envolve:
1 - Inserir os dados para o bucket do S3.
2 - Verificar os tipos dos dados dos dados no S3.
3 - Criar o comando SQL para criar a tabela no Athena que referenciará os dados do S3.

Abaixo vamos supor que você possui a tarefa de analisar os dados de uma cafeteria para criar um modelo de previsão de demanda de um determinado item.

1 - Para isto pegamos os dados da fonte. Neste caso vou utilizar o dado do kaggle.
Kaggle Coffee Shop Sales Analysis
2 - Irei inserir estes dados no bucket do S3.
3 - Analisamos os tipos dos dados. Uma forma de realizar isto é usando o script abaixo.

import pandas as pd
df = pd.read_csv("./Project.csv")
# obtendo o data shape
print(df.dtypes)
# salvando no S3 e removendo o header e o index do dado
df.to_csv("s3://ay-ds-projects/projects/coffee_shop/Project.csv",headers=None, index=None)
Enter fullscreen mode Exit fullscreen mode

Atraves dele obtemos o seguinte resultado.
Tipo dos dados

4 - Criaremos uma tabela no Athena com referencia ao dado no S3. Para isto podemos utilizarmos os seguintes datatypes https://docs.aws.amazon.com/athena/latest/ug/data-types.html

CREATE EXTERNAL TABLE IF NOT EXISTS `ds_project`.`coffee_shop` (
  `transaction_id` int,
  `transaction_date` char(30),
  `transaction_time` char(30),
  `store_id` int,
  `store_location` char(100),
  `product_id` int,
  `transaction_qty` int,
  `unit_price` float,
  `Total_Bill` float,
  `product_category` char(100),
  `product_type` char(100),
  `product_detail` char(100),
  `Size` char(40),
  `Month_Name` char(30),
  `Day_Name` char(30),
  `Hour` int,
  `Month` int,
  `Day_of_Week` int
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES ('field.delim' = ',')
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://ay-ds-projects/projects/coffee_shop/'
TBLPROPERTIES ('classification' = 'csv');
Enter fullscreen mode Exit fullscreen mode

Em seguida pode realizar as operações SQL no Athena para obter informações sobre os dados.

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)

Billboard image

Try REST API Generation for MS SQL Server.

DevOps for Private APIs. With DreamFactory API Generation, you get:

  • Auto-generated live APIs mapped from database schema
  • Interactive Swagger API documentation
  • Scripting engine to customize your API
  • Built-in role-based access control

Learn more

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay