Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker

Năm ngoái, chúng tôi đã thông báo về tính khả dụng chung của RStudio trên Amazon SageMaker, môi trường phát triển tích hợp (IDE) RStudio Workbench được quản lý hoàn toàn đầu tiên trong ngành trên đám mây. Bạn có thể nhanh chóng khởi chạy RStudio IDE quen thuộc và quay số lên và xuống các tài nguyên điện toán cơ bản mà không làm gián đoạn công việc của mình, giúp dễ dàng xây dựng các giải pháp phân tích và máy học (ML) trong R trên quy mô lớn.

Nhiều người dùng RStudio trên SageMaker cũng là người dùng của Amazon RedShift, một kho dữ liệu song song lớn, quy mô petabyte, được quản lý hoàn toàn để lưu trữ dữ liệu và khối lượng công việc phân tích. Nó làm cho việc phân tích tất cả dữ liệu của bạn bằng cách sử dụng SQL tiêu chuẩn và các công cụ kinh doanh thông minh (BI) hiện có của bạn trở nên nhanh chóng, đơn giản và tiết kiệm chi phí. Người dùng cũng có thể tương tác với dữ liệu bằng ODBC, JDBC hoặc API dữ liệu Amazon Redshift.

Việc sử dụng RStudio trên SageMaker và Amazon Redshift có thể hữu ích để thực hiện phân tích hiệu quả trên các tập dữ liệu lớn trên đám mây. Tuy nhiên, làm việc với dữ liệu trên đám mây có thể đưa ra những thách thức, chẳng hạn như nhu cầu loại bỏ các silo dữ liệu của tổ chức, duy trì tính bảo mật và tuân thủ cũng như giảm độ phức tạp bằng cách chuẩn hóa công cụ. AWS cung cấp các công cụ như RStudio trên SageMaker và Amazon Redshift để giúp giải quyết những thách thức này.

Trong bài đăng trên blog này, chúng tôi sẽ chỉ cho bạn cách sử dụng đồng thời cả hai dịch vụ này để thực hiện phân tích hiệu quả các tập dữ liệu lớn trên đám mây đồng thời giải quyết các thách thức nêu trên. Blog này tập trung vào Rstudio trên ngôn ngữ Amazon SageMaker, với các nhà phân tích kinh doanh, kỹ sư dữ liệu, nhà khoa học dữ liệu và tất cả các nhà phát triển sử dụng Ngôn ngữ R và Amazon Redshift làm đối tượng mục tiêu.

Nếu bạn muốn sử dụng trải nghiệm SageMaker Studio truyền thống với Amazon Redshift, hãy tham khảo Sử dụng API dữ liệu Amazon Redshift để tương tác từ sổ ghi chép Amazon SageMaker Jupyter.

Tổng quan về giải pháp

Trong blog ngày hôm nay, chúng tôi sẽ thực hiện các bước sau:

  1. Nhân bản kho lưu trữ mẫu với các gói cần thiết.
  2. Kết nối với Amazon Redshift bằng kết nối ODBC an toàn (ODBC là giao thức ưa thích cho RStudio).
  3. Chạy các truy vấn và hành động API SageMaker trên dữ liệu trong Amazon Redshift Serverless thông qua RStudio trên SageMaker

Quá trình này được mô tả trong kiến ​​trúc giải pháp sau:

Hướng dẫn giải pháp

Điều kiện tiên quyết

Trước khi bắt đầu, hãy đảm bảo bạn có tất cả các yêu cầu để thiết lập RStudio trên Amazon SageMaker và Amazon Redshift Serverless, chẳng hạn như:

Chúng tôi sẽ sử dụng ngăn xếp CloudFormation để tạo cơ sở hạ tầng cần thiết.

Lưu ý: Nếu bạn đã có miền RStudio và cụm Amazon Redshift, bạn có thể bỏ qua bước này

