正如我在上面的评论中提到的,您可以调查RAthena 和noctua 包。
这些程序包使用 AWS 开发工具包作为驱动程序连接到 AWS Athena。这意味着他们还将以 @Zerodf 提到的类似方法从 S3 下载数据。他们都使用 data.table 将数据加载到 R 中,因此它们非常快。如果出于某种原因需要,您也可以访问查询执行 ID。
以下是如何使用这些包的示例:
RAthena
创建到 AWS Athena 的连接,有关如何连接的更多信息,请查看:dbConnect
library(DBI)
con <- dbConnect(RAthena::athena())
如何查询 Athena 的示例:
dbGetQuery(con, "select * from sampledb.elb_logs")
如何访问查询 ID:
res <- dbSendQuery(con, "select * from sampledb.elb_logs")
sprintf("%s%s.csv",res@connection@info$s3_staging, res@info$QueryExecutionId)
夜猫子
创建到 AWS Athena 的连接,有关如何连接的更多信息,请查看:dbConnect
library(DBI)
con <- dbConnect(noctua::athena())
如何查询 Athena 的示例:
dbGetQuery(con, "select * from sampledb.elb_logs")
如何访问查询 ID:
res <- dbSendQuery(con, "select * from sampledb.elb_logs")
sprintf("%s%s.csv",res@connection@info$s3_staging, res@info$QueryExecutionId)
总结
这些包应该可以满足您的需求,但是当它们从 s3 中的查询输出下载数据时,我认为您不需要转到查询执行 ID 来执行相同的过程。