Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.

Amazon SageMaker에서 Amazon Redshift 및 RStudio 연결

작년에 우리는 일반 출시를 발표했습니다. Amazon SageMaker의 RStudio, 클라우드에서 업계 최초의 완전 관리형 RStudio Workbench 통합 개발 환경(IDE). 친숙한 RStudio IDE를 빠르게 시작하고 작업을 중단하지 않고 기본 컴퓨팅 리소스에 전화를 걸고 전화를 걸 수 있으므로 대규모로 R에서 기계 학습(ML) 및 분석 솔루션을 쉽게 구축할 수 있습니다.

SageMaker의 많은 RStudio 사용자는 SageMaker의 사용자이기도 합니다. 아마존 레드 시프트, 데이터 스토리지 및 분석 워크로드를 위한 완전 관리형 페타바이트 규모의 대규모 병렬 데이터 웨어하우스입니다. 표준 SQL 및 기존 비즈니스 인텔리전스(BI) 도구를 사용하여 모든 데이터를 빠르고 간단하며 비용 효율적으로 분석할 수 있습니다. 또한 사용자는 ODBC, JDBC 또는 Amazon Redshift Data API를 사용하여 데이터와 상호 작용할 수 있습니다.

SageMaker 및 Amazon Redshift에서 RStudio를 사용하면 클라우드에서 대규모 데이터 세트에 대한 분석을 효율적으로 수행하는 데 도움이 될 수 있습니다. 그러나 클라우드에서 데이터로 작업하면 조직의 데이터 사일로를 제거하고, 보안 및 규정 준수를 유지하고, 도구를 표준화하여 복잡성을 줄여야 하는 등의 문제가 발생할 수 있습니다. AWS는 이러한 문제를 해결하는 데 도움이 되는 SageMaker의 RStudio 및 Amazon Redshift와 같은 도구를 제공합니다.

이 블로그 게시물에서는 이 두 가지 서비스를 함께 사용하여 위에서 언급한 문제를 해결하면서 클라우드의 대규모 데이터 세트에 대한 분석을 효율적으로 수행하는 방법을 보여줍니다. 이 블로그는 비즈니스 분석가, 데이터 엔지니어, 데이터 과학자 및 R 언어와 Amazon Redshift를 사용하는 모든 개발자를 대상 고객으로 하는 Amazon SageMaker 언어의 Rstudio에 중점을 둡니다.

Amazon Redshift에서 기존 SageMaker Studio 환경을 사용하려면 다음을 참조하십시오. Amazon Redshift Data API를 사용하여 Amazon SageMaker Jupyter 노트북에서 상호 작용.

솔루션 개요

오늘 블로그에서 다음 단계를 실행할 것입니다.

  1. 필수 패키지로 샘플 리포지토리를 복제합니다.
  2. 안전한 ODBC 연결로 Amazon Redshift에 연결 (ODBC는 RStudio에 선호되는 프로토콜입니다.).
  3. SageMaker의 RStudio를 통해 Amazon Redshift Serverless 내의 데이터에 대한 쿼리 및 SageMaker API 작업 실행

이 프로세스는 다음 솔루션 아키텍처에 설명되어 있습니다.

솔루션 연습

사전 조건

시작하기 전에 다음과 같이 Amazon SageMaker 및 Amazon Redshift Serverless에서 RStudio를 설정하기 위한 모든 요구 사항이 있는지 확인하십시오.

CloudFormation 스택을 사용하여 필요한 인프라를 생성할 것입니다.

참고 : RStudio 도메인과 Amazon Redshift 클러스터가 이미 있는 경우 이 단계를 건너뛸 수 있습니다.

이 스택을 시작하면 다음 리소스가 생성됩니다.

  • 프라이빗 서브넷 3개
  • 1 퍼블릭 서브넷
  • NAT 게이트웨이 1개
  • 인터넷 게이트웨이
  • Amazon Redshift 서버리스 클러스터
  • RStudio가 포함된 SageMaker 도메인
  • SageMaker RStudio 사용자 프로필
  • SageMaker RStudio 도메인 실행을 위한 IAM 서비스 역할
  • SageMaker RStudio 사용자 프로필 실행을 위한 IAM 서비스 역할

이 템플릿은 리전(예: us-east-1, us-west-2) 가용 영역 XNUMX개, SageMaker의 RStudio 및 Amazon Redshift Serverless. 지역에 해당 리소스에 대한 액세스 권한이 있는지 확인하거나 그에 따라 템플릿을 수정하십시오.