Khởi chạy ngăn xếp này sẽ tạo ra các tài nguyên sau:

  • 3 Mạng con riêng
  • 1 Mạng con công cộng
  • 1 cổng NAT
  • Cổng Internet
  • Cụm Amazon Redshift Serverless
  • Miền SageMaker với RStudio
  • Hồ sơ người dùng SageMaker RStudio
  • Vai trò dịch vụ IAM để thực thi miền SageMaker RStudio
  • Vai trò dịch vụ IAM để thực thi hồ sơ người dùng SageMaker RStudio

Mẫu này được thiết kế để hoạt động trong Khu vực (ví dụ: us-east-1, us-west-2) với ba Vùng sẵn sàng, RStudio trên SageMaker và Amazon Redshift Serverless. Đảm bảo Khu vực của bạn có quyền truy cập vào các tài nguyên đó hoặc sửa đổi các mẫu cho phù hợp.

Nhấn Khởi chạy Stack để tạo ngăn xếp.

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

  1. trên Tạo ngăn xếp trang, chọn Sau.
  2. trên Chỉ định chi tiết ngăn xếp trang, cung cấp tên cho ngăn xếp của bạn và để các tùy chọn còn lại làm mặc định, sau đó chọn Sau.
  3. trên Cấu hình tùy chọn ngăn xếp trang, hãy để các tùy chọn như mặc định và nhấn Sau.
  4. trên Trang đánh giá, chọn nút
  • Tôi xác nhận rằng AWS CloudFormation có thể tạo tài nguyên IAM với tên tùy chỉnh
  • Tôi xác nhận rằng AWS CloudFormation có thể yêu cầu khả năng sau: CAPABILITY_AUTO_EXPANDhộp kiểm và chọn Gửi.

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Mẫu sẽ tạo ra năm ngăn xếp.

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Khi trạng thái ngăn xếp là TẠO_COMPLETE, điều hướng đến bảng điều khiển Amazon Redshift Serverless. Đây là một khả năng mới giúp chạy phân tích trên đám mây cực kỳ dễ dàng với hiệu suất cao ở mọi quy mô. Chỉ cần tải dữ liệu của bạn và bắt đầu truy vấn. Không cần phải thiết lập và quản lý các cụm.

Chú thích: Mẫu được minh họa trong blog này khi tích hợp Amazon Redshift và RStudio trên Amazon SageMaker sẽ giống nhau bất kể mẫu triển khai Amazon Redshift (cụm truyền thống hay phi máy chủ).

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Đang tải dữ liệu trong Amazon Redshift Serverless

Tập lệnh CloudFormation đã tạo một cơ sở dữ liệu có tên sagemaker. Hãy điền vào cơ sở dữ liệu này các bảng để người dùng RStudio truy vấn. Tạo một tab soạn thảo SQL và chắc chắn rằng sagemaker cơ sở dữ liệu được chọn. Chúng tôi sẽ sử dụng dữ liệu giao dịch thẻ tín dụng tổng hợp để tạo các bảng trong cơ sở dữ liệu của chúng tôi. Dữ liệu này là một phần của bộ dữ liệu dạng bảng mẫu SageMaker s3://sagemaker-sample-files/datasets/tabular/synthetic_credit_card_transactions.

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Chúng tôi sẽ thực hiện truy vấn sau trong trình chỉnh sửa truy vấn. Điều này sẽ tạo ra ba bảng, thẻ, giao dịch, Người sử dụng.

CREATE SCHEMA IF NOT EXISTS synthetic;
DROP TABLE IF EXISTS synthetic.transactions;

CREATE TABLE synthetic.transactions(
    user_id INT,
    card_id INT,
    year INT,
    month INT,
    day INT,
    time_stamp TIME,
    amount VARCHAR(100),
    use_chip VARCHAR(100),
    merchant_name VARCHAR(100),
    merchant_city VARCHAR(100),
    merchant_state VARCHAR(100),
    merchant_zip_code VARCHAR(100),
    merchant_category_code INT,
    is_error VARCHAR(100),
    is_fraud VARCHAR(100)
);

COPY synthetic.transactions
FROM 's3://sagemaker-sample-files/datasets/tabular/synthetic_credit_card_transactions/credit_card_transactions-ibm_v2.csv'
IAM_ROLE default
REGION 'us-east-1' 
IGNOREHEADER 1 
CSV;

