[ 
https://issues.apache.org/jira/browse/DRILL-4177?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15351280#comment-15351280
 ] 

Arina Ielchiieva commented on DRILL-4177:
-----------------------------------------

Adding configuration properties ?useCursorFetch=true&defaultFetchSize=10000 [1] 
helps to solve OOM

Here is some guidelines:
1. Before setting up storage plugin for MySql user needs to add 
mysql-connector-java-XXX-bin.jar to <Drill installation 
directory>/jars/3rdparty/. Please mind cursor fetch configuration works from 
5.0.0 version [2].
2. MySql version should be > 5.0.2.
3. Add properties to storage plugin configuration:
{
  "type": "jdbc",
  "driver": "com.mysql.jdbc.Driver",
  "url": "jdbc:mysql://host:port?useCursorFetch=true&defaultFetchSize=10000",
  "username": "XXX",
  "password": "XXX",
  "enabled": true
}

Fetch size can be adjusted.

[1] 
https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html
 
[2] https://dev.mysql.com/downloads/connector/j/




> select * from table;Node ran out of Heap memory, 
> exiting.java.lang.OutOfMemoryError: GC overhead limit exceeded
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: DRILL-4177
>                 URL: https://issues.apache.org/jira/browse/DRILL-4177
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Functions - Drill
>    Affects Versions: 1.3.0
>         Environment: drill1.3 jdk7
>            Reporter: david_hudavy
>              Labels: patch
>   Original Estimate: 12h
>  Remaining Estimate: 12h
>
> 0: jdbc:drill:zk=local> select * from table;
> Node ran out of Heap memory, exiting.
> java.lang.OutOfMemoryError: GC overhead limit exceeded
>         at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:2149)
>         at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1956)
>         at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:3308)
>         at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:463)
>         at 
> com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3032)
>         at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2280)
>         at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2673)
>         at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2546)
>         at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2504)
>         at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1370)
>         at 
> org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
>         at 
> org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
>         at 
> org.apache.drill.exec.store.jdbc.JdbcRecordReader.setup(JdbcRecordReader.java:177)
>         at 
> org.apache.drill.exec.physical.impl.ScanBatch.<init>(ScanBatch.java:101)
>         at 
> org.apache.drill.exec.physical.impl.ScanBatch.<init>(ScanBatch.java:128)
>         at 
> org.apache.drill.exec.store.jdbc.JdbcBatchCreator.getBatch(JdbcBatchCreator.java:40)
>         at 
> org.apache.drill.exec.store.jdbc.JdbcBatchCreator.getBatch(JdbcBatchCreator.java:33)
>         at 
> org.apache.drill.exec.physical.impl.ImplCreator.getRecordBatch(ImplCreator.java:151)
>         at 
> org.apache.drill.exec.physical.impl.ImplCreator.getChildren(ImplCreator.java:174)
>         at 
> org.apache.drill.exec.physical.impl.ImplCreator.getRecordBatch(ImplCreator.java:131)
>         at 
> org.apache.drill.exec.physical.impl.ImplCreator.getChildren(ImplCreator.java:174)
>         at 
> org.apache.drill.exec.physical.impl.ImplCreator.getRootExec(ImplCreator.java:105)
>         at 
> org.apache.drill.exec.physical.impl.ImplCreator.getExec(ImplCreator.java:79)
>         at 
> org.apache.drill.exec.work.fragment.FragmentExecutor.run(FragmentExecutor.java:230)
>         at 
> org.apache.drill.common.SelfCleaningRunnable.run(SelfCleaningRunnable.java:38)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>         at java.lang.Thread.run(Thread.java:745)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to