2016-04-08 17 views
0

Ich verwende SAP HANA zusammen mit R. Ich verwende die cSPADE-Implementierung in R und lade daher die Daten in eine temporäre Datei. Bis es soweit war, funktionierte es aber soweit, aber jetzt bekomme ich einen Fehler. Es scheint ein Problem mit der temporären Datei zu sein.HANA RLANG temporäre Datei kann die Verbindung nicht öffnen

Could not execute 'CALL "BETA_SYSTEM"."run"()' in 15.741 seconds . 
SAP DBTech JDBC: [2048]: column store error: [2048] "BETA_SYSTEM"."run": line 21 col 2 (at pos 821): [2048] (range 3): column store error: [2048] "BETA_SYSTEM"."beta.procedures::selectSpadeData": line 33 col 4 (at pos 992): [2048] (range 3): column store error: search table error: [34082] Execution of R script failed.;Error in file(file, ifelse(append, "a", "w")) : 
    cannot open the connection 
stack trace: 
2: file(file, ifelse(append, "a", "w")) 
1: write.table(spade_data, file = file, sep = " ", row.names = FALSE, 
     quote = FALSE, col.names = FALSE) 


CREATE PROCEDURE BETA_SYSTEM.spadeR ( 
    IN spade_data "SPADE_INPUT_T", 
    OUT result "SPADE_RESULT_T" 
) 
    LANGUAGE RLANG 
    AS       
BEGIN 
    library(Matrix) 
    library(arules) 
    library(arulesSequences) 
    file <- tempfile() 
    write.table(spade_data, file = file, sep = " ", row.names=FALSE, quote = FALSE, col.names=FALSE) 
    df_trans <- read_baskets(file, info=c("sequenceID", "eventID", "SIZE")) 
    as(df_trans, "data.frame") 
    err_res <- tryCatch({ 
    s_res <- cspade(df_trans, parameter = list(support = 0), control = list(verbose = TRUE)) 
    }, warning= function(war) { 

    }, error=function(err) { 

    }, finally={ 

    } 
) 
    if(length(err_res) == 0){ 
    result<-data.frame(sequence="EMPTY",support=0) 
    } else { 
    result <- as(s_res, "data.frame") 
    } 
END; 

Antwort

0

Der Fehler-Stack zeigt an, dass es ein Problem mit Zugriff auf die Datei. Dies geschieht in den von RSERV erzeugten R-Prozessen. Es ist also außerhalb von SAP HANA und ich würde vorschlagen zu überprüfen, ob der R-Prozess mit dem gleichen Arbeitsverzeichnis tatsächlich die Dateioperation ausführen kann.

Vielleicht ist das Dateisystem voll oder eine Zugangsberechtigung wurde geändert !?