阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

开始在 Amazon Web Services 上使用 R

  • 2020-04-05
  • 本文字数:3513 字

    阅读完需:约 12 分钟

开始在 Amazon Web Services 上使用 R

随着 R 工作负载增加且消耗的资源越来越多,出于成本、速度和弹性原因,从本地计算环境迁移到 Amazon Web Services (AWS) 上可扩展的完全托管型云服务成为极其宝贵的能力。在这个包含两部分的博文系列中,第一部分将讨论 R 的基本知识和 AWS 上 R 的常见工作负载对。在第二部分“使用 R 和 Amazon Web Services 进行文档分析”中,我们将深入探讨如何使用 AWS 服务构建端到端文档处理应用程序。

R 的背景

R 是统计员、科学家和数据分析师常用的编程语言。它的大型用户社区已开发出数千个可免费使用的软件包,包括用于数据操作数据可视化专门的统计估算程序机器学习,访问美国人口普查数据Spotify 等公共数据 API、轻松开发基于数据的 Web 应用程序很多其他领域的软件包。同时还提供说明如何有效使用 R 的高质量免费在线手册和其他文档。****


R 生态系统中其中一个最常见的软件包集为 Tidyverse,它是转换和使用“有序”数据的库集合。它们旨在让用户能够以数据接收时的任何形式(例如 CSV、API 等)提取数据,并使用数据操作的声明性“语法”将数据轻松转换为分析所需的形状。Tidyverse 非常适合大量数据分析任务,它在 R 持续广受欢迎中起到重要作用。


R 生态系统的另一个重要部分是开发环境 RStudio。RStudio 设计用于数据科学。除了提供编辑器和调试器之外,RStudio 还可让用户使用内置的数据查看器查看内存数据结构,该数据查看器可让我们像电子表格一样排序和筛选、查看我们制作的任何图表、查看我们的数据库连接等等。IDE 背后的公司(也称为 RStudio)赞助了很多 R 开发项目(包括 Tidyverse)、举办了很多会议,并且提供了 R 服务器软件的免费和付费版本,包括将 R 应用程序作为 Web 应用程序托管的软件。

AWS 上的 R 的使用案例

大数据处理

随着数据分析朝着更大的数据集发展,过去可能习惯于在笔记本电脑上运行本地分析的 R 用户将因为计算、内存和成本限制而遇到障碍。通过将工作流移动到 AWS,R 用户可以克服这些障碍。R 通常用于估算需要大量计算能力和时间(数小时甚至数天)来构建的复杂统计模型。使用根据工作负载定制的 Amazon Elastic Compute Cloud (Amazon EC2) 实例或者 Amazon Elastic Kubernetes Service (Amazon EKS)、Amazon Elastic Container Service (Amazon ECS)AWS FargateAWS Batch 上运行的容器,AWS 托管型计算服务可以帮助加快模型开发。


对于大数据问题,R 可能会受到本地可用内存的限制;内存增强型实例类型可为此提供帮助。默认情况下,R 会处理内存中的数据,因此,使用具有更多内存的实例会使问题易于解决,而无需对代码进行更改。很多问题也会并行存在,在 R 对并行处理的支持下,修改代码以使用 R 的并行处理软件包可使用户利用具有大量核心的实例类型。开发人员可以在 AWS 的 R 类型(内存优化型)和 C 类型(计算优化型)实例之间选择一种与您计算和内存工作负载需求密切匹配的实例类型。


通常,数据科学家只是在部分时间处理这些大问题,运行永久性 Amazon EC2 实例或容器不会产生成本效益。AWS Batch 非常适合这些工作负载类型,它将负责启动实例、运行作业,然后在作业完成时关闭实例。由于您只需在实例运行时付费,当您没有积极使用实例时,您不必为强大的机器付费,并且也不受固定、静态的处理能力限制。

数据库

数据库是数据科学团队的宝贵资源;它们为数据集提供单一的真实数据来源,并且提供很高的读取和写入性能。我们可以通过 Amazon Relational Database Service (Amazon RDS) 利用 PostgreSQL 等常见数据库,同时让 AWS 负责底层实例和数据库维护。很多情况下,R 只需少许修改即可与这些服务交互;R 内的 Tidyverse 软件包可使您编写代码,无论它将在哪里运行,并且还能使您重新定义代码,以对来源于数据库的数据执行操作。