DROP TABLE IF EXISTS synthetic.cards;

CREATE TABLE synthetic.cards(
    user_id INT,
    card_id INT,
    card_brand VARCHAR(100),
    card_type VARCHAR(100),
    card_number VARCHAR(100),
    expire_date VARCHAR(100),
    cvv INT,
    has_chip VARCHAR(100),
    number_cards_issued INT,
    credit_limit VARCHAR(100),
    account_open_date VARCHAR(100),
    year_pin_last_changed VARCHAR(100),
    is_card_on_dark_web VARCHAR(100)
);

COPY synthetic.cards
FROM 's3://sagemaker-sample-files/datasets/tabular/synthetic_credit_card_transactions/sd254_cards.csv'
IAM_ROLE default
REGION 'us-east-1' 
IGNOREHEADER 1 
CSV;

DROP TABLE IF EXISTS synthetic.users;

CREATE TABLE synthetic.users(
    name VARCHAR(100),
    current_age INT,
    retirement_age INT,
    birth_year INT,
    birth_month INT,
    gender VARCHAR(100),
    address VARCHAR(100),
    apartment VARCHAR(100),
    city VARCHAR(100),
    state VARCHAR(100),
    zip_code INT,
    lattitude VARCHAR(100),
    longitude VARCHAR(100),
    per_capita_income_zip_code VARCHAR(100),
    yearly_income VARCHAR(100),
    total_debt VARCHAR(100),
    fico_score INT,
    number_credit_cards INT
);

COPY synthetic.users
FROM 's3://sagemaker-sample-files/datasets/tabular/synthetic_credit_card_transactions/sd254_users.csv'
IAM_ROLE default
REGION 'us-east-1' 
IGNOREHEADER 1 
CSV;

Bạn có thể xác thực rằng truy vấn đã chạy thành công bằng cách xem ba bảng trong ngăn bên trái của trình chỉnh sửa truy vấn.

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Sau khi tất cả các bảng được điền, hãy điều hướng đến SageMaker RStudio và bắt đầu phiên mới với hình ảnh cơ sở RSession trên phiên bản ml.m5.xlarge.

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Sau khi phiên được khởi chạy, chúng tôi sẽ chạy mã này để tạo kết nối với cơ sở dữ liệu Amazon Redshift Serverless của chúng tôi.

library(DBI)
library(reticulate)
boto3 <- import('boto3')
client <- boto3$client('redshift-serverless')
workgroup <- unlist(client$list_workgroups())
namespace <- unlist(client$get_namespace(namespaceName=workgroup$workgroups.namespaceName))
creds <- client$get_credentials(dbName=namespace$namespace.dbName,
                                durationSeconds=3600L,
                                workgroupName=workgroup$workgroups.workgroupName)
con <- dbConnect(odbc::odbc(),
                 Driver='redshift',
                 Server=workgroup$workgroups.endpoint.address,
                 Port='5439',
                 Database=namespace$namespace.dbName,
                 UID=creds$dbUser,
                 PWD=creds$dbPassword)

Để xem các bảng trong lược đồ tổng hợp, bạn cần cấp quyền truy cập trong Amazon Redshift thông qua trình chỉnh sửa truy vấn.

GRANT ALL ON SCHEMA synthetic to "IAMR:SageMakerUserExecutionRole";
GRANT ALL ON ALL TABLES IN SCHEMA synthetic to "IAMR:SageMakerUserExecutionRole";

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

RStudio Kết nối cửa sổ sẽ hiển thị sagemaker cơ sở dữ liệu với lược đồ tổng hợp và bảng thẻ, giao dịch, người dùng.

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Bạn có thể nhấp vào biểu tượng bảng bên cạnh các bảng để xem 1,000 bản ghi.

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Lưu ý: Chúng tôi đã tạo tệp R Markdown dựng sẵn với tất cả các khối mã dựng sẵn có thể tìm thấy tại dự án Repo GitHub.

Bây giờ hãy sử dụng DBI gói chức năng dbListTables() để xem các bảng hiện có.

dbListTables(con)

Sử dụng dbGetQuery() để chuyển truy vấn SQL tới cơ sở dữ liệu.

