프로그래밍 언어/java

데이터를 미리 로드하고 Rserve 실행

당장하자 2024. 8. 20. 23:38

내용

Rserve 환경과 Rscript, Rstudio 환경과의 차이 발생에 따른 문제가 발생했다.

코드의 결과가 다른 문제였는데 조사과정에서 어떤 매개변수에서 특정 데이터가 출력되지 않는 것을 알게되었고 데이터 로드가 잘 안되지 않을까? 하는 의문을 갖게 되었다.

→ Rserve 환경에서 필요한 데이터를 미리 로드해두고 추후 함수만 호출해서 사용하고 싶다..

해결과정

  1. 메모리 크기가 문제가 아닐까 생각해서 Rserve의 메모리 설정을 알아보았으나 따로 적절한 정보를 얻지 못했다. (추후 알아보니 Rserve의 메모리 설정은 R 버전이 발전하면서 사라졌다고 한다.)
  2. Rstudio등 R을 실행하는 환경과 Rserve의 환경이 다르다면 Rserve를 실행할 때 미리 데이터를 로드해두고 R 서버를 시작하는 방법이었다. Rserve() 함수와 run.Rserve()의 차이가 있다. Rserve()는 새로운 세션을 생성해서 Rserve를 실행한다. 반면 run.Rserve()는 현재 세션으로 Rserve를 실행한다.
load_data("C:/Users/mong3/Desktop/temp2/data/")
run.Rserve(port = 6311, auth=FALSE)

배운 점

  1. Rserve를 실행할 때 미리 필요한 R 코드를 실행해두고 R 클라이언트에서는 필요한 함수만 호출해서 안정성을 높일 수 있다. → Spring 서버가 시작될 때, PostConstruct 메서드에서 에러가 발생할 가능성이 줄어들어 독립성도 증가하게 되었다.

아쉬운 점

아직 Rserve의 환경에서 connection.eval("source('path/to/my_code.R')") 가 실행되지 않는 이유를 찾지 못했는데 이제는 Rserve의 데이터 로드문제도 발생했다.

이 이유도 찾지못하고 해결방법만 알고 넘어가서 아쉽다.