Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker

Lansko leto smo objavili splošno razpoložljivost RStudio na Amazon SageMaker, prvo popolnoma upravljano integrirano razvojno okolje (IDE) RStudio Workbench v industriji v oblaku. Hitro lahko zaženete znani RStudio IDE in kličete navzgor in navzdol po osnovnih računalniških virih, ne da bi pri tem prekinili svoje delo, kar olajša gradnjo strojnega učenja (ML) in analitičnih rešitev v R v velikem obsegu.

Mnogi uporabniki RStudio na SageMaker so tudi uporabniki Amazon RedShift, popolnoma upravljano, masivno vzporedno podatkovno skladišče velikosti petabajtov za shranjevanje podatkov in analitične delovne obremenitve. Omogoča hitro, preprosto in stroškovno učinkovito analizo vseh vaših podatkov z uporabo standardnega SQL in vaših obstoječih orodij poslovne inteligence (BI). Uporabniki lahko s podatki komunicirajo tudi z ODBC, JDBC ali Amazon Redshift Data API.

Uporaba RStudio na SageMaker in Amazon Redshift je lahko koristna za učinkovito izvajanje analiz velikih nizov podatkov v oblaku. Vendar pa lahko delo s podatki v oblaku predstavlja izzive, kot je potreba po odstranitvi silosov organizacijskih podatkov, ohranjanju varnosti in skladnosti ter zmanjšanju zapletenosti s standardizacijo orodij. AWS ponuja orodja, kot sta RStudio na SageMaker in Amazon Redshift, za pomoč pri reševanju teh izzivov.

V tej objavi v spletnem dnevniku vam bomo pokazali, kako uporabiti obe storitvi skupaj za učinkovito izvajanje analize ogromnih naborov podatkov v oblaku, hkrati pa obravnavati zgoraj omenjene izzive. Ta blog se osredotoča na Rstudio v jeziku Amazon SageMaker, s poslovnimi analitiki, podatkovnimi inženirji, podatkovnimi znanstveniki in vsemi razvijalci, ki uporabljajo jezik R in Amazon Redshift, kot ciljno občinstvo.

Če želite uporabiti tradicionalno izkušnjo SageMaker Studio z Amazon Redshift, glejte Uporaba Amazon Redshift Data API za interakcijo iz prenosnika Amazon SageMaker Jupyter.

Pregled rešitev

V današnjem blogu bomo izvedli naslednje korake:

  1. Kloniranje vzorčnega repozitorija z zahtevanimi paketi.
  2. Povezovanje z Amazon Redshift z varno povezavo ODBC (ODBC je prednostni protokol za RStudio).
  3. Izvajanje poizvedb in dejanj SageMaker API za podatke znotraj Amazon Redshift Serverless prek RStudio na SageMaker

Ta proces je prikazan v naslednji arhitekturi rešitev:

Rešitev za rešitev

Predpogoji

Preden začnete, se prepričajte, da imate vse zahteve za nastavitev RStudio na Amazon SageMaker in Amazon Redshift Serverless, kot so:

Za ustvarjanje potrebne infrastrukture bomo uporabili sklad CloudFormation.

Opomba: Če že imate domeno RStudio in gručo Amazon Redshift, lahko ta korak preskočite

Zagon tega sklada ustvari naslednje vire:

  • 3 Zasebna podomrežja
  • 1 javno podomrežje
  • 1 NAT prehod
  • Internet prehod
  • Brezstrežniška gruča Amazon Redshift
  • Domena SageMaker z RStudio
  • Uporabniški profil SageMaker RStudio
  • Vloga storitve IAM za izvajanje domene SageMaker RStudio
  • Vloga storitve IAM za izvajanje uporabniškega profila SageMaker RStudio

Ta predloga je zasnovana za delovanje v regiji (npr. us-east-1, us-west-2) s tremi območji razpoložljivosti, RStudio na SageMakerju in Amazon Redshift Serverless. Zagotovite, da ima vaša regija dostop do teh virov, ali ustrezno spremenite predloge.

