有没有人能够使用R编程语言在亚马逊dynamodb中成功获得CRUD记录?我发现支持这种语言绑定的参考:
唉,没有R.我们正在考虑将dynamodb用于大规模数据项目,但我们的主要分析师在R中最为舒适,所以我们正在探索我们的选择。
答案 0 :(得分:2)
这里是我用来从DynamoDB读取数据到R的简化版本。它依赖于R和Python可以交换数据的事实,以及Python中名为boto的库使得从DynamoDB获取数据变得非常容易。如果这是一个R套餐会很好,但我不会抱怨,因为你可以从亚马逊获得25GB的免费存储空间。
首先,您需要一个名为 query_dynamo.py 的Python脚本:
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)
现在,您将拥有一个名为&#34; df&#34;的数据帧。与您放在DynamoDB中的任何内容。
答案 1 :(得分:1)
有几种方法......让我加两个:
1-带有Hive和Streaming的EMR。
Hive将用于查询DynamoDB,它可以用作Haddop Streaming的输入,可以与任何可以从标准IO读取和写入的语言一起使用,包括R。
当然,这与典型的R程序和环境非常不同,但它会利用“大数据”工具。
JVM中的2-R-ish
如果您使用JVM的R解释器(例如Renjin)或JVM中的类似语言,您将能够直接使用AWS Java SDK和DynamoDB库,这对开发人员来说可能更为熟悉,但你有责任处理数据的“重大”。
答案 2 :(得分:0)
Cloudyr's aws.dynamodb便于从DynamoDB读取数据。然而,不幸的是,它趋向于将事物强迫为角色。另外,我在使用put_item函数向DynamoDB添加字符串数据以外的任何内容时遇到了麻烦。
AWS CLI运作良好。此处的示例:
$ aws dynamodb put-item --table-name "SOMETABLE" --item '{"aStringItem": {"S": "1900-01-02|myid"}, "aNumericItem": {"N": "2"}, "aMapItem": {"M": {"Source": {"S": "CLI"}}}}'
答案 3 :(得分:0)
对于遇到此问题的任何人,现在都有Paws package,这是一个适用于R的AWS开发工具包。您可以使用install.packages("paws")
安装它。
免责声明:我是Paws软件包的维护者。
例如:
# Create a client object.
svc <- paws::dynamodb()
# This example retrieves an item from the Music table. The table has a
# partition key and a sort key (Artist and SongTitle), so you must specify
# both of these attributes.
item <- svc$get_item(
Key = list(
Artist = list(
S = "Acme Band"
),
SongTitle = list(
S = "Happy Day"
)
),
TableName = "Music"
)
# This example adds a new item to the Music table.
svc$put_item(
Item = list(
AlbumTitle = list(
S = "Somewhat Famous"
),
Artist = list(
S = "No One You Know"
),
SongTitle = list(
S = "Call Me Today"
)
),
ReturnConsumedCapacity = "TOTAL",
TableName = "Music"
)