Athena and SageMaker

Giới thiệu

Amazon SageMaker là một nền tảng machine learning toàn diện cho phép bạn xây dựng, đào tạo và triển khai các mô hình machine learning trong AWS. Đây là một dịch vụ có tính mô-đun cao cho phép bạn sử dụng từng thành phần này một cách độc lập với nhau.

Ở bài này, chúng ta sẽ thực hành:

  • Cách sử dụng Jupyter notebooks trong SageMaker để tích hợp với data lake bằng Athena
  • Tạo data frames để thao tác với dữ liệu

Athena

Tạo Amazon SageMaker Notebook Instance

  1. Truy cập Amazon Sagemaker, Tại Notebook instances chọn Create notebook instance Athena

  2. Nhập các thông tin sau:

  • Name: datalake-Sagemaker
  • Type: ml.t3.medium
  • Elastic Inference: none.
  • IAM role: Tạo IAM role Any S3 bucket, gán thêm AmazonAthenaFullAccess Athena

Athena

Athena

Chọn Create notebook instance Athena

  1. Đợi Trạng thái của note book thành InService. Chọn Open Jupyter Athena

  2. Mở notebook interface Athena

Kết nối SageMaker Jupyter notebook tới Athena

  1. Tại Jupyter notebook tab, Chọn New và chọn conda_python3 Athena

  2. Cài đặt PyAthena

!pip install PyAthena[SQLAlchemy]

Athena

Làm việc với panda

  1. Chạy Command sau đây bằng notebook cell để lấy region hiện tại
!aws configure get region

Chạy đoạn code sau trong note book:

from sqlalchemy import create_engine
import pandas as pd

s3_staging_dir = "s3://dmslab-student-dmslabs3bucket-xxx/athenaquery/"
connection_string = f"awsathena+rest://:@athena.us-east-1.amazonaws.com:443/ticketdata?s3_staging_dir={s3_staging_dir}"

engine = create_engine(connection_string)

df = pd.read_sql('SELECT * FROM "ticketdata"."nfl_stadium_data" order by stadium limit 10;', engine)
df
  1. Chọn Run và quan sát dataframe,

Athena

df = pd.read_sql('SELECT sport, \
       event_date_time, \
       home_team,away_team, \
       city, \
       count(*) as tickets, \
       sum(ticket_price) as total_tickets_amt, \
       avg(ticket_price) as avg_ticket_price, \
       max(ticket_price) as max_ticket_price, \
       min(ticket_price) as min_ticket_price  \
       FROM "ticketdata"."sporting_event_ticket_info" \
       group by 1,2,3,4,5 \
       order by 1,2,3,4,5  limit 1000;', engine)
df

Athena

  1. Vẽ biểu đồ
import matplotlib.pyplot as plt 
df.plot(x='event_date_time',y='avg_ticket_price')

Athena