使用R连接到DynamoDB

问题描述 投票:1回答:1

我想用R连接到DynamoDB。我的最终目标是创建一个Shiny App来显示存储在DynamoDB中并经常更新的数据。所以我需要一种有效的方法来使用R来检索它。

以下引用给出了直觉,但它们不包含R中的本机实现,并且很长时间没有更新。

r language support for AWS DynamoDB AWS dynamodb support for "R" programming language R + httr and EC2 api authentication issues

正如上面的答案中所提到的,通过rPython在R中运行Python将是一个选项,因为有适用于Python的SDK,例如boto3

另一种选择是通过RJDBC使用JDBC驱动程序,我尝试过:

library(RJDBC)

drv <- JDBC(
  driverClass = "cdata.jdbc.dynamodb.DynamoDBDriver", 
  classPath = "MyInstallationDir\lib\cdata.jdbc.dynamodb.jar", 
  identifier.quote = "'"
)

conn <- dbConnect(
  drv,
  "Access Key=xxx;Secret Key=xxx;Domain=amazonaws.com;Region=OREGON;"
) 

(访问密钥和密钥由xxx替换)我收到错误:

Error in .verify.JDBC.result(jc, "Unable to connect JDBC to ", url) : 
  Unable to connect JDBC to Access Key=xxx;Secret 
Key=xxx;Domain=amazonaws.com;Region=OREGON;

在这件事上最好的做法是什么? R有一个可行的原生解决方案吗?如果有人能指出我正确的方向,我将不胜感激。

注意:包aws.dynamodbhttps://github.com/cloudyr/aws.dynamodb)看起来很有前途,但文档缺少示例,我找不到任何教程。

r amazon-web-services amazon-dynamodb rjdbc rpython
1个回答
0
投票

我想分享一些更新,以便具有相同问题的人可以从这篇文章中受益:

首先,我想出了如何使用JDBC驱动程序进行一些调整:

library(DBI)
library(RJDBC)

drv <- JDBC(
  driverClass = "cdata.jdbc.dynamodb.DynamoDBDriver", 
  classPath = "/Applications/CData/CData JDBC Driver for DynamoDB 2018/lib/cdata.jdbc.dynamodb.jar", 
  identifier.quote = "'"
)

conn <- dbConnect(
  drv, 
  url = 'jdbc:dynamodb: Access Key=xxx; SecretKey=xxx; Domain=amazonaws.com; Region=OREGON;'
)

dbListTables(conn)

其次,我意识到reticulate使得在R中运行Python代码非常方便(甚至超过rPython)并最终使用网状boto3将数据从DynamoDB获取到R.您可以参考以下文档以获取其他信息: reticulate boto3 - DynamoDB

最后,我听说RStudio正在计划构建一个NoSQL数据库驱动程序(它与DBIdbplyrpool等兼容),但可能很快就会推出。

希望有人会为AWS创建一个与boto3一样全面的R包,因为它越来越受欢迎。

© www.soinside.com 2019 - 2024. All rights reserved.