2013-01-08 35 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