首页 > 解决方案 > 使用 Hive 查询超出 GC 开销限制

问题描述

我有一个配置单元表 tableA,它在 adv_id 和 dt 上分区

col_name       data_type
adv_id         int 
url            string
dt             int

我正在发起一个查询。

SELECT adv_id, url FROM tableA
WHERE 
dt = '20200510' 
AND adv_id IN (5039) limit 100;

为什么我会收到超出 GC 开销限制的错误,我该如何解决?请注意,使用adv_id = 5039在这里有效。但我需要检查多个值,因此需要检查 IN 子句。

Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
    at com.mysql.jdbc.SingleByteCharsetConverter.toString(SingleByteCharsetConverter.java:335)
    at com.mysql.jdbc.ResultSetRow.getString(ResultSetRow.java:819)
    at com.mysql.jdbc.ByteArrayRow.getString(ByteArrayRow.java:70)
    at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5816)
    at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5693)
    at org.datanucleus.store.rdbms.mapping.datastore.CharRDBMSMapping.getObject(CharRDBMSMapping.java:473)
    at org.datanucleus.store.rdbms.mapping.java.SingleFieldMapping.getObject(SingleFieldMapping.java:220)
    at org.datanucleus.store.rdbms.query.ResultClassROF.getObject(ResultClassROF.java:267)
    at org.datanucleus.store.rdbms.query.ForwardQueryResult.nextResultSetElement(ForwardQueryResult.java:181)
    at 

标签: hadoophive

解决方案


推荐阅读