dbGetQuery(con, "select * from synthetic.users limit 100")
dbGetQuery(con, "select * from synthetic.cards limit 100")
dbGetQuery(con, "select * from synthetic.transactions limit 100")

Chúng tôi cũng có thể sử dụng dbplyrdplyr gói để thực hiện các truy vấn trong cơ sở dữ liệu. Hãy count() có bao nhiêu giao dịch trong bảng giao dịch. Nhưng trước tiên, chúng ta cần cài đặt các gói này.

install.packages(c("dplyr", "dbplyr", "crayon"))

Sử dụng tbl() chức năng trong khi chỉ định lược đồ.

library(dplyr)
library(dbplyr)

users_tbl <- tbl(con, in_schema("synthetic", "users"))
cards_tbl <- tbl(con, in_schema("synthetic", "cards"))
transactions_tbl <- tbl(con, in_schema("synthetic", "transactions"))

Hãy đếm số lượng hàng cho mỗi bảng.

count(users_tbl)
count(cards_tbl)
count(transactions_tbl)

Vì vậy, chúng tôi có 2,000 người dùng; 6,146 thẻ; và 24,386,900 giao dịch. Chúng ta cũng có thể xem các bảng trong bảng điều khiển.

transactions_tbl

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Chúng ta cũng có thể xem những gì dplyr động từ đang làm dưới mui xe.

show_query(transactions_tbl)

Hãy khám phá trực quan số lượng giao dịch theo năm.

transactions_by_year %
  count(year) %>%
  arrange(year) %>%
  collect()

transactions_by_year
install.packages(c('ggplot2', 'vctrs'))
library(ggplot2)
ggplot(transactions_by_year) +
  geom_col(aes(year, as.integer(n))) +
  ylab('transactions') 

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Ta cũng có thể tóm tắt dữ liệu trong cơ sở dữ liệu như sau:

transactions_tbl %>%
  group_by(is_fraud) %>%
  count()
transactions_tbl %>%
  group_by(merchant_category_code, is_fraud) %>%
  count() %>% 
  arrange(merchant_category_code)

Giả sử chúng ta muốn xem gian lận sử dụng thông tin thẻ. Chúng ta chỉ cần nối các bảng và sau đó nhóm chúng theo thuộc tính.

cards_tbl %>%
  left_join(transactions_tbl, by = c("user_id", "card_id")) %>%
  group_by(card_brand, card_type, is_fraud) %>%
  count() %>% 
  arrange(card_brand)

Bây giờ, hãy chuẩn bị một bộ dữ liệu có thể được sử dụng cho máy học. Hãy lọc dữ liệu giao dịch để chỉ bao gồm thẻ tín dụng Khám phá trong khi chỉ giữ một tập hợp con các cột.

discover_tbl %
  filter(card_brand == 'Discover', card_type == 'Credit') %>%
  left_join(transactions_tbl, by = c("user_id", "card_id")) %>%
  select(user_id, is_fraud, merchant_category_code, use_chip, year, month, day, time_stamp, amount)

Và bây giờ, hãy thực hiện một số thao tác làm sạch bằng cách sử dụng các phép biến đổi sau:

  • Chuyển đổi is_fraud thuộc tính nhị phân
  • Xóa chuỗi giao dịch khỏi use_chip và đổi tên nó thành gõ
  • Kết hợp năm, tháng và ngày vào một đối tượng dữ liệu
  • Xóa $ khỏi số tiền và chuyển thành kiểu dữ liệu số
discover_tbl %
  mutate(is_fraud = ifelse(is_fraud == 'Yes', 1, 0),
         type = str_remove(use_chip, 'Transaction'),
         type = str_trim(type),
         type = tolower(type),
         date = paste(year, month, day, sep = '-'),
         date = as.Date(date),
         amount = str_remove(amount, '[$]'),
         amount = as.numeric(amount)) %>%
  select(-use_chip, -year, -month, -day)

Bây giờ chúng tôi đã lọc và làm sạch tập dữ liệu của mình, chúng tôi đã sẵn sàng thu thập tập dữ liệu này vào RAM cục bộ.

