Tag: r

R中的MemoryError,而read.xlsx

我使用以下R代码(利用Java参数来增加内存): library(xlsx) options(java.parameters = “-Xmx1g”) library(XLConnect) NiVe <- read.xlsx("version1.xlsx",1) version1.xlsx文件大小为13 MB。 我收到以下错误: Error in .jcall(“RJavaTools”, “Ljava/lang/Object;”, “invokeMethod”, cl, : java.lang.OutOfMemoryError: Java heap space 有人可以帮忙吗?

如何通过Sparklyr在本地模式下运行Spark时配置驱动程序内存?

我正在使用Sparklyr在具有244GB RAM的虚拟机上以本地模式运行Spark应用程序。 在我的代码中,我使用spark_read_csv()从一个文件夹读取~50MB的csvs,然后从第二个文件夹读取~1.5GB的csvs。 我的问题是,当尝试读取第二个文件夹时,应用程序会抛出错误。 据我了解,问题是驱动程序JVM可用的默认RAM是512MB – 对于第二个文件夹来说太小(在本地模式下,所有操作都在驱动程序JVM中运行,如此处所述如何设置Apache Spark Executor内存 。所以我需要将spark.driver.memory参数增加到更大的值。 问题是我不能通过sparklyr文档中描述的常规方法设置此参数(即通过spark_config() , config.yml文件或spark-defaults.conf文件): 在本地模式下,当你运行spark-submit时,已经使用默认的内存设置启动了JVM,因此在conf中设置“spark.driver.memory”实际上并不会为你做任何事情。 相反,您需要运行spark-submit,如下所示: bin/spark-submit –driver-memory 2g –class your.class.here app.jar (来自如何设置Apache Spark Executor内存 )。 我以为我可以通过在sparklyr.shell.driver-memory添加sparklyr.shell.driver-memory选项来复制上面的bin/spark-submit命令; 如Sparklyr文档中所述; sparklyr.shell* options是传递给spark-submit命令行参数,即添加sparklyr.shell.driver-memory: 5G到config.yml文件应该相当于运行bin/spark-submit –driver-memory 5G 。 我现在已经尝试了上述所有选项,但它们都没有更改Spark应用程序中的驱动程序内存(我通过查看Spark UI的’Executors’选项卡进行检查)。 那么如何通过Sparklyr在本地模式下运行Spark时更改驱动程序内存?

在macOS Sierra 10.12.1上安装rJava:链接器错误licuuc

我试图在R-Studio中安装rJava但错误 ld: library not found for -licuuc clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [libjri.jnilib] Error 1 make[1]: *** [src/JRI.jar] Error 2 make: *** [jri] Error 2 ERROR: compilation failed for package ‘rJava’ * removing ‘/Users/iMacLinda/Library/R/3.3/library/rJava’ Warning in install.packages : installation of package ‘rJava’ had non-zero […]

让R使用更新版本的java

这个问题与另一个问题有关 。 我试图使用RNetLogo与R并获得以下错误。 nl.path <- "/Applications/NetLogo 5.1.0" NLStart(nl.path) Error in .jnew("nlcon/Preprocess") : java.lang.UnsupportedClassVersionError: nlcon/Preprocess : Unsupported major.minor version 51.0 根据我在其他问题中的理解,问题是R使用的旧版Java与RNetLogo不兼容。 我安装了Java 8.0希望解决这个问题,但我的理解是,尽管我的计算机上安装了Java 8.0(Mac OS Maverick),但R并没有拿起它并继续尝试使用旧版本的Java。 所以我的问题是:如何让R使用Java 8.0而不是任何旧版本? 在终端控制台中,我明白了 java -version : java version “1.6.0_65” Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode) 在此先感谢您的帮助,

Rserve服务器:如何终止阻塞实例(eval永远消失)?

我需要以multithreading的方式执行R eval ,这是Rserve提供的很好的东西。 但是,如果一个实例的eval需要太长时间,我需要能够关闭计算阻塞eval的实例。 就我测试而言,给定的实例将拒绝关闭,直到eval完成(显然,它需要在再次侦听之前获取结果)。 所以这是我的问题: 有没有办法在阻塞实例上获取java句柄(类似于Process对象),这样我就可以强制终止/终止eval(比如process.destroy() )? 换句话说,当我要求eval(创建连接,抛出命令)时,如何通过java在正在处理的eval和与之相关的Rsere实例之间建立关系? 或者我是否错过了一些已经允许处理这种需求的Rserve? 注意:我已经尝试通过serverEval()而不是在主实例上运行计算的常规eval运行所有(所有evals),但这当然不满意,因为它只使用一个进程(主要的一个) )。 我可以杀死的那个,但我的主要目标是能够单独关闭一个阻塞的eval,在一个单独的实例上运行。 而且,自然地,保持我的8个CPU内核的优势,也就是说,保持并行性。 除此之外没有必要使用Rserve(在这种情况下JRI引擎就足够了)。 注意:我想避免这种事情( 线程 ),在不同的端口上处理主服务器本身的几个实例。 那不是一个选择。 我已经尝试获取有关Rserve邮件列表的信息,但尚未得到答复。 我希望自己能够清楚地在这里得到答案或有用的评论。 如果没有,请询​​问详情。 非常感谢提前。 编辑:我还测试了RCaller ,它处理了R需要的尽可能多的实例,但是,因为它将结果写入XML文件以便稍后从java端解析(不像Rserve那样真正使用通信协议),它也是我必须执行的速度慢…

