2013-01-08 58 views
5

有没有人能够使用R编程语言在amazon dynamodb中成功执行CRUD记录?我发现支持的语言绑定此引用:AWS dynamodb支持“R”编程语言

http://aws.typepad.com/aws/2012/04/amazon-dynamodb-libraries-mappers-and-mock-implementations-galore.html

唉,没有R.我们正在使用dynamodb用于大规模数据项目的考虑,但我们的主要分析师是最舒服的R,所以我们正在探索我们的选项。

+0

我曾考虑过为此创建一个r软件包,但最终决定使用php代替。以下是创建自己的软件包时必须遵循的文档,我认为:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/MakingHTTPRequests.html 您可能希望将RCurl软件包用作帮助访问API – Rguy

+0

我快速查看了dynamodb的python代码,看起来你首先必须实现许多底层的通用亚马逊API访问。我怀疑有人在R中做过这件事。你可以使用'system'来调用一些python代码,但是你会失去一些效率。 – Spacedman

+0

使用现有R库可以更容易地在EMR上使用S3或HDFS,并将DynamoDB导出到那里 – Guy

回答

1

有几种方法可以让我添加两个:

1- EMR与配置单元和流。

蜂房将被用于查询DynamoDB和可以用作输入到Haddop流,可以与能够读取和从标准IO写,包括R.

那会

当然任何语言被用于与典型的R程序和环境非常不同,但它会利用“大数据”工具。

2- R-ISH在JVM

如果您使用的JVM的R解释器(如韧劲)或在JVM中的类似的语言,你就可以使用AWS Java SDK的和DynamoDB直接访问库,这对开发人员来说可能更为熟悉,但是您需要负责处理数据的“庞大”。

2

下面是我用来从DynamoDB中读取数据到R中的简化版本。它依赖于R和Python可以交换数据的事实,并且Python中的一个名为boto的库使得从数据库中获取数据变得非常容易DynamoDB。如果这是一个R包,它会很整洁,但考虑到你可以从Amazon获得25GB的免费存储空间,我不会抱怨。

首先,你需要一个Python脚本像这样命名query_dynamo.py

import boto3 
import time 

dynamodb = boto3.resource('dynamodb', 
          aws_access_key_id='<GET ME FROM AWS>', 
          aws_secret_access_key='<ALSO GET ME FROM AWS CONSOLE>', 
          region_name='us-east-1') 

table = dynamodb.Table('comment') ###Your table name in DynamoDB here 

response = table.scan() 
data = response['Items'] 

while 'LastEvaluatedKey' in response: 
    response = table.scan(ExclusiveStartKey=response['LastEvaluatedKey']) 
    data.extend(response['Items']) 

然后在R您做到这一点。如果您在Windows上尝试此操作,则可能需要尝试rPython-win。我在Ubuntu Linux 16.04 LTS上完成了这一切。

library(rPython) 


python.load("query_dynamo.py") 
temp = as.data.frame(python.get('data')) 
df = as.data.frame(t(temp)) 
rm(temp) 

现在您将拥有一个名为“df”的数据框,其中包含您在DynamoDB中放入的任何内容。

+0

不幸的是,我无法得到这个工作。看起来代码是用R执行的,但我似乎无法得到python结果返回R. – StatsStudent

+1

将不带引号的“print(data)”添加到python脚本的底部,然后单独运行。我的第一个猜测是“数据”对象没有被填充。 – CalZ

+0

好的,经过很多小时和来回测试后,我得到了这个工作窗口,但只有部分。我详细介绍了我在开发人员的网站上看到的行为:https://github.com/cjgb/rPython-win/issues/16。我想知道你是否遇到这些相同的问题。再次感谢您的帮助@CalZ! – StatsStudent