Roy*_*lTS 4 r jdbc amazon-web-services amazon-athena
我正在尝试使用AWS自己的博客RJDBC中详细描述的将Athena数据库中的数据提取到R 中.唉,我试图提取的数据量很大,所以我收到以下错误信息:
Error in .jcall(rp, "I", "fetch", stride, block) :
java.sql.SQLException: The requested fetchSize is more than the allowed value in Athena. Please reduce the fetchSize and try again. Refer to the Athena documentation for valid fetchSize values.
Run Code Online (Sandbox Code Playgroud)
Athena文档实际上并没有给出任何这样的fetchSize值,但是我从这个github问题中收集到的值应该低于1000.我从同一个github问题中收集到没有办法将它传递fetchSize给RJDBC.那么有其他方法可以查询Athena是否尊重这个限制?
基本问题是dbGetQuery不允许指定fetchSize.由于每RJDBC包作者一个解决方法是将调用两个功能dbGetQuery分开包装,并传递fetchSize到fetch():
q <- dbSendQuery(c, ...)
fetch(q, -1, block=999)
Run Code Online (Sandbox Code Playgroud)
更普遍:
setMethod("dbGetQuery", signature(conn="JDBCConnection", statement="character"), def=function(conn, statement, ...) {
r <- dbSendQuery(conn, statement, ...)
on.exit(.jcall(r@stat, "V", "close"))
if (conn@jc %instanceof% "com.amazonaws.athena.jdbc.AthenaConnection") fetch(r, -1, 999) # Athena can only pull 999 rows at a time
else fetch(r, -1)
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1115 次 |
| 最近记录: |