R プログラミング言語を使用して、Amazon dynamodb で正常に CRUD レコードを作成できた人はいますか? サポートされている言語バインディングのこのリファレンスを見つけました:
悲しいかな、R ではありません。大規模なデータ プロジェクトに dynamodb を使用することを検討していますが、主なアナリストは R に最も慣れているため、オプションを検討しています。
R プログラミング言語を使用して、Amazon dynamodb で正常に CRUD レコードを作成できた人はいますか? サポートされている言語バインディングのこのリファレンスを見つけました:
悲しいかな、R ではありません。大規模なデータ プロジェクトに dynamodb を使用することを検討していますが、主なアナリストは R に最も慣れているため、オプションを検討しています。
これは、私が 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」というデータフレームが作成されます。
これにはいくつかのアプローチがあります... 2 つ追加させてください。
1- Hive とストリーミングを使用した EMR。
Hive は DynamoDB のクエリに使用され、R を含む標準 IO から読み書きできる任意の言語で使用できる Haddop ストリーミングへの入力として使用できます。
もちろん、これは通常の R プログラムや環境とは大きく異なりますが、「ビッグ データ」ツールを活用します。
2-JVMのRっぽい
JVM 用の R インタープリター (Renjin など) または JVM で同様の言語を使用する場合、AWS Java SDK および DynamoDB ライブラリを直接使用できます。データの「大きさ」を処理する責任があります。
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 つのオプションは、 RcppとrJavaです。Java と C++ の両方で使用できるネイティブ SKD があります。