Pritisnite Izstrelite sklad gumb za ustvarjanje sklada.

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

  1. o Ustvari sklad stran, izberite Naslednji.
  2. o Določite podrobnosti zlaganja stran, vnesite ime za svoj sklad in pustite preostale možnosti privzete, nato izberite Naslednji.
  3. o Konfigurirajte možnosti zlaganja stran, pustite možnosti privzete in pritisnite Naslednji.
  4. o Preglej stranIzberite
  • Zavedam se, da AWS CloudFormation lahko ustvari vire IAM z imeni po meri
  • Zavedam se, da AWS CloudFormation morda zahteva naslednje zmogljivosti: CAPABILITY_AUTO_EXPANDpotrditvena polja in izberite Prijave se.

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Predloga bo ustvarila pet nizov.

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Ko je stanje sklada CREATE_COMPLETE, se pomaknite do konzole Amazon Redshift Serverless. To je nova zmožnost, ki omogoča izjemno preprosto izvajanje analitike v oblaku z visoko zmogljivostjo v katerem koli obsegu. Samo naložite svoje podatke in začnite s poizvedovanjem. Ni potrebe po nastavitvi in ​​upravljanju grozdov.

Opombe: V tem spletnem dnevniku predstavljen vzorec integracije Amazon Redshift in RStudio na Amazon SageMaker bo enak ne glede na vzorec uvajanja Amazon Redshift (brez strežnika ali tradicionalna gruča).

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Nalaganje podatkov v Amazon Redshift Serverless

Skript CloudFormation je ustvaril bazo podatkov, imenovano sagemaker. Napolnimo to zbirko podatkov s tabelami, po katerih lahko uporabnik RStudio poizveduje. Ustvarite zavihek urejevalnika SQL in se prepričajte, da sagemaker podatkovna baza je izbrana. Uporabljali bomo sintetični podatki o transakcijah s kreditno kartico za ustvarjanje tabel v naši bazi podatkov. Ti podatki so del vzorčnih naborov tabelarnih podatkov SageMaker s3://sagemaker-sample-files/datasets/tabular/synthetic_credit_card_transactions.

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

V urejevalniku poizvedb bomo izvedli naslednjo poizvedbo. To bo ustvarilo tri tabele, kartice, transakcije, in Uporabniki.

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;

Če si ogledate tri tabele v levem podoknu urejevalnika poizvedb, lahko potrdite, da se je poizvedba uspešno izvedla.

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Ko so vse tabele zapolnjene, se pomaknite do SageMaker RStudio in začnite novo sejo z osnovno sliko RSession na primerku ml.m5.xlarge.

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Ko se seja zažene, bomo zagnali to kodo, da ustvarimo povezavo z našo bazo podatkov 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)

Če si želite ogledati tabele v sintetični shemi, boste morali prek urejevalnika poizvedb odobriti dostop v Amazon Redshift.

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

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

RStudio povezave podokno mora prikazati sagemaker baza podatkov s sintetičnimi shemami in tabelami, kartice, transakcije, uporabniki.

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Za ogled 1,000 zapisov lahko kliknete ikono tabele poleg tabel.

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Opomba: Ustvarili smo vnaprej zgrajeno datoteko R Markdown z vsemi vnaprej zgrajenimi bloki kode, ki jih je mogoče najti v projektu GitHub repo.

Zdaj pa uporabimo DBI funkcija paketa dbListTables() za ogled obstoječih tabel.

dbListTables(con)

Uporabite dbGetQuery(), da posredujete poizvedbo SQL v bazo podatkov.

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

Lahko uporabimo tudi dbplyr in dplyr paketi za izvajanje poizvedb v bazi podatkov. dajmo count() koliko transakcij je v tabeli transakcij. Toda najprej moramo namestiti te pakete.

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

Uporaba tbl() funkcijo med podajanjem sheme.

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

Zaženimo štetje števila vrstic za vsako tabelo.

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

Imamo torej 2,000 uporabnikov; 6,146 kart; in 24,386,900 transakcij. Tabele lahko pregledujemo tudi v konzoli.

transactions_tbl

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Ogledamo si lahko tudi kaj dplyr glagoli delajo pod pokrovom.

show_query(transactions_tbl)

Oglejmo si vizualno število transakcij po letih.

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

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Podatke v bazi lahko povzamemo tudi na naslednji način:

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

Recimo, da si želimo ogledati goljufije z uporabo podatkov o kartici. Samo združiti moramo tabele in jih nato združiti po atributu.

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

