使用aws.s3

时间:2019-10-30 18:26:01

标签: r amazon-web-services amazon-s3

我正在使用混浊的r aws.s3代码从s3下拉RDS文件。我在lambda中拥有自己的自定义R运行时。 aws.s3有一个方便的方法,称为s3readRDS(“ s3:// pathtoyourfile”)。这很好用,但是有一个限制,那就是它将RDS文件保存到磁盘,然后必须使用readRDS将其读回。对于较小的文件,这很好,但是对于较大的文件,由于我们的磁盘存储空间有限,因此无法进行。

现在,我有点被这些庞大的数据文件所困扰,由于目标人群的原因,将它们拉到数据库中的能力目前还不可行,所以我试图将成本和成本降到最低。最大化吞吐量,这是棺材中的最后一个钉子。

根据文档: “有些用户可能会发现\ code {get_object}的原始矢量响应格式不熟悉。该对象还将包含属性,包括\ dQuote {content-type},这对于决定如何后续处理矢量可能很有用。两种常见策略如下所示。对于文本内容类型,运行\ code {\ link [base] {charToRaw}}可能是使响应易于阅读的最有用的第一步;或者,使用\ code { \ link [base] {rawConnection}}也可能有用,因为它通常可以像文件连接一样传递给解析函数。“

基于此(以及一个使用load()的示例),以下代码看起来应该可以工作,但是不起作用。

foo <- readRDS(rawConnection(get_object("s3://whatever/foo.rds")))

Error in readRDS(rawConnection(get_object("s3://whatever/foo.rds",  : 
  unknown input format

我似乎无法将数据流用于readRDS或反序列化来理解它。我知道文件是正确的,因为使用“保存到磁盘/从磁盘加载”效果很好。但是我想知道如何在不保存/加载的情况下将“ foo”变成未序列化的对象。

0 个答案:

没有答案