를 누르십시오 발사 스택 버튼을 눌러 스택을 생성합니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.

  1. 스택 생성 페이지에서 선택 다음 보기.
  2. 스택 세부 사항 지정 페이지에서 스택 이름을 제공하고 나머지 옵션은 기본값으로 둔 다음 다음 보기.
  3. 스택 옵션 구성 페이지에서 옵션을 기본값으로 두고 다음 보기.
  4. 리뷰 페이지,를 선택
  • AWS CloudFormation이 사용자 지정 이름으로 IAM 리소스를 생성 할 수 있음을 인정합니다
  • AWS CloudFormation에 다음 기능이 필요할 수 있음을 인정합니다. CAPABILITY_AUTO_EXPAND체크박스를 선택하고 문의하기.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.

템플릿은 XNUMX개의 스택을 생성합니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.

스택 상태가 CREATE_COMPLETE, Amazon Redshift Serverless 콘솔로 이동합니다. 이것은 모든 규모에서 고성능으로 클라우드에서 매우 쉽게 분석을 실행할 수 있게 해주는 새로운 기능입니다. 데이터를 로드하고 쿼리를 시작하기만 하면 됩니다. 클러스터를 설정하고 관리할 필요가 없습니다.

주의 사항: Amazon SageMaker에서 Amazon Redshift와 RStudio를 통합하는 이 블로그에서 설명하는 패턴은 Amazon Redshift 배포 패턴(서버리스 또는 기존 클러스터)에 관계없이 동일합니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.

Amazon Redshift Serverless에서 데이터 로드

CloudFormation 스크립트는 다음과 같은 데이터베이스를 생성했습니다. sagemaker. RStudio 사용자가 쿼리할 테이블로 이 데이터베이스를 채우겠습니다. SQL 편집기 탭을 생성하고 sagemaker 데이터베이스가 선택되었습니다. 우리는 합성 신용 카드 거래 데이터 데이터베이스에 테이블을 생성합니다. 이 데이터는 SageMaker 샘플 테이블 형식 데이터 세트의 일부입니다. s3://sagemaker-sample-files/datasets/tabular/synthetic_credit_card_transactions.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.

쿼리 편집기에서 다음 쿼리를 실행하겠습니다. 이렇게 하면 세 개의 테이블이 생성됩니다. 카드, 거래, 사용자.

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;

쿼리 편집기의 왼쪽 창에서 세 개의 테이블을 확인하여 쿼리가 성공적으로 실행되었는지 확인할 수 있습니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.

모든 테이블이 채워지면 SageMaker RStudio로 이동하여 ml.m5.xlarge 인스턴스에서 RSession 기본 이미지로 새 세션을 시작합니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.

세션이 시작되면 이 코드를 실행하여 Amazon Redshift Serverless 데이터베이스에 대한 연결을 생성합니다.

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)

합성 스키마의 테이블을 보려면 쿼리 편집기를 통해 Amazon Redshift에서 액세스 권한을 부여해야 합니다.

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

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.

RStudio 연결 창에 sagemaker 스키마 합성 및 테이블 카드, 트랜잭션, 사용자가 있는 데이터베이스.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.

테이블 옆에 있는 테이블 아이콘을 클릭하면 1,000개의 레코드를 볼 수 있습니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.

참고: 프로젝트에서 찾을 수 있는 사전 빌드된 모든 코드 블록이 포함된 사전 빌드된 R Markdown 파일을 생성했습니다. GitHub 레포.

이제 사용해보자 DBI 패키지 기능 dbListTables() 기존 테이블을 보려면

dbListTables(con)

dbGetQuery()를 사용하여 SQL 쿼리를 데이터베이스에 전달합니다.

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

우리는 또한 dbplyrdplyr 데이터베이스에서 쿼리를 실행하는 패키지. 하자 count() 트랜잭션 테이블에 얼마나 많은 트랜잭션이 있는지. 그러나 먼저 이러한 패키지를 설치해야 합니다.

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

사용 tbl() 스키마를 지정하는 동안 함수.

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"))

각 테이블의 행 수를 세어 보겠습니다.

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

2,000명의 사용자가 있습니다. 6,146장의 카드; 24,386,900 건의 거래. 콘솔에서 테이블을 볼 수도 있습니다.

transactions_tbl

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.

우리는 또한 무엇을 볼 수 있습니다 dplyr 동사는 후드 아래에서하고 있습니다.

show_query(transactions_tbl)

연도별 거래 건수를 시각적으로 살펴보겠습니다.

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') 

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.

다음과 같이 데이터베이스의 데이터를 요약할 수도 있습니다.

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

카드 정보를 사용하여 사기를 보고 싶다고 가정합니다. 테이블을 조인한 다음 속성별로 그룹화하기만 하면 됩니다.

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

이제 기계 학습에 사용할 수 있는 데이터 세트를 준비하겠습니다. 열의 하위 집합만 유지하면서 Discover 신용 카드만 포함하도록 거래 데이터를 필터링해 보겠습니다.

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)

이제 다음 변환을 사용하여 일부 정리를 수행해 보겠습니다.

  • 개 심자 is_fraud 이진 속성으로
  • 에서 트랜잭션 문자열 제거 use_chip 유형으로 이름을 바꿉니다.
  • 연도, 월, 일을 데이터 개체로 결합
  • 금액에서 $를 제거하고 숫자 데이터 유형으로 변환
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)

이제 데이터 세트를 필터링하고 정리했으므로 이 데이터 세트를 로컬 RAM에 수집할 준비가 되었습니다.

discover <- collect(discover_tbl)
summary(discover)

이제 피쳐 생성 및 모델 피팅을 시작할 수 있는 작업 데이터 세트가 있습니다. 이 블로그에서는 해당 단계를 다루지 않지만 SageMaker의 RStudio에서 모델을 빌드하는 방법에 대해 자세히 알아보려면 다음을 참조하십시오. 데이터 과학자를 위한 Amazon SageMaker의 완전 관리형 RStudio 발표.

대청소

반복 비용 발생을 방지하기 위해 리소스를 정리하려면 루트 CloudFormation 템플릿을 삭제하십시오. 또한 생성된 모든 EFS 마운트와 생성된 모든 S3 버킷 및 객체를 삭제합니다.

결론

클라우드에서 대규모 데이터 세트로 작업할 때 데이터 분석 및 모델링이 어려울 수 있습니다. Amazon Redshift는 사용자가 이러한 작업을 수행하는 데 도움이 되는 인기 있는 데이터 웨어하우스입니다. 데이터 분석을 위해 가장 널리 사용되는 IDE(통합 개발 환경) 중 하나인 RStudio는 R 언어와 함께 자주 사용됩니다. 이 블로그 게시물에서는 SageMaker에서 Amazon Redshift와 RStudio를 함께 사용하여 대규모 데이터 세트에 대한 분석을 효율적으로 수행하는 방법을 보여주었습니다. SageMaker에서 RStudio를 사용하면 사용자는 SageMaker의 완전 관리형 인프라, 액세스 제어, 네트워킹 및 보안 기능을 활용하는 동시에 Amazon Redshift와의 통합을 간소화할 수 있습니다. 이 두 가지 도구를 함께 사용하는 방법에 대해 자세히 알아보려면 다른 블로그 게시물과 리소스를 확인하십시오. SageMaker 및 Amazon Redshift에서 RStudio를 직접 사용해 보고 데이터 분석 및 모델링 작업에 어떻게 도움이 되는지 확인할 수도 있습니다.

이 블로그에 피드백을 추가하거나 풀 리퀘스트를 작성하십시오. GitHub의.


저자에 관하여

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.라이언 가너 AWS Professional Services의 데이터 과학자입니다. 그는 AWS 고객이 R을 사용하여 데이터 과학 및 기계 학습 문제를 해결하도록 돕는 데 열정적입니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.라지 파탁 금융 서비스(보험, 은행, 자본 시장) 및 기계 학습을 전문으로 하는 선임 솔루션 설계자 및 기술자입니다. 그는 자연어 처리(NLP), 대규모 언어 모델(LLM) 및 기계 학습 인프라 및 운영 프로젝트(MLOps)를 전문으로 합니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.아디티 라지니쉬 워털루 대학의 소프트웨어 공학 XNUMX학년 학생입니다. 그녀의 관심사는 컴퓨터 비전, 자연어 처리 및 에지 컴퓨팅입니다. 그녀는 또한 커뮤니티 기반 STEM 지원 및 옹호에 열정적입니다. 여가 시간에는 암벽 등반, 피아노 연주, 완벽한 스콘 굽는 법 배우기 등을 할 수 있습니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 Amazon Redshift와 RStudio를 연결합니다. 수직 검색. 일체 포함.사이테자 푸디 Tx 달라스에 본사를 둔 AWS의 솔루션 아키텍트입니다. 그는 현재 3년 이상 AWS에서 근무하면서 고객이 신뢰할 수 있는 조언자가 되어 AWS의 진정한 잠재력을 이끌어낼 수 있도록 돕고 있습니다. 그는 데이터 과학 및 기계 학습에 관심이 있는 응용 프로그램 개발 배경을 가지고 있습니다.

타임 스탬프 :

더보기 AWS 기계 학습