2017-06-05 16 views
4

AWS's own blogで詳しく説明したように、アテーナDBからRにデータをプルしようとしています。RJDBCを使用しています。ああ、私はプルしようとしているデータの量はかなりのものであるので、私は次のエラーメッセージになっています:"要求されたfetchSizeがAthenaの許容値を超えています"

​​

をアテナのドキュメントには、実際にそのようなfetchSize値を与えるものではありませんが、私はそのthis github issueから集まります値は1000より低くする必要があります。私は同じgithub問題からこのfetchSizeをRJDBCに渡す方法がないということを集めます。この限界を尊重しているAthenaに照会する他の方法はありますか?

+0

基礎となるクエリが何であるか知っていますか? –

+0

はい、私は質問が何であるか知っています。それは数十万行を返す必要があります。 – RoyalTS

+0

これは大量のデータです。データの量を制限できますか、いくつかのクエリですべてを取得できますか? –

答えて

5

dbGetQueryfetchSizeを指定できません。

より一般的に
q <- dbSendQuery(c, ...) 
fetch(q, -1, block=999) 

:1つの回避策は別途ラップdbGetQuery二つの機能を呼び出し、fetch()fetchSizeを渡すことですper the RJDBC package authorとして

setMethod("dbGetQuery", signature(conn="JDBCConnection", statement="character"), def=function(conn, statement, ...) { 
    r <- dbSendQuery(conn, statement, ...) 
    on.exit(.jcall([email protected], "V", "close")) 
    if ([email protected] %instanceof% "com.amazonaws.athena.jdbc.AthenaConnection") fetch(r, -1, 999) # Athena can only pull 999 rows at a time 
    else fetch(r, -1) 
}) 
+0

素晴らしい!私のためにも働きます! –

2

何が価値があるため、私はAWR.Athena Rでこれを固定パッケージなので、好きなときに使えます。