RJDBC(dbGetQuery) - 超出GC开销限制

时间:2016-11-08 07:19:35

标签: r rjdbc

我正在使用RJDBC包,并在那里使用函数dbGetQuery来获取SQL查询的输出。该代码适用于SQL语句而没有那么多行,但哪些语句哪些行> 1.000.000我收到错误。是否有处理内存的参数?

dbGetQuery(conn,"SQL..")

然后我收到以下错误消息:

  

.jcall(rp,“I”,“fetch”,stride,block)出错:
  java.lang.OutOfMemoryError:超出GC开销限制

谢谢! R007

1 个答案:

答案 0 :(得分:0)

如本文所述,在加载库之前,将java parameters参数放在代码的顶部,这会使堆大小从默认的512 MB增加。如果已经加载了软件包,则需要重新启动R并重新运行代码以应用更改。

https://www.ibm.com/support/pages/executing-code-r-connecting-impala-jdbc-rjdbc-results-error-jcallrp-i-fetch-stride-javalangoutofmemoryerror-java-heap-space-rjdbcdbgetquery-gc-overhead-limit-exceeded

# Do this first    
options(java.parameters = "-Xmx4g")

# Then load your libraries
library(XLConnect)
library(RJDBC)

接下来,您可以根据需要使用XLConnect软件包释放Java内存。

# Free up java memory
XLConnect::xlcFreeMemory()

如果您正在像我一样运行一个巨大的循环,则可能需要将此循环插入到循环中以释放内存,然后再重新输入并再次运行。

在运行代码之前先安装软件包:

# Install XLConnect
install.packages("XLConnect")

这两件事可能足以解决您的问题。

有关此主题的更多信息,请参见: "Out of Memory Error (Java)" when using R and XLConnect package