חיבור Amazon Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

חיבור Amazon Redshift ו- RStudio ב- Amazon SageMaker

בשנה שעברה, הכרזנו על זמינות כללית של RStudio ב- Amazon SageMaker, סביבת הפיתוח המשולבת (IDE) בענן המנוהלת במלואה הראשונה של התעשייה RStudio Workbench. אתה יכול להפעיל במהירות את RStudio IDE המוכר ולבצע חיוג למעלה ולמטה את משאבי המחשוב הבסיסיים מבלי להפריע לעבודה שלך, מה שמקל על בניית פתרונות למידת מכונה (ML) ואנליטיקה ב-R בקנה מידה.

רבים ממשתמשי RStudio ב- SageMaker הם גם משתמשים האדום של אמזון, מחסן נתונים מקביל בצורה מאסיבית, מנוהל במלואו, בקנה מידה פטה-בייט, לאחסון נתונים ועומסי עבודה אנליטיים. זה הופך את זה למהיר, פשוט וחסכוני לנתח את כל הנתונים שלך באמצעות SQL סטנדרטי וכלי בינה עסקית (BI) הקיימים שלך. משתמשים יכולים גם לקיים אינטראקציה עם נתונים עם ODBC, JDBC או ה-Amazon Redshift Data API.

השימוש ב- RStudio ב- SageMaker וב- Amazon Redshift יכול להיות מועיל לביצוע ניתוח יעיל של מערכי נתונים גדולים בענן. עם זאת, עבודה עם נתונים בענן יכולה להציג אתגרים, כמו הצורך להסיר ממגורות נתונים ארגוניים, לשמור על אבטחה ותאימות, ולהפחית את המורכבות על ידי סטנדרטיזציה של כלים. AWS מציעה כלים כגון RStudio ב- SageMaker ו- Amazon Redshift כדי לסייע בהתמודדות עם אתגרים אלו.

בפוסט זה בבלוג, נראה לך כיצד להשתמש בשני השירותים הללו יחד כדי לבצע ניתוח ביעילות של מערכי נתונים מסיביים בענן תוך התמודדות עם האתגרים שהוזכרו לעיל. בלוג זה מתמקד ב-Rstudio בשפת Amazon SageMaker, עם אנליסטים עסקיים, מהנדסי נתונים, מדעני נתונים וכל המפתחים שמשתמשים ב-R Language וב-Amazon Redshift, כקהל היעד.

אם תרצה להשתמש בחוויית SageMaker Studio המסורתית עם Amazon Redshift, עיין ב שימוש ב-Amazon Redshift Data API לאינטראקציה ממחברת אמזון SageMaker Jupyter.

סקירת פתרונות

בבלוג היום, נבצע את השלבים הבאים:

  1. שיבוט מאגר הדוגמאות עם החבילות הנדרשות.
  2. מתחבר לאמזון Redshift עם חיבור ODBC מאובטח (ODBC הוא הפרוטוקול המועדף עבור RStudio).
  3. הפעלת שאילתות ופעולות SageMaker API על נתונים בתוך Amazon Redshift Serverless דרך RStudio ב- SageMaker

תהליך זה מתואר בארכיטקטורת הפתרונות הבאה:

דרך פיתרון

תנאים מוקדמים

לפני תחילת העבודה, ודא שיש לך את כל הדרישות להגדרת RStudio ב-Amazon SageMaker ו-Amazon Redshift Serverless, כגון:

אנו נשתמש בערימת CloudFormation כדי ליצור את התשתית הנדרשת.

הערה: אם כבר יש לך דומיין RStudio ואשכול האדום של אמזון, תוכל לדלג על שלב זה

הפעלת מחסנית זו יוצרת את המשאבים הבאים:

  • 3 רשתות משנה פרטיות
  • 1 תת רשת ציבורית
  • שער NAT 1
  • שער אינטרנט
  • אמזון Redshift Serverless אשכול
  • דומיין SageMaker עם RStudio
  • פרופיל משתמש SageMaker RStudio
  • תפקיד שירות IAM עבור ביצוע תחום SageMaker RStudio
  • תפקיד שירות IAM עבור ביצוע פרופיל משתמש של SageMaker RStudio

