2013-09-21 6 views
5

Это является продолжением/обновленный вопрос к этому:г языка для AWS DynamoDB

AWS dynamodb support for "R" programming language

Я ищу примеры или документации о том, как читать таблицу из DynamoDB в R.

Этот вопрос указал мне в правильном направлении:

R + httr and EC2 api authentication issues

(ответил великий @hadley ч imself!).

Это нормально, если мне нужно использовать httr, а затем разобрать ответ json, но я даже не могу понять, как отформатировать запрос POST.

Спасибо!

+0

Моя компания (Analytical Flavor Systems) теперь работает над пакетом с открытым исходным кодом для запроса DynamoDB из R. Я отправлю ссылку здесь, когда пакет будет выпущен. – JayCo

+4

любые обновления вашего пакета DynamoDB - R? –

ответ

1

Повторяя ответ от here, так как кто-то прислал мне эту страницу, задав аналогичный вопрос.

Вот упрощенная версия того, что я использую для чтения данных из DynamoDB в R. Он опирается на тот факт, что R и Python могут обмениваться данными, а также библиотека называется boto в Python делает его очень легко получить данные от DynamoDB. Это было бы аккуратно, если бы это был весь пакет R, но я не буду жаловаться, учитывая 25 ГБ свободного хранилища, которое вы можете получить от Amazon.

Во-первых, вам нужен сценарий 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) 

Теперь вы будете иметь dataframe под названием «ДФ» с содержанием того, что вы попали в DynamoDB.

+0

Просто пометили его. – CalZ

Смежные вопросы