2013-07-25 2 views
1

Я пытаюсь построить проект java, содержащий R-коды. Основная логика заключается в том, что я хочу автоматизировать структурирование данных и анализ данных в одном проекте. Частично я могу это сделать. Я подключил R к Java, и мои R-коды работают нормально. Я сделал все свое настроение на локальной машине и дал мне все, что мне нужно. Поскольку набор данных большой, я пытаюсь запустить его на сервере amazon. Но когда я переношу его на сервер, мой проект работает неправильно. Его невозможно выполнить library(XLConnect), library(rJava). Когда я когда-либо называю эти две библиотеки в моем проекте java, он рушится. Независимо по R-кодам работает и дает мне выход. Что я могу для этого и как исправить ошибку. Пожалуйста, помогите мне в этом.Интеграция Java и R


Моей ява кода является

import java.io.InputStreamReader; 
import java.io.Reader; 


public class TestRMain { 

    public static void main(String[] arg)throws Exception{ 

     ProcessBuilder broker = new ProcessBuilder("R.exe","--file=E:\\New\\Modified_Best_Config.R"); 
     Process runBroker = broker.start(); 

     Reader reader = new InputStreamReader(runBroker.getInputStream()); 
     int ch; 
     while((ch = reader.read())!= -1) 
      System.out.print((char)ch); 
     reader.close(); 

     runBroker.waitFor(); 

     System.out.println("Execution complete"); 

    } 
} 

И в Modified_Best_Config.R я написал эти коды

library('ClustOfVar'); 
library("doBy"); 
library(XLConnect) 
#library(rJava) 
#library(xlsx) 

path="E:/New/"; 


############Importing and reading the excel files into R############## 

Automated_R <- loadWorkbook("E:/New/Option_Mix_Calculation1.xlsx") 

sheet1 <- readWorksheet(Automated_R, sheet = "Current Output") 
sheet2 <- readWorksheet(Automated_R, sheet = "Actual Sales monthly") 
sheet3 <- readWorksheet(Automated_R, sheet = "Differences") 


#####################Importing raw Data############################### 

optionData<- read.csv(paste(path,"ModifiedStructureNewBestConfig1.csv",sep=""),head=TRUE,sep=","); 


nrow(optionData) 
optionDemand=sapply(split(optionData,optionData$Trim),trimSplit); 
optionDemand1=t(optionDemand[c(-1,-2),]); 
optionDemand1 

################Calculating the equipment Demand#################### 

optionDemand2<-t(optionDemand2[c(-1,0)]); 

Rownames <- as.data.frame(row.names(optionDemand2)) 

writeWorksheet(Automated_R,Rownames, sheet = "Current Output", startRow = 21, startCol = 1) 
writeWorksheet(Automated_R,optionDemand2, sheet = "Current Output", startRow = 21, startCol = 2) 
saveWorkbook(Automated_R) 

Но ява останавливает свою работу после того, как эти линий.

library("doBy"); 

Весь набор кодов хорошо работает на моей локальной машине. Но всякий раз, когда я пытаюсь запустить это на сервере amazon, он не работает. Отдельно в R этот код работает на сервере. У меня есть еще несколько R-кодов, которые работают без какой-либо ошибки. Что я могу сделать для этого, пожалуйста, помогите мне.

+1

Похоже, что у вас могут не быть установлены эти пакеты на вашем экземпляре сервера, но можете ли вы попытаться опубликовать какой-либо код, который воспроизводит эту проблему, чтобы другие могли более эффективно обращаться к ней? –

+0

Это может помочь: [Установка rJava и других пакетов на Ubuntu/EC2] (http://support.rstudio.org/help/discussions/problems/749-installing-rjava-and-other-packages-on-ubuntu-ec2) – Ben

+0

Вы говорите: «Индивидуально в R этот код работает на сервере». Используете ли вы сервер RStudio или используете ли вы R прямо из терминала на том же сервере Amazon, где у вас эта проблема? –

ответ

1

Благодарим за то, что вы обновили свой вопрос с помощью некоторого примера кода. Я не могу полностью повторить ваши обстоятельства, потому что у меня сейчас нет прямого доступа к Amazon EC2, и я не знаю конкретного типа экземпляра, который вы используете. Но вот пара предложений по устранению неполадок, которые у меня есть, вызвана отсутствующим пакетом.

1. Попробуйте установить пакеты обижая через ваш R сценарий

В самом начале своего R сценария, прежде чем пытаться загрузить любые пакеты, вставьте следующее:

install.packages(c("XLConnect", "rJava")) 

Если ваш экземпляр содержит указанное зеркало CRAN (по существу, онлайн-репозиторий, в котором R сначала будет искать исходный код пакета), этот должен установить пакеты в том же репо, где ваши другие пакеты хранятся на вашем сервере. Тогда либо library, либо require должны загрузить ваши пакеты.

(Sidenote: rJava фактически зависимость XLConnect, поэтому он будет автоматически загружаться в любом случае, если вы только указать library(XLConnect))

2. Если выше не работает, попробуйте установить пакеты с помощью командной строки

Это, по существу, то, что @Ben предлагал своим комментарием. В качестве альтернативы см., Возможно, this link, который касается аналогичной проблемы с другим пакетом. Если вы можете, в терминале на сервере, я бы попробуйте ввести следующие три команды:

sudo add-apt-repository ppa:marutter/rrutter 
sudo apt-get update 
sudo apt-get install r-cran-XLConnect 

В моем опыте это было хорошо идти к репо, когда я не могу найти пакет мне нужно установить.Но вы можете иметь или не иметь разрешения на установку пакетов на свой экземпляр сервера.

 Смежные вопросы

  • Нет связанных вопросов^_^