תבנית זו מיועדת לעבוד באזור (לדוגמה. us-east-1, us-west-2) עם שלושה אזורי זמינות, RStudio ב-SageMaker ו-Amazon Redshift Serverless. ודא שלאזור שלך יש גישה למשאבים אלה, או שנה את התבניות בהתאם.

לחץ השקת ערימה לחצן כדי ליצור את הערימה.

חיבור Amazon Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

חיבור Amazon Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

  1. על צור ערימה עמוד, בחר הַבָּא.
  2. על ציין פרטי ערימה עמוד, ספק שם לערימה שלך והשאיר את האפשרויות הנותרות כברירת מחדל, ולאחר מכן בחר הַבָּא.
  3. על הגדר אפשרויות ערימה עמוד, השאר את האפשרויות כברירת מחדל ולחץ הַבָּא.
  4. על סקור את הדף, בחר את
  • אני מאשר ש- AWS CloudFormation עשוי ליצור משאבי IAM עם שמות מותאמים אישית
  • אני מאשר ש- AWS CloudFormation עשוי לדרוש את היכולת הבאה: CAPABILITY_AUTO_EXPANDתיבות סימון ובחר חפש.

חיבור Amazon Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

התבנית תיצור חמש ערימות.

חיבור Amazon Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

ברגע שסטטוס המחסנית הוא CREATE_COMPLETE, נווט אל קונסולת Amazon Redshift Serverless. זוהי יכולת חדשה שעושה את זה סופר קל להפעיל אנליטיקה בענן עם ביצועים גבוהים בכל קנה מידה. פשוט טען את הנתונים שלך והתחל לבצע שאילתות. אין צורך להגדיר ולנהל אשכולות.

הערות: הדפוס המודגם בבלוג זה המשלב את Amazon Redshift ו-RStudio באמזון SageMaker יהיה זהה ללא קשר לדפוס הפריסה של Amazon Redshift (ללא שרת או אשכול מסורתי).

חיבור Amazon Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

טוען נתונים באמזון Redshift Serverless

הסקריפט של CloudFormation יצר מסד נתונים בשם sagemaker. בוא נאכלס את מסד הנתונים הזה בטבלאות עבור משתמש RStudio לשאילתה. צור לשונית עורך SQL והקפד על sagemaker מסד הנתונים נבחר. אנו נשתמש ב- נתוני עסקה סינתטיים בכרטיס אשראי כדי ליצור טבלאות במסד הנתונים שלנו. נתונים אלה הם חלק ממערך הנתונים הטבלאי לדוגמה של SageMaker s3://sagemaker-sample-files/datasets/tabular/synthetic_credit_card_transactions.

חיבור Amazon Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

אנחנו הולכים לבצע את השאילתה הבאה בעורך השאילתות. זה ייצור שלוש טבלאות, כרטיסים, עסקאות, ו משתמשים.

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 Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

לאחר שכל הטבלאות מאוכלסות, נווט אל SageMaker RStudio והתחל הפעלה חדשה עם תמונת בסיס RSession במופע ml.m5.xlarge.

חיבור Amazon Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

לאחר השקת ההפעלה, נריץ את הקוד הזה כדי ליצור חיבור למסד הנתונים שלנו ללא שרתים של Amazon Redshift.

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)

על מנת להציג את הטבלאות בסכימה הסינתטית, תצטרך להעניק גישה באמזון Redshift דרך עורך השאילתות.

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

חיבור Amazon Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

ה-RStudio חיבורי חלונית צריכה להראות את sagemaker מסד נתונים עם סכימה סינתטית וטבלאות כרטיסים, עסקאות, משתמשים.

חיבור Amazon Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

אתה יכול ללחוץ על סמל הטבלה שליד הטבלאות כדי להציג 1,000 רשומות.

חיבור Amazon Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

הערה: יצרנו קובץ 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 Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

