프로그래밍 언어/java
데이터를 미리 로드하고 Rserve 실행
당장하자
2024. 8. 20. 23:38
내용
Rserve 환경과 Rscript, Rstudio 환경과의 차이 발생에 따른 문제가 발생했다.
코드의 결과가 다른 문제였는데 조사과정에서 어떤 매개변수에서 특정 데이터가 출력되지 않는 것을 알게되었고 데이터 로드가 잘 안되지 않을까? 하는 의문을 갖게 되었다.
→ Rserve 환경에서 필요한 데이터를 미리 로드해두고 추후 함수만 호출해서 사용하고 싶다..
해결과정
- 메모리 크기가 문제가 아닐까 생각해서 Rserve의 메모리 설정을 알아보았으나 따로 적절한 정보를 얻지 못했다. (추후 알아보니 Rserve의 메모리 설정은 R 버전이 발전하면서 사라졌다고 한다.)
- 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)
배운 점
- Rserve를 실행할 때 미리 필요한 R 코드를 실행해두고 R 클라이언트에서는 필요한 함수만 호출해서 안정성을 높일 수 있다. → Spring 서버가 시작될 때, PostConstruct 메서드에서 에러가 발생할 가능성이 줄어들어 독립성도 증가하게 되었다.
아쉬운 점
아직 Rserve의 환경에서 connection.eval("source('path/to/my_code.R')") 가 실행되지 않는 이유를 찾지 못했는데 이제는 Rserve의 데이터 로드문제도 발생했다.
이 이유도 찾지못하고 해결방법만 알고 넘어가서 아쉽다.