Conectando Athena com Amazon S3

Andre Yai
3 min readMar 31, 2024

--

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)

Através dele obtemos o seguinte resultado.

Formato do dado

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.

--

--

Andre Yai

Follow me on this journey of learning more about cloud, machine learning systems, and big data. https://br.linkedin.com/in/andre-yai