Zdaj pa pripravimo nabor podatkov, ki bi ga lahko uporabili za strojno učenje. Filtrirajmo podatke o transakcijah, da bomo vključevali samo kreditne kartice Discover, pri tem pa ohranili samo podmnožico stolpcev.

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)

In zdaj naredimo nekaj čiščenja z naslednjimi transformacijami:

  • Pretvarjanje is_fraud na binarni atribut
  • Odstrani transakcijski niz iz use_chip in ga preimenujte v tip
  • Združite leto, mesec in dan v podatkovni objekt
  • Odstranite $ iz količine in pretvorite v številski podatkovni tip
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)

Zdaj, ko smo naš nabor podatkov filtrirali in očistili, smo pripravljeni na zbiranje tega nabora podatkov v lokalni RAM.

discover <- collect(discover_tbl)
summary(discover)

Zdaj imamo delujoč nabor podatkov za začetek ustvarjanja funkcij in prilagajanja modelov. V tem spletnem dnevniku ne bomo obravnavali teh korakov, če pa želite izvedeti več o gradnji modelov v RStudiu na SageMakerju, glejte Predstavljamo popolnoma upravljan RStudio na Amazon SageMaker za podatkovne znanstvenike.

Pospravi

Če želite počistiti vse vire in se izogniti ponavljajočim se stroškom, izbrišite korensko predlogo CloudFormation. Izbrišite tudi vse ustvarjene namestitve EFS ter vsa ustvarjena vedra in predmete S3.

zaključek

Analiza podatkov in modeliranje sta lahko izziv pri delu z velikimi nabori podatkov v oblaku. Amazon Redshift je priljubljeno skladišče podatkov, ki lahko uporabnikom pomaga pri opravljanju teh nalog. RStudio, eno najbolj razširjenih integriranih razvojnih okolij (IDE) za analizo podatkov, se pogosto uporablja z jezikom R. V tej objavi v spletnem dnevniku smo pokazali, kako skupaj uporabljati Amazon Redshift in RStudio na SageMakerju za učinkovito izvajanje analize ogromnih naborov podatkov. Z uporabo RStudio na SageMakerju lahko uporabniki izkoristijo popolnoma upravljano infrastrukturo, nadzor dostopa, mreženje in varnostne zmogljivosti SageMakerja, hkrati pa poenostavijo integracijo z Amazon Redshift. Če želite izvedeti več o uporabi teh dveh orodij skupaj, si oglejte naše druge objave v spletnem dnevniku in vire. Poskusite lahko tudi sami uporabiti RStudio na SageMaker in Amazon Redshift ter si ogledate, kako vam lahko pomagata pri nalogah analize podatkov in modeliranja.

Dodajte svoje povratne informacije v ta spletni dnevnik ali ustvarite zahtevo za vlečenje na GitHub.


O avtorjih

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Ryan Garner je podatkovni znanstvenik pri AWS Professional Services. Strastno želi pomagati strankam AWS pri uporabi R za reševanje njihovih težav s podatkovno znanostjo in strojnim učenjem.

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Raj Pathak je višji arhitekt rešitev in tehnolog, specializiran za finančne storitve (zavarovalništvo, bančništvo, kapitalski trgi) in strojno učenje. Specializiran je za obdelavo naravnega jezika (NLP), velike jezikovne modele (LLM) ter infrastrukturo in operativne projekte strojnega učenja (MLOps).

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Aditi Rajniš je študent drugega letnika programskega inženirstva na Univerzi Waterloo. Njeni interesi vključujejo računalniški vid, obdelavo naravnega jezika in robno računalništvo. Prav tako je navdušena nad ozaveščanjem in zagovarjanjem STEM v skupnosti. V prostem času jo lahko najdemo med plezanjem po skalah, igranjem klavirja ali učenjem peke popolnega kolačka.

Povezovanje Amazon Redshift in RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Saiteja Pudi je arhitekt rešitev pri AWS s sedežem v Dallasu, Tx. Z AWS je zaposlen že več kot 3 leta in strankam pomaga izpeljati pravi potencial AWS, tako da je njihov zaupanja vreden svetovalec. Prihaja iz ozadja razvoja aplikacij, zanimata ga podatkovna znanost in strojno učenje.

Časovni žig:

Več od Strojno učenje AWS