使用R连接到DynamoDB

时间:2018-06-21 04:11:52

标签: r amazon-web-services amazon-dynamodb rjdbc rpython

我想用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之类的Python SDK,因此可以选择通过boto3在R中运行Python。

另一种选择是通过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)很有希望,但文档中没有示例,我找不到任何教程。

1 个答案:

答案 0 :(得分: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包。