我想用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.dynamodb
(https://github.com/cloudyr/aws.dynamodb)很有希望,但文档中没有示例,我找不到任何教程。
答案 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数据库驱动程序(它将与DBI
,dbplyr
,pool
等兼容),但可能不会即将推出。
希望有人会为AWS创建一个boto3
一样全面的R包。