【问题标题】:Connecting to DynamoDB using R使用 R 连接到 DynamoDB
【发布时间】:2018-06-21 04:11:52
【问题描述】:

我想用 R 连接到 DynamoDB。我的最终目标是创建一个闪亮的应用程序来显示存储在 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;"
) 

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

【问题讨论】:

  • 您是否尝试过 AWS API 文档?您可以使用简单的 HTTP 调用与 Dynamo 进行交互,不需要用于 python 或 R 的高级 SDK...docs.aws.amazon.com/amazondynamodb/latest/APIReference/…
  • @RenatoByrro;我尝试过,但发现它非常痛苦。我对 HTTP 调用没有太多经验。非常欢迎您在下面发布示例解决方案。
  • 我对 R 不熟悉。在 Python 中连接到外部数据库是一件小事,而且它的数据科学库非常强大。机会是您在 R 中尝试做的任何事情,在 Python 中也有一种方法可以做。您的用例不可以选择仅依赖 Python 而不是 R 吗?
  • R 也为关系数据库提供了非常强大的工具,但对于 NoSQL 则没有。我最终受益于 boto3 在构建闪亮应用程序时将数据提取到 R 中。
  • 您可能希望在以下包中达到峰值:github.com/Appsilon/shiny.collections。如果基于比 ReThinkDB 更成熟的数据库平台提供这样的东西,那就太好了。

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


【解决方案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. 您可以参考以下文档了解更多信息:
reticulate
boto3 - DynamoDB

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

希望随着 AWS 越来越受欢迎,有人会为 AWS 创建一个像 boto3 这样全面的 R 包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 2016-03-11
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 2015-08-13
    相关资源
    最近更新 更多