在 Amazon SageMaker 上连接 Amazon EMR 和 RStudio

在 Amazon SageMaker 上连接 Amazon EMR 和 RStudio

Amazon SageMaker 上的 RStudio 是业界首个完全托管的云端 RStudio Workbench 集成开发环境 (IDE)。 您可以快速启动熟悉的 RStudio IDE,并在不中断工作的情况下调整底层计算资源,从而轻松地在 R 中大规模构建机器学习 (ML) 和分析解决方案。

结合 SageMaker 上的 RStudio 等工具,用户可以分析、转换和准备大量数据,作为数据科学和 ML 工作流的一部分。 数据科学家和数据工程师使用 Apache Spark、Hive 和 Presto 运行在 亚马逊电子病历 用于大规模数据处理。 结合使用 SageMaker 和 Amazon EMR 上的 RStudio,您可以继续使用 RStudio IDE 进行分析和开发,同时使用 Amazon EMR 托管集群进行更大的数据处理。

在本文中,我们将演示如何将 SageMaker 域上的 RStudio 与 EMR 集群连接起来。

解决方案概述

我们使用 阿帕奇李维 连接提交 闪闪发光的 从 SageMaker 上的 RStudio 到 EMR 集群的作业。 下图对此进行了演示。

解决范围
帖子中演示的所有代码都可以在我们的 GitHub存储库. 我们实施以下解决方案架构。

在 Amazon SageMaker PlatoBlockchain 数据智能上连接 Amazon EMR 和 RStudio。 垂直搜索。 人工智能。

先决条件

在部署任何资源之前,请确保您满足在 SageMaker 和 Amazon EMR 上设置和使用 RStudio 的所有要求:

我们还将在 SageMaker 映像上构建自定义 RStudio,因此请确保您正在运行 Docker 并获得所有必需的权限。 有关详细信息,请参阅 使用自定义映像将您自己的开发环境带到 Amazon SageMaker 上的 RStudio.

使用 AWS CloudFormation 创建资源

我们使用 AWS CloudFormation 堆栈以生成所需的基础结构。

如果您已有 RStudio 域和现有 EMR 集群,则可以跳过此步骤并开始在 SageMaker 映像上构建自定义 RStudio。 将您的 EMR 集群和 RStudio 域的信息替换为本节中创建的 EMR 集群和 RStudio 域。

启动此堆栈会创建以下资源:

  • 两个私有子网
  • EMR 星火集群
  • AWS胶水 数据库和表格
  • 带有 RStudio 的 SageMaker 域
  • SageMaker RStudio 用户配置文件
  • SageMaker RStudio 域的 IAM 服务角色
  • SageMaker RStudio 用户配置文件的 IAM 服务角色

完成以下步骤以创建您的资源:

启动堆栈 创建堆栈。

在 Amazon SageMaker PlatoBlockchain 数据智能上连接 Amazon EMR 和 RStudio。 垂直搜索。 人工智能。

  1. 点击 创建堆栈 页面,选择 下一页.
  2. 点击 指定堆栈详细信息 页面,为您的堆栈提供名称并将其余选项保留为默认值,然后选择 下一页.
  3. 点击 配置堆栈选项 页面,将选项保留为默认值并选择 下一页.
  4. 点击 评论页面, 选择
  5. 我承认AWS CloudFormation可能会使用自定义名称创建IAM资源
  6. 我承认AWS CloudFormation可能需要以下功能:CAPABILITY_AUTO_EXPAND.
  7. 创建堆栈.

在 Amazon SageMaker PlatoBlockchain 数据智能上连接 Amazon EMR 和 RStudio。 垂直搜索。 人工智能。

该模板生成五个堆栈。

在 Amazon SageMaker PlatoBlockchain 数据智能上连接 Amazon EMR 和 RStudio。 垂直搜索。 人工智能。

要查看已创建的 EMR Spark 集群,请导航至 Amazon EMR 控制台。 你会看到一个为你创建的集群 sagemaker. 这是我们通过 SageMaker 上的 RStudio 连接到的集群。

在 Amazon SageMaker PlatoBlockchain 数据智能上连接 Amazon EMR 和 RStudio。 垂直搜索。 人工智能。

在 SageMaker 映像上构建自定义 RStudio

我们已经创建了一个自定义镜像,它将安装 sparklyr 的所有依赖项,并将与我们创建的 EMR 集群建立连接。

如果您使用自己的 EMR 集群和 RStudio 域,请相应地修改脚本。

确保 Docker 正在运行。 首先进入我们的项目存储库:

cd sagemaker-rstudio-emr/sparklyr-image
./build-r-image.sh

