2017-07-26 2 views
9

J'essaie d'exécuter ma requête en parallèle et j'obtiens une erreur 00001: Error in .jcheck() : No running JVM detected. Maybe .jinit() would help.. Les requêtes travaillent quand je les lance un par unrjdbc Requête parallèle avec parallélogramme

Mon script:

Je sais que ce n'est pas vraiment, mais je peux reproductible ne pas donner vous donner mon journal/pass :)

j'ai essayé de .jinit() et Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jdk1.8.0_102') dans l'esclave, il ne fonctionne pas

library(RJDBC) 
library(parallelemap) 

jdbcDriver <- JDBC(driverClass="oracle.jdbc.OracleDriver", classPath="ojdbc6.jar") 
jdbcConnection <- dbConnect(jdbcDriver, "jdbc:oracle:thin:@//mybase", "login", "pass") 

query_list<- list("SELECT * FROM table1", 
        "SELECT * FROM table2", 
        "SELECT * FROM table3", 
        "SELECT * FROM table4", 
        "SELECT * FROM table5") 


import_base_fonction <- function(query) {return(dbGetQuery(jdbcConnection , query))} 


parallelStartSocket(5) 

parallelLibrary("RJDBC","rJava") 
parallelExport("listquery_list","import_base_fonction" ,"jdbcConnection") 

mes_tables <- parallelMap(import_base_fonction,query_list) 

parallelStop() 

mes informations de la session

R version 3.4.1 (2017-06-30) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows Server >= 2012 x64 (build 9200) 

Matrix products: default 

locale: 
[1] LC_COLLATE=French_France.1252 LC_CTYPE=French_France.1252 LC_MONETARY=French_France.1252 LC_NUMERIC=C     LC_TIME=French_France.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] parallelMap_1.3  PhViD_1.0.8   MCMCpack_1.4-0  MASS_7.3-47   coda_0.19-1   LBE_1.44.0   dplyr_0.7.1   
[8] plyr_1.8.4   shiny_1.0.3   DT_0.2    shinydashboard_0.6.1 data.table_1.10.4 RJDBC_0.2-5   rJava_0.9-8   
[15] DBI_0.7    

loaded via a namespace (and not attached): 
[1] Rcpp_0.12.11  compiler_3.4.1  bindr_0.1   tools_3.4.1  digest_0.6.12  checkmate_1.8.3 tibble_1.3.3  lattice_0.20-35 
[9] pkgconfig_2.0.1 rlang_0.1.1  Matrix_1.2-10  parallel_3.4.1  SparseM_1.77  bindrcpp_0.2  htmlwidgets_0.9 MatrixModels_0.4-1 
[17] grid_3.4.1   glue_1.1.1   R6_2.2.2   magrittr_1.5  backports_1.1.0 BBmisc_1.11  htmltools_0.3.6 mcmc_0.9-5   
[25] assertthat_0.2.0 mime_0.5   xtable_1.8-2  httpuv_1.3.5  quantreg_5.33  

La base est sur le serveur Oracle 11.xx.

S'il vous plaît guider.

Répondre

0

Je pense que vous pouvez changer à import_base_fonction

import_base_fonction <- function(query) { 
    .jinit("ojdbc6.jar") 
    return(dbGetQuery(jdbcConnection , query)) 
} 
+0

bonjour avec ce que j'ai cette erreur: '00001: Erreur dans .jcall (conn @ jc, "Ljava/sql/Déclaration;", "createStatement") : RcallMethod: tentative d'appel d'une méthode d'un objet NULL. ' –

+0

@ s.brune Il semble que' jdbcConnection @ jc' soit nul lorsqu'il est appelé, peut-être qu'il a quelque chose à faire pour implémenter 'parallelExport'. – aristotll