如何解决 R 和 Java 中的异常“评估失败,请求状态:错误代码:127”?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/21907545/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to resolve exception "eval failed, request status: error code: 127" in R and Java?
提问by Vishwas
I am using R and Java for displaying prediction.
我正在使用 R 和 Java 来显示预测。
I have data of 5 hours. I want to predict 5th-hour data from four hours' data (memory with respect to date). By using 4 hours' data I am creating new collection and inserting the 5th hour's predicted data in a new collection. But I am getting the following error:
我有5小时的数据。我想从四个小时的数据(相对于日期的内存)预测第 5 小时的数据。通过使用 4 小时的数据,我正在创建新集合并将第 5 小时的预测数据插入新集合中。但我收到以下错误:
The Exception is eval failed, request status: error code: 127
org.rosuda.REngine.Rserve.RserveException: eval failed, request status: error code: 127
at org.rosuda.REngine.Rserve.RConnection.eval(RConnection.java:233)
at scheduler.scheduler.predictions.getPredictionsofData(predictions.java:45)
at pack.GetCollectionMultithreaded.getPredictionAndInsert(GetCollectionMultithreaded.java:386)
at pack.GetCollectionMultithreaded.runCustomerListAndPredictionEvery5Min(GetCollectionMultithreaded.java:155)
at pack.GetCollectionMultithreaded.main(GetCollectionMultithreaded.java:103)
Here is code:
这是代码:
public class predictions {
public void getPredictionsofData(DB dbObj){
FileInputStream fis = null;
DBCollection network_device_realtime = dbObj.getCollection("mycollectionname");
DBObject return_dobject = null;
// For Network device1 realtime
try{
List<String> listOfIps = network_device_realtime.distinct("hostId");
RConnection c = new RConnection(Rhost,Rport);
c.eval("library(RMongo)");
c.eval("library(plyr)");
c.eval("library(randomForest)");
c.eval(" db <- mongoDbConnect('demo','localhost',27017)");
for( int i= 0 ;i<listOfIps.size(); i++){
float my_predicted_date = 0 ;
BasicDBObject criteria = new BasicDBObject();
BasicDBObject projections = new BasicDBObject();
criteria.put("hostId",listOfIps.get(i));
projections.put("runtimeMillis", 1);
DBCursor cursor = network_device_realtime.find(criteria,projections).sort(new BasicDBObject("runtimeMillis",-1)).limit(1);
while(cursor.hasNext()) {
BasicDBObject obj = (BasicDBObject) cursor.next();
my_predicted_date = (float) obj.getDouble("runtimeMillis");
}
// Set predict date for testing purpose
my_predicted_date = my_predicted_date-(4*60*60*1000);
// for calculating predictions next 24 hrs
for(int j = 1; j <= 12 ;j++){
my_predicted_date = my_predicted_date+(300*1000);//j*60*60*1000calculating next hrs data
System.out.println("Date Gen in network: " +my_predicted_date);
c.eval("query <- dbGetQuery(db,'"+network_device_realtime+"','{\"hostId\":\""+listOfIps.get(i)+"\",\"cpuUtilization\":{\"$ne\":\"null\"},\"memoryUtilization\":{\"$ne\":\"NaN\"},\"runtimeMillis\":{\"$ne\":\"null\"}}')");
c.eval("date <- query$runtimeMillis");
c.eval("host_id <- query$hostId");
c.eval("cpu <- query$cpuUtilization ");
c.eval("memory <- query$memoryutil");
c.eval("all_data<-data.frame(cpu,date)");
c.eval("training<- all_data");
c.eval("rf_fit<-randomForest(memory~date,data=training)");
c.eval("df <- data.frame(date="+my_predicted_date+ ")");
c.eval("predictions<-predict(rf_fit,newdata=new)");
REXP memory_predictions= c.eval("predictions");
c.eval("rf_fit<-randomForest(cpu~date,data=training)");
c.eval("df <- data.frame(date="+my_predicted_date+ ")");
c.eval("predictions<-predict(rf_fit,newdata=new)");
REXP cpu_predictions= c.eval("predictions");
String json = "";
json ="{\"memoryUtilization\":"+ memory_predictions + ",\"cpuUtilization\" : "+ cpu_predictions + ",\"hostId\" : \""+ listOfIps.get(i) + "\",\"runtimeMillis\":"+my_predicted_date+",\"deviceType\":\"snmp\"}";
return_dobject=(DBObject) JSON.parse(json);
dbObj.getCollection("prediction").insert(return_dobject);
}
}
c.close();
}
catch(Exception e){
System.out.println("ERROR: In Connection to R ");
System.out.println("The Exception is "+ e.getMessage());
e.printStackTrace();
}
}
}//class
In this code I am getting error on this line:
在这段代码中,我在这一行遇到错误:
c.eval("rf_fit<-randomForest(memory~date,data=training)");
How do I resolve this error?
如何解决此错误?
采纳答案by user3322141
This exception mainly occurs due to data in statement
这个异常主要是因为语句中有数据
c.eval("rf_fit<-randomForest(memory~date,data=training)");
contains null.
包含空值。
This is might be due to bug in your data framing. Please check it once.
这可能是由于您的数据框架中的错误。请检查一次。
回答by Anand
To get the proper error message, use this instead of simple eval
要获得正确的错误消息,请使用它而不是简单的 eval
REXP rResponseObject = rServeConnection.parseAndEval(
"try(eval("+R_COMMAND_OR_SOURCE_FILE_PATH+"),silent=TRUE)");
if (rResponseObject.inherits("try-error")) {
LOGGER.error("R Serve Eval Exception : "+rResponseObject.asString());
}
This logger prints exact error thrown from R.
此记录器打印从 R 抛出的确切错误。