Подключение Amazon Redshift и RStudio к Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Подключение Amazon Redshift и RStudio к Amazon SageMaker

В прошлом году мы объявили об общедоступности RStudio на Amazon SageMaker, первая в отрасли полностью управляемая интегрированная среда разработки (IDE) RStudio Workbench в облаке. Вы можете быстро запустить знакомую среду разработки RStudio и подключать и отключать базовые вычислительные ресурсы, не прерывая свою работу, что упрощает создание решений для машинного обучения (ML) и аналитики в R в любом масштабе.

Многие пользователи RStudio on SageMaker также являются пользователями Амазонка Redshift, полностью управляемое массивно-параллельное хранилище данных петабайтного масштаба для хранения данных и аналитических рабочих нагрузок. Это позволяет быстро, просто и экономично анализировать все ваши данные с помощью стандартного 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 для взаимодействия с блокнотом Amazon SageMaker Jupyter.

Обзор решения

Сегодня в блоге мы будем выполнять следующие шаги:

  1. Клонирование репозитория примеров с необходимыми пакетами.
  2. Подключение к Amazon Redshift с помощью защищенного соединения ODBC (ODBC является предпочтительным протоколом для RStudio.).
  3. Выполнение запросов и действий SageMaker API с данными в Amazon Redshift Serverless через RStudio на SageMaker

Этот процесс изображен в следующей архитектуре решения:

Пошаговое руководство по решению

Предпосылки

Прежде чем приступить к работе, убедитесь, что выполнены все требования для настройки RStudio в Amazon SageMaker и Amazon Redshift Serverless, например:

Мы будем использовать стек CloudFormation для создания необходимой инфраструктуры.

Примечание: Если у вас уже есть домен RStudio и кластер Amazon Redshift, этот шаг можно пропустить.

Запуск этого стека создает следующие ресурсы:

  • 3 частные подсети
  • 1 общедоступная подсеть
  • 1 NAT-шлюз
  • Интернет-шлюз
  • Бессерверный кластер Amazon Redshift
  • Домен 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 в Amazon SageMaker, показанная в этом блоге, будет одинаковой независимо от схемы развертывания Amazon Redshift (бессерверный или традиционный кластер).

Подключение Amazon Redshift и RStudio к Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Загрузка данных в Amazon 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 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 Redshift и RStudio к Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Студио Коммутация панель должна показывать 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 карт; и XNUMX XNUMX XNUMX транзакций. Мы также можем просматривать таблицы в консоли.

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)

Теперь, когда мы отфильтровали и очистили наш набор данных, мы готовы собрать этот набор данных в локальную оперативную память.

discover <- collect(discover_tbl)
summary(discover)

Теперь у нас есть рабочий набор данных, чтобы приступить к созданию признаков и подгонке моделей. Мы не будем рассматривать эти шаги в этом блоге, но если вы хотите узнать больше о построении моделей в RStudio на SageMaker, обратитесь к Анонс полностью управляемой RStudio на Amazon SageMaker для специалистов по данным.

уборка

Чтобы очистить любые ресурсы и избежать повторяющихся расходов, удалите корневой шаблон CloudFormation. Также удалите все созданные монтирования EFS и все созданные корзины и объекты S3.

Заключение

Анализ данных и моделирование могут быть сложными при работе с большими наборами данных в облаке. Amazon Redshift — это популярное хранилище данных, которое помогает пользователям выполнять эти задачи. RStudio, одна из наиболее широко используемых интегрированных сред разработки (IDE) для анализа данных, часто используется с языком R. В этой записи блога мы показали, как совместно использовать Amazon Redshift и RStudio в SageMaker для эффективного анализа больших наборов данных. Используя RStudio в SageMaker, пользователи могут воспользоваться преимуществами полностью управляемой инфраструктуры, управления доступом, работы в сети и безопасности SageMaker, а также упростить интеграцию с Amazon Redshift. Если вы хотите узнать больше о совместном использовании этих двух инструментов, ознакомьтесь с другими статьями и ресурсами нашего блога. Вы также можете сами попробовать использовать RStudio в SageMaker и Amazon Redshift и посмотреть, как они могут помочь вам в анализе данных и задачах моделирования.

Пожалуйста, оставьте свой отзыв в этом блоге или создайте запрос на вытягивание на GitHub.


Об авторах

Подключение Amazon Redshift и RStudio к Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Райан Гарнер является специалистом по данным в AWS Professional Services. Он увлечен тем, что помогает клиентам 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. Вертикальный поиск. Ай.Сайтея Пуди работает архитектором решений в AWS в Далласе, штат Техас. Он работает в AWS уже более 3 лет, помогая клиентам раскрыть истинный потенциал AWS, будучи их доверенным консультантом. Он имеет опыт разработки приложений, интересуется наукой о данных и машинным обучением.

Отметка времени:

Больше от Машинное обучение AWS