2013-01-08 8 views
5

Rプログラミング言語を使用して誰でもamazon dynamodbでCRUDレコードを正常に作成できましたか?私は、言語バインディングのこの参照がサポートされた:"R"プログラミング言語のAWS Dynamodbサポート

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コードを簡単に見てきました。まず、低レベルの一般的なamazon APIアクセスを実装する必要があるようです。私はまだ誰もRでこれをやっているのか疑問だ。あなたは 'system'を使っていくつかのpythonコードを呼び出すことができますが、効率が落ちます。 – Spacedman

+0

既存のRライブラリを使用して、EMR上のS3またはHDFSを操作し、DynamoDBをそこにエクスポートすることも可能でしょう。 – Guy

答えて

1

これにはいくつかの方法があります...私は2を追加してみましょう:ハイブとストリーミングで

の1- EMR。

読み、もちろん

だろうR.

含めて、標準IOから書くことができます任意の言語で使用することができますハイブは、DynamoDBのを照会するために使用されるだろうし、それはHaddopストリーミングへの入力として使用することができ

、典型的なRのプログラムや環境とは大きく異なるかもしれませんが、「ビッグデータ」ツールを活用するでしょう。

2- JVMにおけるRっぽい

あなたが(例えばRenjinなど)JVMのRインタプリタまたはJVMで同様の言語を使用する場合は、AWSのJava SDKとDynamoDBのを使用することができるであろう開発者にとってはもっと馴染み深いかもしれませんが、データの "敏捷さ"を処理する責任はあなたにあります。

2

DynamoDBからRにデータを読み込むために使用しているものを簡略化したものです。これは、RとPythonがデータを交換でき、Pythonのbotoというライブラリが本当に簡単にデータを取得できます。 DynamoDB。これがRパッケージであればうまくいくだろうが、Amazonから入手できる25GBの無料ストレージがあれば、私は不平を言うことはない。次にRにあなたがこれを行う

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']) 

まず、あなたはそのように命名query_dynamo.pyのようなPythonスクリプトが必要になります。 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) 

これで、DynamoDBに入れた内容を「df」というデータフレームにすることができます。

+0

Unfotunately、私はこれを動作させることはできません。コードがRで実行されているようですが、私はPythonの結果をRに戻すことはできません。 – StatsStudent

+1

pythonスクリプトの一番下に「print(data)」を引用符なしで付け加え、それを単独で実行します。私の最初の推測は、 "データ"オブジェクトにデータが取り込まれないことです。 – CalZ

+0

OK、何時間も前と後のテストの後、私はこれをウィンドウ上で動作させましたが、部分的にしか動作しませんでした。私は、開発者のウェブサイトに表示されている動作を詳細に説明しています:https://github.com/cjgb/rPython-win/issues/16。あなたがこれらの同じ問題を経験したかどうか知りたいのですが。あなたの助けをもう一度感謝@カルツ! – StatsStudent

関連する問題