带有Tor的RSelenium与Windows上的新RSelenium版本

我在@jdharrison上找到了关于如何在Windows上使用RSelenium启动Tor的精彩答案: https : RSelenium 但是,在新版本的RSelenium中, startServer()已经不存在,其替换rsDriver()不会像startServer()之前那样使用java参数。 在新的RSelenium语法中,如何在firefox中启动Tor? 首先十分感谢)!

Eclipse和R中的StatET

我已经设法将StatET安装到eclipse中,我有一个名为“Test”的Java项目,里面有一些代码。 我希望能够将.R文件保存在该项目文件夹中,并将其作为独立的R脚本运行,与Java程序分开。 我怎样才能做到这一点? 如果我尝试在.R文件中突出显示某些R代码并运行它,则会显示“当前工作台窗口中没有R会话处于活动状态”。 更新:我添加了一个运行配置,当我尝试运行R脚本时,我现在在弹出框中出现以下错误: Launching the R Console was cancelled, because it seems starting the R engine failed. Please make sure that R package ‘rj’ (1.0.0 or compatible) is installed and that the R library paths are set correctly for the R environment configuration ‘R’

R / RStudio,Yosemite和Java

我昨天升级到了OSX优胜美地。 当我在RStudio运行library(xlsx)时,程序崩溃并收到消息:“要打开’RStudio’,您需要安装旧的Java SE 6运行时。” 当我在R运行library(xlsx)时,我得到了关于打开R的相同结果和消息。 这是我的详细信息: Mac Yosemite, Version 10.10.2 R version 3.1.2 (2014-10-31) Platform: x86_64-apple-darwin13.4.0 (64-bit) 我有Java版本8更新31.我运行java -version并收到此消息:“没有Java运行时,请求安装。” 所以我安装了Java SE Development Kit 8u31 。 现在: java -version java version “1.8.0_31” Java(TM) SE Runtime Environment (build 1.8.0_31-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode) 这没有做到这一点,因为运行library(xlsx)仍然会崩溃程序并发出警告。 我是否需要以某种方式回滚到Java SE 6运行时,或者有没有办法使用我安装的最新版本? 这个SOpost似乎是相关的,但我不清楚安装Java 6的安装解决方案。答案链接到似乎过时的苹果支持页面 。 我不熟悉Java,所以我可以使用一些建议。

创建R包时包含jar文件

我创建了一个骨架R包: lib jarFileHere.jar R r_code_file.R r_code_file.R尝试引用jarFileHere.jar中的类文件: library(“rJava”) library(“rjson”) .onLoad <- function(libname, pkgname) { .jpackage(pkgname, lib.loc=libname) } .onLoad("packagename", "../lib/jarFileHere.jar") .jnew("com/test/ClassHere", "") 但是由于java.lang.NoClassDefFoundError我失败了。 我能够使用它 .jinit .jaddClassPath(“../lib/jarFileHere.jar”) 但rJava文档明确表示不使用.jinit,因为当代码用作包时它不起作用。

卸载rJava和/或重新启动JVM

我想将rJava与mcparallel结合使用,但显然JVM不能分叉 。 因此,需要为每个子进程启动单独的JVM实例,例如: library(rJava) library(parallel) myfile <- system.file("tests", "test_import.xlsx", package = "xlsx") #This works: mccollect(mcparallel({ #Automatically initiates JVM in child xlsx::read.xlsx(myfile, 1) })) 但是我的问题是JVM已经在(主)父进程中启动了。 这使得在子进程中无法使用rJava : #init JVM in parent .jinit() #Doesn’t work anymore mccollect(mcparallel({ xlsx::read.xlsx(myfile, 1) })) 所以我真正需要的是在子进程中关闭/终止和重启JVM的方法。 简单地detach(“package:rJava”, unload = TRUE)似乎没有做到这一点。 force.init参数似乎也没有导致重启: #Also doesn’t work: .jinit() mccollect(mcparallel({ .jinit(force.init = TRUE) xlsx::read.xlsx(myfile, 1) })) […]