2

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

以下参考资料提供了一种直觉,但它们不包括 R 中的本机实现,并且很长时间没有更新。

r 语言支持 AWS DynamoDB
AWS dynamodb 支持“R”编程语言
R + httr 和 EC2 api 身份验证问题

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

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

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)看起来很有希望,但文档缺少示例,我找不到任何教程。

4

1 回答 1

1

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

首先,我通过一些调整想出了如何使用 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),最终使用reticulated boto3将数据从 DynamoDB 获取到 R 中。您可以参考以下文档以获取更多信息:- DynamoDB
reticulate
boto3

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

boto3希望随着AWS 越来越流行,有人会创建一个与 AWS 一样全面的 R 包。

于 2018-07-28T06:18:51.367 回答