אנחנו יכולים גם לראות מה 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 Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

אנו יכולים גם לסכם נתונים במסד הנתונים באופן הבא:

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)

כעת יש לנו מערך נתונים עובד כדי להתחיל ליצור תכונות ולהתאים מודלים. לא נסקור את השלבים האלה בבלוג הזה, אבל אם אתה רוצה ללמוד עוד על בניית מודלים ב-RStudio ב- SageMaker, עיין ב הכרזה על RStudio מנוהל במלואו באמזון SageMaker עבור מדעני נתונים.

ניקוי

כדי לנקות משאבים כלשהם כדי למנוע עלויות חוזרות, מחק את תבנית השורש CloudFormation. מחק גם את כל רכיבי ה-EFS שנוצרו ואת כל הדליים והאובייקטים של S3 שנוצרו.

סיכום

ניתוח נתונים ומידול יכולים להיות מאתגרים כאשר עובדים עם מערכי נתונים גדולים בענן. Amazon Redshift הוא מחסן נתונים פופולרי שיכול לעזור למשתמשים לבצע משימות אלו. RStudio, אחת מסביבות הפיתוח המשולבות (IDE) הנפוצות ביותר לניתוח נתונים, משמשת לעתים קרובות עם שפת R. בפוסט זה בבלוג, הראינו כיצד להשתמש באמזון Redshift ו- RStudio ב- SageMaker יחד כדי לבצע ניתוח ביעילות על מערכי נתונים מסיביים. על ידי שימוש ב-RStudio ב- SageMaker, משתמשים יכולים לנצל את התשתית המנוהלת במלואה, בקרת הגישה, הרשתות והאבטחה של SageMaker, ובמקביל גם לפשט את האינטגרציה עם Amazon Redshift. אם תרצה ללמוד עוד על השימוש בשני הכלים הללו יחד, עיין בפוסטים ובמשאבים האחרים בבלוג שלנו. אתה יכול גם לנסות להשתמש ב-RStudio ב-SageMaker וב-Amazon Redshift בעצמך ולראות כיצד הם יכולים לעזור לך עם משימות ניתוח הנתונים והמודלים שלך.

אנא הוסף את המשוב שלך לבלוג זה, או צור בקשת משיכה ב- GitHub.


על הכותבים

חיבור Amazon Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ריאן גארנר הוא מדען נתונים עם שירותים מקצועיים של AWS. הוא נלהב לעזור ללקוחות AWS להשתמש ב-R כדי לפתור את בעיות מדעי הנתונים ולמידת המכונה שלהם.

חיבור Amazon Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ראג' פאתאק הוא אדריכל פתרונות בכיר וטכנולוג המתמחה בשירותים פיננסיים (ביטוח, בנקאות, שוק הון) ולמידת מכונה. הוא מתמחה בעיבוד שפה טבעית (NLP), מודלים של שפה גדולה (LLM) ופרויקטים של תשתית ותפעול למידת מכונה (MLOps).

חיבור Amazon Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.עדיטי ראג'ניש הוא סטודנט שנה שנייה להנדסת תוכנה באוניברסיטת ווטרלו. תחומי העניין שלה כוללים ראייה ממוחשבת, עיבוד שפה טבעית ומחשוב קצה. היא גם נלהבת מהסברה והסברה של STEM מבוססי קהילה. בזמנה הפנוי אפשר למצוא אותה מטפסת על צוקים, מנגנת בפסנתר או לומדת איך לאפות את הסקונס המושלם.

חיבור Amazon Redshift ו-RStudio ב-Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.Saiteja Pudi הוא אדריכל פתרונות ב-AWS, שבסיסו בדאלאס, טקסס. הוא עובד עם AWS כבר יותר מ-3 שנים, ועוזר ללקוחות להפיק את הפוטנציאל האמיתי של AWS בכך שהוא היועץ המהימן שלהם. הוא מגיע מרקע של פיתוח אפליקציות, מתעניין במדעי נתונים ולמידת מכונה.

בול זמן:

עוד מ למידת מכונות AWS