2013-01-08 9 views
5

Czy udało się każdemu z powodzeniem dokonać edycji rekordów CRUD w amazon dynamodb za pomocą języka programowania R? Znalazłem to odniesienie do powiązań językowych obsługiwane:Obsługa dynamosu AWS dla języka programowania "R"

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

niestety, nie R. Rozważamy użyciu dynamodb dla dużego projektu danych skalę, ale nasz główny analityk jest najwygodniejsze w R, więc badamy nasze opcje.

+0

Rozważałem stworzenie pakietu r do tego celu, ale ostatecznie zdecydowałem się na użycie php. Oto dokumentacja, którą musisz wykonać, aby stworzyć własny pakiet, myślę: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/MakingHTTPRequests.html Prawdopodobnie będziesz chciał użyć pakietu RCurl jako pomoc w uzyskiwaniu dostępu do API – Rguy

+0

Szybko rzuciłem okiem na kod Pythona dla dynamodb i wydaje się, że najpierw musisz zaimplementować wiele rzeczy o niższym poziomie dostępu do ogólnego interfejsu Amazon. Wątpię, by ktokolwiek to zrobił jeszcze w R. Możesz użyć 'system' do wywołania jakiegoś kodu Pythona, ale stracisz trochę wydajności. – Spacedman

+0

Najprawdopodobniej będzie łatwiej używać istniejących bibliotek R do pracy z S3 lub HDFS na EMR i eksportować DynamoDB na tamten numer – Guy

Odpowiedz

1

Istnieją różne podejścia do tego ... dodam dwa:

1- EMR z ula i strumieniowe.

Hive byłyby wykorzystywane do kwerendy DynamoDB i które mogłyby być wykorzystane jako wkład do Haddop Streaming, który może być używany z dowolnym języku, który może odczytywać i zapisywać się od standardowych IO, w tym R.

Oczywiście, że bardzo różni się od typowego programu i środowiska R, ale wykorzystałby narzędzia "dużych zbiorów danych".

2- R-owski w JVM

Jeśli używasz tłumacza R dla JVM (takich jak Renjin) lub podobny język w JVM, będzie można korzystać z AWS Java SDK i DynamoDB biblioteki bezpośrednio, a to może być znacznie bardziej znane programistom, ale Ty będziesz odpowiedzialny za obsługę "bigness" swoich danych.

2

Oto uproszczona wersja tego, czego używam do odczytu danych z DynamoDB do R. Opiera się na tym, że R i Python mogą wymieniać dane, a biblioteka o nazwie boto w Pythonie sprawia, że ​​pobieranie danych jest naprawdę łatwe DynamoDB. Byłoby fajnie, gdyby to był cały pakiet R, ale nie będę narzekał, biorąc pod uwagę 25 GB wolnego miejsca, które można dostać z Amazon.

Po pierwsze, trzeba skrypt Pythona, tak jak o nazwie 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']) 

Następnie w R to zrobić. Jeśli próbujesz tego w systemie Windows, możesz zamiast tego wypróbować rPython-win. Zrobiłem to wszystko w systemie 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) 

Teraz masz dataframe nazwie „DF” z treścią cokolwiek umieścić w DynamoDB.

+0

Nieszczęscie, nie mogę tego uruchomić. Wygląda na to, że kod wykonuje z R, ale nie mogę uzyskać wyniku Pythona, aby powrócić do R. – StatsStudent

+1

Dodaj "print (dane)" bez cudzysłowów na dole skryptu Pythona, a następnie uruchom go sam. Moim pierwszym przypuszczeniem byłby to, że obiekt "data" nie jest zapełniany. – CalZ

+0

OK, więc po wielu godzinach i testach tam iz powrotem, mam to do pracy na Windowsie, ale tylko częściowo. Dokładnie opisałem zachowanie, które widzę na stronie programisty: https://github.com/cjgb/rPython-win/issues/16. Chciałbym wiedzieć, czy doświadczasz tych samych problemów. Jeszcze raz dziękuję za pomoc @CalZ! – StatsStudent