7

This is a follow up / updated question to this:

AWS dynamodb support for "R" programming language

I am looking for examples or documentation on how to read in a table from DynamoDB into R.

This question pointed me in the right direction:

R + httr and EC2 api authentication issues

(answered by the great @hadley himself!).

It's ok if I have to use httr and then parse a json response, but I can't even figure out how to format the POST request.

Thanks!

4

2 回答 2

3

自从有人向我发送此页面询问类似问题以来,从这里重复我的回答。

这是我用于将数据从 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)

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

于 2017-05-01T12:26:40.823 回答
0

您可以使用Lambda 函数将更新流式传输到您的 DynamoDB 表,以连接到 Redshift,就像您连接到 SQL 数据库一样,然后针对 Redshift 执行您需要的大数据分析。

于 2017-02-13T00:41:26.243 回答