如何在hive中通过jdbc进行游标获取结果

agyaoht7  于 2021-04-09  发布在  Hive
关注(0)|答案(0)|浏览(835)

我使用jdbc从hive获取数据,代码如下。

hiveJdbcTemplate.query("SELECT ... FROM ... without any condition", new RowCallbackHandler() {
        @Override
        public void processRow(ResultSet rs) throws SQLException {
            // do a some aggregate calculate but not memory consuming
        }
    });

因为表格太大,我经常会收到错误信息。

Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
    at org.apache.thrift.transport.TSaslTransport.readFrame(TSaslTransport.java:458)
    ...
    at org.apache.hive.service.rpc.thrift.TCLIService$Client.recv_FetchResults(TCLIService.java:559)
    ...

所以我需要像mongodb那样用游标(或者一些数据库叫懒惰取值)来取。mysql和postgresql等rdbms也有这样的模式,见。
mysql:https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-implementation-notes.html
postgresql:https://jdbc.postgresql.org/documentation/head/query.html
这可以在很大程度上减少客户端的内存占用。
如何在hive中做到这一点?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题