7

R プログラミング言語を使用して、Amazon dynamodb で正常に CRUD レコードを作成できた人はいますか? サポートされている言語バインディングのこのリファレンスを見つけました:

http://aws.typepad.com/aws/2012/04/amazon-dynamodb-libraries-mappers-and-mock-implementations-galore.html

悲しいかな、R ではありません。大規模なデータ プロジェクトに dynamodb を使用することを検討していますが、主なアナリストは R に最も慣れているため、オプションを検討しています。

4

4 に答える 4

3

これは、私が DynamoDB から R にデータを読み取るために使用しているものの単純化されたバージョンです。これは、R と Python がデータを交換できるという事実に依存しており、 Python のbotoと呼ばれるライブラリを使用すると、DynamoDB からデータを簡単に取得できます。これがすべて R パッケージだったらすばらしいのですが、Amazon から入手できる 25 GB の無料ストレージを考えれば文句は言えません。

まず、 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)

これで、DynamoDB に入力した内容を含む「df」というデータフレームが作成されます。

于 2017-05-01T12:22:49.600 に答える
1

これにはいくつかのアプローチがあります... 2 つ追加させてください。

1- Hive とストリーミングを使用した EMR。

Hive は DynamoDB のクエリに使用され、R を含む標準 IO から読み書きできる任意の言語で使用できる Haddop ストリーミングへの入力として使用できます。

もちろん、これは通常の R プログラムや環境とは大きく異なりますが、「ビッグ データ」ツールを活用します。

2-JVMのRっぽい

JVM 用の R インタープリター (Renjin など) または JVM で同様の言語を使用する場合、AWS Java SDK および DynamoDB ライブラリを直接使用できます。データの「大きさ」を処理する責任があります。

于 2014-04-08T15:00:32.390 に答える
1

Cloudyr の aws.dynamodbは、DynamoDB からのデータの読み取りに便利です。しかし、残念なことに文字に強要される傾向があります。また、put_item 関数を使用して文字列データ以外を DynamoDB に追加するのに問題がありました。

AWS CLI はうまく機能します。例:

$ aws dynamodb put-item --table-name "SOMETABLE" --item '{"aStringItem": {"S": "1900-01-02|myid"}, "aNumericItem": {"N": "2"}, "aMapItem": {"M": {"Source": {"S": "CLI"}}}}'

言及されていない他の 2 つのオプションは、 RcpprJavaです。Java と C++ の両方で使用できるネイティブ SKD があります。

于 2018-10-20T21:36:35.843 に答える