簡體   English   中英

如何在R和Java中解決異常“評估失敗,請求狀態:錯誤代碼:127”?

[英]How to resolve exception “eval failed, request status: error code: 127” in R and Java?

我正在使用R和Java顯示預測。

我有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)

這是代碼:

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

在這段代碼中,我在此行出現錯誤:

 c.eval("rf_fit<-randomForest(memory~date,data=training)");

如何解決此錯誤?

要獲取正確的錯誤消息,請使用此代替簡單的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());
}

該記錄器打印從R引發的確切錯誤。

發生此異常的主要原因是語句中的數據

c.eval("rf_fit<-randomForest(memory~date,data=training)");

包含null。

這可能是由於數據框架中的錯誤所致。 請檢查一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM