Amazon SageMaker PlatoBlockchain Data Intelligence で Amazon Redshift と RStudio を接続します。垂直検索。あい。

Amazon SageMaker で Amazon Redshift と RStudio を接続する

昨年、Google は の一般提供を発表しました。 AmazonSageMakerのRStudioは、業界初の完全マネージド型 RStudio Workbench 統合開発環境 (IDE) であるクラウドです。 使い慣れた RStudio IDE をすばやく起動し、作業を中断することなく、基盤となるコンピューティング リソースをダイヤルアップおよびダイヤルダウンできるため、R で大規模な機械学習 (ML) および分析ソリューションを簡単に構築できます。

RStudio on SageMaker ユーザーの多くは、 Amazonレッドシフトは、データ ストレージと分析ワークロード用の、フル マネージドのペタバイト規模の超並列データ ウェアハウスです。 標準 SQL と既存のビジネス インテリジェンス (BI) ツールを使用して、すべてのデータを迅速、簡単、かつ費用対効果の高い方法で分析できます。 ユーザーは、ODBC、JDBC、または Amazon Redshift Data API を使用してデータを操作することもできます。

SageMaker と Amazon Redshift で RStudio を使用すると、クラウド内の大規模なデータ セットの分析を効率的に実行するのに役立ちます。 ただし、クラウド内のデータを操作すると、組織のデータ サイロを取り除き、セキュリティとコンプライアンスを維持し、ツールを標準化して複雑さを軽減する必要があるなどの課題が生じる可能性があります。 AWS は、SageMaker の RStudio や Amazon Redshift などのツールを提供して、これらの課題に取り組むのに役立ちます。

このブログ投稿では、上記の課題に対処しながら、クラウド内の大量のデータ セットの分析を効率的に実行するために、これらのサービスの両方を一緒に使用する方法を紹介します。 このブログでは、ビジネス アナリスト、データ エンジニア、データ サイエンティスト、および R 言語と Amazon Redshift を使用するすべての開発者を対象読者として、Amazon SageMaker 言語の Rstudio に焦点を当てています。

従来の SageMaker Studio エクスペリエンスを Amazon Redshift で使用したい場合は、以下を参照してください。 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 つのパブリックサブネット
  • 1 NAT ゲートウェイ
  • インターネットゲートウェイ
  • 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 Data Intelligence で Amazon Redshift と RStudio を接続します。垂直検索。あい。

Amazon SageMaker PlatoBlockchain Data Intelligence で Amazon Redshift と RStudio を接続します。垂直検索。あい。

  1. ソフトウェア設定ページで、下図のように スタックを作成 ページ、選択 Next.
  2. ソフトウェア設定ページで、下図のように スタックの詳細を指定する ページで、スタックの名前を指定し、残りのオプションをデフォルトのままにしてから、 Next.
  3. ソフトウェア設定ページで、下図のように スタックオプションを構成する ページで、オプションをデフォルトのままにして、 Next.
  4. ソフトウェア設定ページで、下図のように レビューページ、選択
  • AWS CloudFormationがカスタム名でIAMリソースを作成する可能性があることを認めます
  • AWSCloudFormationには次の機能が必要になる可能性があることを認めます:CAPABILITY_AUTO_EXPANDチェックボックスをオンにして選択 送信.

Amazon SageMaker PlatoBlockchain Data Intelligence で Amazon Redshift と RStudio を接続します。垂直検索。あい。

テンプレートは XNUMX つのスタックを生成します。

Amazon SageMaker PlatoBlockchain Data Intelligence で Amazon Redshift と RStudio を接続します。垂直検索。あい。

スタックのステータスが CREATE_COMPLETEで、Amazon Redshift Serverless コンソールに移動します。 これは、あらゆる規模で高いパフォーマンスを発揮して、クラウドで分析を非常に簡単に実行できるようにする新しい機能です。 データをロードしてクエリを開始するだけです。 クラスターをセットアップして管理する必要はありません。

Note: Amazon SageMaker で Amazon Redshift と RStudio を統合するこのブログで示されているパターンは、Amazon Redshift のデプロイ パターン (サーバーレスまたは従来のクラスター) に関係なく同じです。

Amazon SageMaker PlatoBlockchain Data Intelligence で 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 Data Intelligence で Amazon Redshift と RStudio を接続します。垂直検索。あい。

クエリ エディターで次のクエリを実行します。 これにより、XNUMX つのテーブルが生成されます。 カード、取引、 & users.

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;

クエリ エディターの左側のペインに XNUMX つのテーブルが表示されることで、クエリが正常に実行されたことを確認できます。

Amazon SageMaker PlatoBlockchain Data Intelligence で Amazon Redshift と RStudio を接続します。垂直検索。あい。

すべてのテーブルにデータが入力されたら、SageMaker RStudio に移動し、ml.m5.xlarge インスタンスで RSession ベース イメージを使用して新しいセッションを開始します。

Amazon SageMaker PlatoBlockchain Data Intelligence で 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 Data Intelligence で Amazon Redshift と RStudio を接続します。垂直検索。あい。

Rスタジオ Connections ペインに sagemaker スキーマ合成およびテーブルカード、トランザクション、ユーザーを含むデータベース。

Amazon SageMaker PlatoBlockchain Data Intelligence で Amazon Redshift と RStudio を接続します。垂直検索。あい。

テーブルの横にあるテーブル アイコンをクリックすると、1,000 件のレコードを表示できます。

Amazon SageMaker PlatoBlockchain Data Intelligence で 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")

また、 dbplyr & dplyr データベースでクエリを実行するためのパッケージ。 しましょう 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 Data Intelligence で 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 Data Intelligence で 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 でモデルを構築する方法について詳しく知りたい場合は、以下を参照してください。 データサイエンティスト向けのAmazonSageMakerでフルマネージドRStudioを発表.

掃除

繰り返しコストが発生しないようにリソースをクリーンアップするには、ルートの CloudFormation テンプレートを削除します。 また、作成されたすべての EFS マウントと、作成された S3 バケットおよびオブジェクトをすべて削除します。

まとめ

クラウドで大規模なデータセットを操作する場合、データの分析とモデリングは困難な場合があります。 Amazon Redshift は、ユーザーがこれらのタスクを実行するのに役立つ人気のあるデータ ウェアハウスです。 データ分析に最も広く使用されている統合開発環境 (IDE) の XNUMX つである RStudio は、多くの場合、R 言語と共に使用されます。 このブログ投稿では、SageMaker で Amazon Redshift と RStudio を一緒に使用して、大量のデータセットを効率的に分析する方法を示しました。 SageMaker で RStudio を使用することにより、ユーザーは、Amazon Redshift との統合を簡素化しながら、SageMaker の完全に管理されたインフラストラクチャ、アクセス制御、ネットワーキング、およびセキュリティ機能を利用できます。 これら XNUMX つのツールを一緒に使用する方法について詳しく知りたい場合は、他のブログ記事やリソースをご覧ください。 また、SageMaker と Amazon Redshift で RStudio を使用してみて、データ分析とモデリング タスクにどのように役立つかを確認することもできます。

このブログにフィードバックを追加するか、 でプル リクエストを作成してください。 GitHubの.


著者について

Amazon SageMaker PlatoBlockchain Data Intelligence で Amazon Redshift と RStudio を接続します。垂直検索。あい。ライアン・ガーナー は、AW​​S プロフェッショナル サービスのデータ サイエンティストです。 彼は、AWS のお客様が R を使用してデータサイエンスと機械学習の問題を解決できるよう支援することに情熱を注いでいます。

Amazon SageMaker PlatoBlockchain Data Intelligence で Amazon Redshift と RStudio を接続します。垂直検索。あい。ラジ・パタク 金融サービス (保険、銀行、資本市場) と機械学習を専門とするシニア ソリューション アーキテクト兼テクノロジストです。 自然言語処理 (NLP)、大規模言語モデル (LLM)、機械学習インフラストラクチャおよび運用プロジェクト (MLOps) を専門としています。

Amazon SageMaker PlatoBlockchain Data Intelligence で Amazon Redshift と RStudio を接続します。垂直検索。あい。アディティ・ラジニッシュ ウォータールー大学のソフトウェア エンジニアリングの XNUMX 年生です。 彼女の興味には、コンピューター ビジョン、自然言語処理、エッジ コンピューティングが含まれます。 彼女はまた、コミュニティベースの STEM アウトリーチとアドボカシーにも情熱を注いでいます。 余暇には、ロック クライミングをしたり、ピアノを弾いたり、完璧なスコーンの作り方を学んだりしています。

Amazon SageMaker PlatoBlockchain Data Intelligence で Amazon Redshift と RStudio を接続します。垂直検索。あい。サイテジャ・プディ テキサス州ダラスを拠点とする AWS のソリューション アーキテクトです。 AWS に 3 年以上勤務しており、信頼できるアドバイザーとして、お客様が AWS の真の可能性を引き出せるよう支援しています。 彼はアプリケーション開発のバックグラウンドを持ち、データ サイエンスと機械学習に関心があります。

タイムスタンプ:

より多くの AWS機械学習