Conectando Athena com Amazon S3
Tags: datascience, athena, s3
Published: 2024-03-30 22:21:22

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](https://www.kaggle.com/datasets/divu2001/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)
```

Atraves dele obtemos o seguinte resultado.
![Tipo dos dados](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gvsn35wl8y2rkddu3pqs.png)

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');
``` 
Em seguida pode realizar as operações SQL no Athena para obter informações sobre os dados.