Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让R从Java将数据加载到变量中,而无需R将信息发送回Java_Java_R_Heap_Jri_Rjava - Fatal编程技术网

让R从Java将数据加载到变量中,而无需R将信息发送回Java

让R从Java将数据加载到变量中,而无需R将信息发送回Java,java,r,heap,jri,rjava,Java,R,Heap,Jri,Rjava,我正在从java向R加载一个非常大的数据集。我创建了一个使用rJava的jri调用R的Java程序。这个程序已经包装成一个可执行的jar文件,并且正在从终端(linux)调用。数据是50列乘1370万行的区域。只有R可以毫无问题地处理这个问题。然而,当我从Java程序运行它时,我得到一个Java OutofMemory堆错误 问题是,当我用它工作的一半行运行它时,R应该只将每个变量的名称(总共50个)发送回java,而不管有多少行。这是我正在使用的代码: re.eval("names(data&

我正在从java向R加载一个非常大的数据集。我创建了一个使用rJava的jri调用R的Java程序。这个程序已经包装成一个可执行的jar文件,并且正在从终端(linux)调用。数据是50列乘1370万行的区域。只有R可以毫无问题地处理这个问题。然而,当我从Java程序运行它时,我得到一个Java OutofMemory堆错误

问题是,当我用它工作的一半行运行它时,R应该只将每个变量的名称(总共50个)发送回java,而不管有多少行。这是我正在使用的代码:

re.eval("names(data<-read.csv(file="data.csv", head=TRUE, sep=","));

re.eval(“名称(数据一种允许您在不返回Java的情况下调用R的方法是将R作为一个外部进程调用。因为看起来这大致就是您正在做的事情,也许让操作系统执行对R的调用,而不是Java内部的库,可以防止溢出。

一种方法是d允许您在不返回Java的情况下调用R将是将R作为一个外部进程调用。因为看起来这大致就是您正在做的事情,也许让操作系统执行对R的调用,而不是Java内部的库,可以防止溢出。

您是否尝试过通过启动e来调整JVM堆大小可执行选项

比如:

显然,您可以调整内存值,但是选项
-Xmx
设置JVM的最大堆大小,
-Xms
设置初始大小


如果您正在处理大量实际需要检索的数据,这可能会有所帮助,否则,您不需要返回任何数据的选项(如cdeszaq所建议的)显然最适合您。

您是否尝试过通过使用选项启动可执行文件来调整JVM堆大小

比如:

显然,您可以调整内存值,但是选项
-Xmx
设置JVM的最大堆大小,
-Xms
设置初始大小


如果您正在处理大量实际需要检索的数据,则这可能会有所帮助,否则请选择其他选项(如cdeszaq所建议的)如果您没有得到任何数据,显然最适合您。

这会让Rengine在后台运行吗?在我加载数据后,用户可以与程序交互,挑选vVariable,绘制它们,操纵它们等等。我需要保留此功能。另外,您知道它为什么内存不足吗?为什么如果只返回50个名称,它是否可以处理一半的行数?我对您正在使用的包不是特别熟悉,但我的猜测是,在Java库中,它正在加载CSV文件中的所有数据,只是堆中的空间不足。(这意味着是出站数据导致问题,而不是入站数据)。您可以尝试增加JVM运行时使用的堆空间:这会使Rengine在后台运行吗?在我加载数据后,用户可以与程序交互,挑选vVariable,绘制它们,操纵它们等等。我需要保留此函数。另外,您知道它为什么会耗尽内存吗?为什么如果只返回50个名称,则处理一半的行数?我对您使用的包不是特别熟悉,但我猜测,在Java库中,它正在加载CSV文件中的所有数据,只是堆中的空间不足。(这意味着是传出数据导致问题,而不是传入数据)。您可以尝试增加JVM运行时使用的堆空间:
java -Xmx1024m -Xms1024m myJar