[英]How to resolve exception “eval failed, request status: error code: 127” in R and Java?
I am using R and Java for displaying prediction. 我正在使用R和Java显示预测。
I have data of 5 hours. 我有5个小时的数据。 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. 通过使用4个小时的数据,我正在创建新的集合并将第5个小时的预测数据插入到新的集合中。 But I am getting the following error: 但是我收到以下错误:
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? 如何解决此错误?
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引发的确切错误。
This exception mainly occurs due to data in statement 发生此异常的主要原因是语句中的数据
c.eval("rf_fit<-randomForest(memory~date,data=training)");
contains null. 包含null。
This is might be due to bug in your data framing. 这可能是由于数据框架中的错误所致。 Please check it once. 请检查一次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.