Ho scritto un piccolo client Java che esegue alcuni calcoli su un Rserver. A tal fine, ci sono i file functions.r
- e libraries.r
sul lato server, che devono essere originati, prima che il calcolo possa essere eseguito.Sourcing di file r una sola volta su Rserve
Attualmente mi caricare i file su ogni nuova connessione:
import org.rosuda.REngine.Rserve.RConnection;
public class RserveTester {
public void doOnRserve() {
RConnection c = new RConnection("rserve.domain.local");
c.login("foo", "user");
c.eval("source(\"/home/rserve/lib/libraries.r\")");
c.eval("source(\"/home/rserve/lib/functions.r\")");
c.eval("someCalculation()")
c.close();
}
}
dove doOnRserve()
è chiamato a causa di alcuni eventi sul lato client paio di volte in un minuto.
La mia domanda è: è possibile procurarsi le librerie una sola volta, in modo tale che siano disponibili durante tutte le nuove RSessions senza individuazione individuale?
ho provato sulla qualcosa di lato client simile:
c.serverSource("/home/rserve/lib/libraries.r")
c.serverSource("/home/rserve/lib/functions.r")
che mi dà TE seguente eccezione (idea del perché questo non funziona Wile eval
fa):
org.rosuda.REngine.Rserve.RserveException: serverSource failed, request status: access denied (local to the server)
Posso avviare il Rserve con uno specifico .Rprofile
?
EDIT:
Fondamentalmente, ci cucitura da tre metodi possibili:
- e la sorgente /home/rserve/.Rprofile file .R. Ma questo li distingue ogni volta che chiamo
new RConnection()
- Passando i comandi sorgente direttamente a R all'avvio di Rserve (non so come farlo).
- Il mio metodo preferito: farlo dal lato client usando serverSource(), che genera queste eccezioni di "accesso negato".
EDIT2:
Rserve versione v0.6-8 (338)
R versione 2.15.2 per x86_64-pc-linux-gnu.
Grazie, ma riguardo a 'serverSource' entrambi i metodi che hai citato non funzionano: Avviare il demone con' R CMD Rserve --RS-enable-control --RS-conf ~/control/Rserve.conf' dà un avvertimento su avvio: "Avviso: opzione sconosciuta '--RS-enable-control'". Aggiungendo 'controllo abilita' a (il mio locale) Rserve.conf non dà alcun avviso ma poi ottengo ancora l'eccezione Java:" serverSource non riuscito, stato richiesta: accesso negato (locale al server) " – Beasterfield
Se' --RS-enable- control' non viene riconosciuto, quindi stai utilizzando il vecchio Rserve (probabilmente serie 0.x) che non lo supporta. Per quanto riguarda 'enable control' - si prega di eseguire la versione di debug per assicurarsi di aver impostato correttamente la configurazione in modo che mostrerà i flag che sono stati riconosciuti. Si noti inoltre che se si utilizza l'autenticazione utente è necessario specificare gli utenti a cui è consentito il rilascio di comandi di controllo (consultare i documenti). –
mi dispiace, ma mi ci è voluto del tempo per tornare a questo. Sì, avevi ragione, avevo installato la serie 0.x. Molte grazie, questo è stato molto utile. – Beasterfield