文件存储

最后,Amazon Simple Storage Service (Amazon S3) 可使开发人员存储原始输入文件、结果、报告、构件和不想要直接存储在数据库中的任何其他内容。存储在 S3 中的项目可在线访问,使得与协作者分享资源变得容易,但它还提供精细的资源权限,从而仅限那些应当拥有它的人访问。

在 R 中开始使用 AWS

要在 R 中使用 AWS,您可以使用 Paws AWS 软件开发工具包,它是我的同事 Adam Banker 和我一起开发的 R 软件包。Paws 是非正式开发工具包,但它涵盖了与其他语言正式开发工具包相同的大多数功能。您还可以通过 botorreticulate 软件包使用正式的 Python 开发工具包 boto3,但您需要在使用它们之前确保 Python 已安装在您的计算机上。


接下来,我们来讨论如何通过 Paws 软件包使用 AWS。


要安装 Paws,请在 R 中运行以下命令:


Bash


   install.packages("paws")
复制代码


要使用 AWS 服务,您可以创建一个客户端并从该客户端访问服务的操作:


Bash
复制代码


   # Create an S3 client, then list the objects within my bucket `my-bucket`.   s3 <- paws::s3()   s3$list_objects(Bucket = "my-bucket")
复制代码


如果您使用 RStudio,其工具提示将向您显示可用的服务、每个服务的操作,并为每个操作显示各个参数的相关文档。下面是可用于 S3 的 put_object 操作的工具提示示例:


您在访问 AWS API 时必须提供凭证和区域。Paws 将使用 AWS 身份验证链搜索凭证和区域:


1.  显式提供的访问密钥、密钥、会话令牌、配置文件和/或区域2.  R 环境变量3.  操作系统环境变量4.  `.aws/credentials` 和 `.aws/config` 中 AWS 共享的凭证和配置文件5.  容器 [](https://amazonaws-china.com/iam/) 角色6.  实例 IAM 角色
复制代码


例如,如果您在 Amazon EC2 实例或附加有 IAM 角色的容器中运行 R 和 Paws,Paws 将自动获取 IAM 角色凭证来对 AWS API 请求进行身份验证;此功能部分在 AWS 开源计划的支持下开发。


我们可以通过使用如下环境变量为所有服务显式设置 AWS 凭证和区域:


Bash
复制代码


   # Set AWS security credentials globally.   Sys.setenv(       AWS_ACCESS_KEY_ID = my_access_key,       AWS_SECRET_ACCESS_KEY = my_secret_key,       AWS_REGION = my_region   )
复制代码


如果您需要为每个服务提供单独的凭证,您可以在为给定服务创建客户端时执行此操作。例如,如果您通过临时安全凭证使用另一个账户的 S3 存储桶,您可以将它们提供给 S3 客户端,如下所示:


Bash
复制代码


   # Connect to S3 using temporary security credentials.   s3_other <- paws::s3(       config = list(           credentials = list(               creds = list(                   access_key_id = my_access_key,                   secret_access_key = my_secret_key,                   session_token = my_token               )           ),           region = my_region       )   )
复制代码


您可以在 Paws 凭证文档中找到有关 AWS 凭证和 Paws 配置的更多详细信息。此外,遵照 AWS 保护 AWS 凭证的建议,包括:不要将密钥嵌入代码中,为不同应用程序使用不同的访问密钥。

连接到数据库

您可以通过设置到数据库的连接来在 R 中使用数据库。然后,您可以引用数据库中的表格,就好像它们是 R 中的数据集一样。此功能由 Tidyverse 中的 dplyr 软件包和 dbplyr 数据库后端提供。


Bash
复制代码


   # Connect to the database.   con <- DBI::dbConnect(       RPostgres::Postgres(),       host = "myhost", port = 5432, dbname = "mydb",       user = "david", password = password   )
# Create a reference to the table, query the database, and download the result. my_table <- table(con, "my_table") result <- my_table %>% filter(record_type == "ok") collect()
复制代码


如果您使用适当配置的 RDS 数据库,您可以使用 RDS 服务中的 Paws build_auth_token 函数生成的令牌进行身份验证;该功能是在 AWS 开源计划支持下开发的另一项功能。通过使用 IAM 身份验证令牌,您无需存储密码。一旦连接,您可以像以前一样使用此数据库连接。


Bash
复制代码


   # Connect to the database using an IAM authentication token.   rds <- paws::rds()   token <- rds$build_auth_token(endpoint, region, user)   con <- DBI::dbConnect(       RPostgres::Postgres(),       host = "myhost", port = 5432, dbname = "mydb",       user = "david", password = token   )
复制代码


使用这些软件包,您可以从 R 内轻松利用运行在 AWS 上的 AWS 资源和数据库。


在第 2 部分“使用 R 和 Amazon Web Services 进行文档分析”中,我们将向您演示如何通过在 AWS 上利用服务来使用这些软件包构建数据工作流,以将 PDF 转换为我们可以使用的数据。


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/getting-started-with-r-on-amazon-web-services/


2020-04-05 08:00524

评论

发布
暂无评论
发现更多内容

企业数字化转型,营销技术驱动超级增长!

博文视点Broadview

Python OpenCV 图像处理二值化,取经之旅第 7 天

梦想橡皮擦

3月日更

一个有情怀的PPT模板下载网站

happlyfox

学习 3月日更 工具分享

带你全面认识CMMI V2.0(三)——实践域

IPD产品研发管理

CMMI

如何在Python中实现Round函数?

华为云开发者联盟

Python 函数 Numpy Round 舍入函数

上帝视角掌管城市动向!智慧园区驱动城市数字化转型

一只数据鲸鱼

物联网 数据可视化 智慧城市 智慧园区

区块链圈频现百万元年薪招聘 现金+股票仍难觅良才

CECBC

区块链人才

LiteOS内核源码分析:位操作模块

华为云开发者联盟

LiteOS 源代码 位操作 bit Huawei LiteOS

Veema 寄来的新书

吴威

vmware 容灾 备份 veeam esxi

【IstioCon 2021】如何在Istio中进行源地址保持?

华为云原生团队

开源 云原生 istio 华为云 服务网格

Python API 邮件发送测试

HoneyMoose

领跑行业!浪潮云斩获“2021云管和云网大会”多项殊荣

浪潮云

云计算 云原生

C语言性能优化:减少相关性依赖,利用指令并行提升性能

1

编程 性能优化 C语言 cpu 100%

前端开发:数据处理方法分享(其一)

三掌柜

vue.js 大前端 3月日更

深入理解ES8的新特性SharedArrayBuffer

程序那些事

JavaScript ecmascript 程序那些事 es8

(Day30) 谁来驱动变革

mtfelix

28天写作 bewriting

uni-app跨端开发H5、小程序、IOS、Android(七):uni-app渲染

黑马腾云

html5 uni-app 大前端 3月日更

开源的 Switch 模拟器——GitHub 热点速览 v.21.12

HelloGitHub

GitHub 开源

LeetCode题解:126. 单词接龙 II,BFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

Java学习笔记——实体类(ENTITY,VO,DTO,BO)

棉花糖

Java

产品经理能力不够,产品方法论来凑

lenka

3月日更

Kubernetes认证管理员

云原生

Kubernetes 云原生 k8s CKA

中国最可靠的 Go 模块代理

happlyfox

学习 3月日更

AIOT技术大起底:别人开发“软件”,海尔智家开发“生活”

DT极客

【Axure9百例NO.45】中继器的不同场景下的样式处理

zhuchuanming

原型设计 Axure 交互原型

java deep vs shallow copies

shengjk1

Java deep copy shallow cop

适配器模式在Mybatis中的妙用

Java小咖秀

Java 源码 设计模式 mybatis 开发

实践解析丨Rust 内置 trait:PartialEq 和 Eq

华为云开发者联盟

rust hash Trait PartialEq Eq

人工智能能和人类辩论了;《云网产业发展白皮书》发布

京东科技开发者

人工智能

NA公链(Nirvana)NAC公链独步公链江湖

区块链第一资讯

区块链

图像视频压缩:深度学习,有一套

华为云开发者联盟

深度学习 自编码器 图像压缩 循环神经网络 视频压缩

开始在 Amazon Web Services 上使用 R_文化 & 方法_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章