未实现AWS Athena JDBC驱动程序ResultSet.getCharacterStream方法

时间:2017-03-30 19:01:49

标签: amazon-web-services amazon-athena

我有一个Athena / PrestoDB查询,可以返回多达3亿个设备ID。此屏幕截图显示了在AWS UI中执行时的查询。结果显示在1分钟以内,我在几分钟内从UI中提供的链接下载了完整的结果(319MB)。

enter image description here

当我通过JDBC连接执行相同的查询时,我收到的方法没有实现错误。看来AWS docs的AthenaJDBC41-1.0.0.jar还没有实现 getCharacterStream

ActiveRecord::StatementInvalid: ActiveRecord::JDBCError: com.amazonaws.athena.jdbc.NotImplementedException: Method ResultSet.getCharacterStream is not yet implemented: SELECT distinct(device_id) FROM presales.sightings_v3 WHERE DATE(date) BETWEEN DATE('2016-03-01') AND DATE('2016-03-02') AND ( contains(audiences, 1133) OR contains(audiences, 1149) OR contains(audiences, 1184) );

我使用AWS docsexample connection can be seen here的驱动程序AthenaJDBC41-1.0.0.jar。

我的猜测是方法 ResultSet.getCharacterStream 仅用于大结果,因为我的其他查询工作正常。

理想情况下,我希望此响应包含query_id或S3 Path vs流式传输大数据结果。我很好奇Athena UI如何在S3上生成指向结果的链接?

1 个答案:

答案 0 :(得分:1)

您可以从ResultSet

获取查询ID
((AthenaStatementClient)((AthenaResultSet)rs).getClient()).getQueryExecutionId()

使用它可以使用

构建S3路径
<s3_staging_dir>/<query_id>.csv