有没有人能够使用R编程语言在amazon dynamodb中成功执行CRUD记录?我发现支持的语言绑定此引用:AWS dynamodb支持“R”编程语言
唉,没有R.我们正在使用dynamodb用于大规模数据项目的考虑,但我们的主要分析师是最舒服的R,所以我们正在探索我们的选项。
有没有人能够使用R编程语言在amazon dynamodb中成功执行CRUD记录?我发现支持的语言绑定此引用:AWS dynamodb支持“R”编程语言
唉,没有R.我们正在使用dynamodb用于大规模数据项目的考虑,但我们的主要分析师是最舒服的R,所以我们正在探索我们的选项。
有几种方法可以让我添加两个:
1- EMR与配置单元和流。
蜂房将被用于查询DynamoDB和可以用作输入到Haddop流,可以与能够读取和从标准IO写,包括R.
那会当然任何语言被用于与典型的R程序和环境非常不同,但它会利用“大数据”工具。
2- R-ISH在JVM
如果您使用的JVM的R解释器(如韧劲)或在JVM中的类似的语言,你就可以使用AWS Java SDK的和DynamoDB直接访问库,这对开发人员来说可能更为熟悉,但是您需要负责处理数据的“庞大”。
下面是我用来从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中放入的任何内容。
不幸的是,我无法得到这个工作。看起来代码是用R执行的,但我似乎无法得到python结果返回R. – StatsStudent
将不带引号的“print(data)”添加到python脚本的底部,然后单独运行。我的第一个猜测是“数据”对象没有被填充。 – CalZ
好的,经过很多小时和来回测试后,我得到了这个工作窗口,但只有部分。我详细介绍了我在开发人员的网站上看到的行为:https://github.com/cjgb/rPython-win/issues/16。我想知道你是否遇到这些相同的问题。再次感谢您的帮助@CalZ! – StatsStudent
我曾考虑过为此创建一个r软件包,但最终决定使用php代替。以下是创建自己的软件包时必须遵循的文档,我认为:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/MakingHTTPRequests.html 您可能希望将RCurl软件包用作帮助访问API – Rguy
我快速查看了dynamodb的python代码,看起来你首先必须实现许多底层的通用亚马逊API访问。我怀疑有人在R中做过这件事。你可以使用'system'来调用一些python代码,但是你会失去一些效率。 – Spacedman
使用现有R库可以更容易地在EMR上使用S3或HDFS,并将DynamoDB导出到那里 – Guy