discover <- collect(discover_tbl)
summary(discover)

Bây giờ chúng tôi có một tập dữ liệu đang hoạt động để bắt đầu tạo các tính năng và mô hình phù hợp. Chúng tôi sẽ không trình bày các bước đó trong blog này, nhưng nếu bạn muốn tìm hiểu thêm về cách xây dựng mô hình trong RStudio trên SageMaker, hãy tham khảo Thông báo RStudio được quản lý hoàn toàn trên Amazon SageMaker cho các nhà khoa học dữ liệu.

Dọn dẹp

Để dọn sạch mọi tài nguyên nhằm tránh phát sinh chi phí định kỳ, hãy xóa mẫu CloudFormation gốc. Đồng thời xóa tất cả các giá treo EFS đã tạo và mọi đối tượng và bộ chứa S3 đã tạo.

Kết luận

Phân tích và lập mô hình dữ liệu có thể là một thách thức khi làm việc với các bộ dữ liệu lớn trên đám mây. Amazon Redshift là kho dữ liệu phổ biến có thể giúp người dùng thực hiện các tác vụ này. RStudio, một trong những môi trường phát triển tích hợp (IDE) được sử dụng rộng rãi nhất để phân tích dữ liệu, thường được sử dụng với ngôn ngữ R. Trong bài đăng trên blog này, chúng tôi đã trình bày cách sử dụng đồng thời Amazon Redshift và RStudio trên SageMaker để thực hiện phân tích hiệu quả trên các bộ dữ liệu lớn. Bằng cách sử dụng RStudio trên SageMaker, người dùng có thể tận dụng cơ sở hạ tầng được quản lý hoàn toàn, khả năng kiểm soát truy cập, kết nối mạng và bảo mật của SageMaker, đồng thời đơn giản hóa việc tích hợp với Amazon Redshift. Nếu bạn muốn tìm hiểu thêm về cách sử dụng hai công cụ này cùng nhau, hãy xem các bài đăng và tài nguyên trên blog khác của chúng tôi. Bạn cũng có thể thử sử dụng RStudio trên SageMaker và Amazon Redshift cho chính mình và xem cách chúng có thể giúp bạn thực hiện các nhiệm vụ lập mô hình và phân tích dữ liệu.

Vui lòng thêm phản hồi của bạn vào blog này hoặc tạo yêu cầu kéo trên GitHub.


Về các tác giả

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Ryan Garner là Nhà khoa học dữ liệu với AWS Professional Services. Anh ấy đam mê giúp khách hàng AWS sử dụng R để giải quyết các vấn đề về Khoa học dữ liệu và Máy học của họ.

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Raj Pathak là Kiến trúc sư giải pháp cao cấp và Nhà công nghệ chuyên về Dịch vụ tài chính (Bảo hiểm, Ngân hàng, Thị trường vốn) và Học máy. Ông chuyên về Xử lý ngôn ngữ tự nhiên (NLP), Mô hình ngôn ngữ lớn (LLM) và các dự án vận hành và cơ sở hạ tầng học máy (MLOps).

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Aditi Rajnish là sinh viên kỹ thuật phần mềm năm thứ hai tại Đại học Waterloo. Sở thích của cô bao gồm thị giác máy tính, xử lý ngôn ngữ tự nhiên và điện toán cạnh. Cô ấy cũng đam mê tiếp cận và vận động chính sách STEM dựa vào cộng đồng. Khi rảnh rỗi, người ta có thể bắt gặp cô ấy leo núi, chơi piano hoặc học cách nướng bánh nướng hoàn hảo.

Kết nối Amazon Redshift và RStudio trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Saiteja Pudi là Kiến trúc sư giải pháp tại AWS, có trụ sở tại Dallas, Tx. Anh ấy đã làm việc với AWS hơn 3 năm nay, giúp khách hàng khai thác tiềm năng thực sự của AWS bằng cách trở thành cố vấn đáng tin cậy của họ. Anh ấy xuất thân từ nền tảng phát triển ứng dụng, quan tâm đến Khoa học dữ liệu và Học máy.

Dấu thời gian:

Thêm từ Học máy AWS