我们现在将构建 Docker 映像并将其注册到 SageMaker 域上的 RStudio。

  1. 在SageMaker控制台上,选择 域名 在导航窗格中。
  2. 选择域名 select rstudio-domain.
  3. 点击 环境 标签,选择 附上图片。
    在 Amazon SageMaker PlatoBlockchain 数据智能上连接 Amazon EMR 和 RStudio。 垂直搜索。 人工智能。
    现在我们将之前创建的 sparklyr 图像附加到域。
  4. 针对 选择图片来源, 选择 现有图像.
  5. 选择我们构建的 sparklyr 图像。
    在 Amazon SageMaker PlatoBlockchain 数据智能上连接 Amazon EMR 和 RStudio。 垂直搜索。 人工智能。
  6. 针对 图像属性, 将选项保留为默认值。
  7. 针对 图像类型, 选择 RStudio 图像.
  8. 提交.
    在 Amazon SageMaker PlatoBlockchain 数据智能上连接 Amazon EMR 和 RStudio。 垂直搜索。 人工智能。
    验证图像已添加到域中。 图像可能需要几分钟才能完全附加。
    在 Amazon SageMaker PlatoBlockchain 数据智能上连接 Amazon EMR 和 RStudio。 垂直搜索。 人工智能。
  9. 当它可用时,使用以下命令登录到 SageMaker 控制台上的 RStudio rstudio-user 创建的配置文件。
  10. 从这里,使用我们之前创建的 sparklyr 图像创建一个会话。
    在 Amazon SageMaker PlatoBlockchain 数据智能上连接 Amazon EMR 和 RStudio。 垂直搜索。 人工智能。
    首先,我们必须连接到我们的 EMR 集群。
  11. 在连接窗格中,选择 新连接.
  12. 选择 EMR 集群连接代码片段并选择 连接到 Amazon EMR 集群.
    在 Amazon SageMaker PlatoBlockchain 数据智能上连接 Amazon EMR 和 RStudio。 垂直搜索。 人工智能。
    连接代码运行后,您将看到通过 Livy 建立的 Spark 连接,但看不到表。
    在 Amazon SageMaker PlatoBlockchain 数据智能上连接 Amazon EMR 和 RStudio。 垂直搜索。 人工智能。
  13. 将数据库更改为 credit_card:
    tbl_change_db(sc, “credit_card”)
  14. 刷新连接数据.
    您现在可以看到表格。
    在 Amazon SageMaker PlatoBlockchain 数据智能上连接 Amazon EMR 和 RStudio。 垂直搜索。 人工智能。
  15. 现在导航到 rstudio-sparklyr-code-walkthrough.md 文件中。

这有一组 Spark 转换,我们可以在我们的信用卡数据集上使用它来准备建模。 以下代码是摘录:

让我们 count() 交易表中有多少笔交易。 但首先我们需要缓存使用 tbl() 功能。

users_tbl <- tbl(sc, "users")
cards_tbl <- tbl(sc, "cards")
transactions_tbl <- tbl(sc, "transactions")

让我们计算每个表的行数。

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

现在让我们将我们的表注册为 Spark 数据帧,并将它们拉入集群范围的内存缓存中以获得更好的性能。 我们还将过滤放置在每个表第一行中的标题。

users_tbl <- tbl(sc, 'users') %>% filter(gender != 'Gender')
sdf_register(users_tbl, "users_spark")
tbl_cache(sc, 'users_spark')
users_sdf <- tbl(sc, 'users_spark') cards_tbl <- tbl(sc, 'cards') %>% filter(expire_date != 'Expires')
sdf_register(cards_tbl, "cards_spark")
tbl_cache(sc, 'cards_spark')
cards_sdf <- tbl(sc, 'cards_spark') transactions_tbl <- tbl(sc, 'transactions') %>% filter(amount != 'Amount')
sdf_register(transactions_tbl, "transactions_spark")
tbl_cache(sc, 'transactions_spark')
transactions_sdf <- tbl(sc, 'transactions_spark')

要查看完整的命令列表,请参阅 rstudio-sparklyr-code-walkthrough.md 文件中。

清理

要清理任何资源以避免产生经常性成本,请删除根 CloudFormation 模板。 也全部删除 亚马逊弹性文件服务 (Amazon EFS) 挂载创建和任何 亚马逊简单存储服务 (Amazon S3) 创建的存储桶和对象。

结论

RStudio on SageMaker 与 Amazon EMR 的集成为云中的数据分析和建模任务提供了强大的解决方案。 通过在SageMaker上连接RStudio和在EMR上建立Livy连接到Spark,您可以利用两个平台的计算资源来高效处理大型数据集。 RStudio 是使用最广泛的数据分析 IDE 之一,它允许您利用 SageMaker 的完全托管基础设施、访问控制、网络和安全功能。 同时,与 Amazon EMR 上的 Spark 的 Livy 连接提供了一种执行分布式处理和扩展数据处理任务的方法。

如果您有兴趣了解更多关于一起使用这些工具的信息,可以从这篇文章开始。 有关详细信息,请参阅 Amazon SageMaker 上的 RStudio. 如果您有任何建议或功能改进,请在我们的 GitHub 存储库上创建拉取请求或在本文中发表评论!


作者简介

在 Amazon SageMaker PlatoBlockchain 数据智能上连接 Amazon EMR 和 RStudio。 垂直搜索。 人工智能。

瑞安·加纳(Ryan Garner) 是 AWS 专业服务的数据科学家。 他热衷于帮助 AWS 客户使用 R 解决他们的数据科学和机器学习问题。


在 Amazon SageMaker PlatoBlockchain 数据智能上连接 Amazon EMR 和 RStudio。 垂直搜索。 人工智能。
拉吉帕塔克
 是一名高级解决方案架构师和技术专家,专门从事金融服务(保险、银行、资本市场)和机器学习。 他专注于自然语言处理 (NLP)、大型语言模型 (LLM) 和机器学习基础设施和运营项目 (MLOps)。


在 Amazon SageMaker PlatoBlockchain 数据智能上连接 Amazon EMR 和 RStudio。 垂直搜索。 人工智能。赛特佳·普迪
 是位于德克萨斯州达拉斯的 AWS 的解决方案架构师。 他已经在 AWS 工作 3 年多了,作为客户值得信赖的顾问,帮助客户发挥 AWS 的真正潜力。 他具有应用程序开发背景,对数据科学和机器学习感兴趣。

时间戳记:

更多来自 AWS机器学习