有沒有人能夠使用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