MA VPD Tech Blog.

R 활용 사용법(연동)1

December 17, 2019 | 1 Minute Read

##R 활용 - 사용법(연동)

작성 2019년 12월 17일 박영훈

1. Java에서 R사용


Java에서 R을 호출하기 위해서는 Java Library가 필요하다. 대표적인 Library는 다음과 같다.

rJava, JRI, RCaller

문제는 완벽하게 지원하지 않는다는 점이다.

웹페이지에서 R 분석 그래프를 동적으로 보여주기 위한 작업을 진행했으나

모든 참조자료에서는 R에서 그린 그래프등을 이미지화하여 보여주는게 제일 좋다고 한다.

2. Rserve를 통한 연동

데스크탑에 먼저 R이 설치가 되어 있어야한다.

블로그 R활용 - 설치를 참조하자.

먼저 Rserver를 설치해보자.

R Stutio 또는 R Console을 연다. 여기서는 R Studio로 해보자.

설치가 완료되면 Rserve와 연동을 위한 Java Library를 가져오자.

설치된 위치로 이동하면 다음과 같은 jar가 존재한다.

jar 파일을 Java 프로젝트에 추가한다.

연동을 하기 위해 R의 Rserve를 실행시킨다. 옵션은 상황에 따라 변경한다.

이제 Java에서 코드작성을 하여 R Script를 실행해보자.

'''
		RConnection connection = null;
        try {
            connection = new RConnection();
		    String vector = "c(1,2,3,4)";
	        connection.eval("meanVal=mean(" + vector + ")");
	        double mean = connection.eval("meanVal").asDouble();
	        System.out.println(mean);

	        REXP x = connection.eval("R.version.string");

	        System.out.println("R version : " + x.asString());

        } catch (Exception e) {
            // TODO: handle exception
            System.out.println(e);
        }
'''

아래 코드는 DB와 연동을 진행한 코드이다.

'''
try{

	    RConnection connection = new RConnection();
	    String vector = "c(1,2,3,4)";

        connection.parseAndEval("drv <- JDBC(driverClass=\"com.mysql.jdbc.Driver\", classPath=\"C:\\Users\\yhpark\\.m2\\repository\\mysql\\mysql-connector-java\\5.1.6\\mysql-connector-java-5.1.6.jar\")");

        connection.eval("conn <- dbConnect(drv, \"jdbc:mysql://192.168.1.95:3301/cctvAudit\", \"markany\" ,\"markany1@\")");

        connection.eval("query <- \"select * from audit_log_stats_vms_total limit 10\"");

        connection.eval("result <- dbGetQuery(conn, query)");

        connection.eval("barplot(result$LOG_COUNT, main ='barplot', col=rainbow(nrow(result)) , names.arg= result$LOG_ID, xlab=\"xlab\",ylab=\"count\")");
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		System.out.println(e.toString());
	} 
'''

3. rJava 연동

R Stutio 또는 R Console을 연다. 여기서는 R Studio로 해보자.

rJava를 설치한다.

rJava의 Jar를 Import한다. 경로는 다음과 같다.

설정을 다음과 같이 진행한다.

VM Arguments 항목에

-Djava.library.path=C:\Users\yhpark\Documents\R\win-library\3.6\rJava\jri\x64

Environment 항목에

LD_LIBRARY_PATH / C:\Program Files\R\R-3.6.2\bin;C:\Users\yhpark\Documents\R\win-library\3.6;

PATH / C:\Program Files\R\R-3.6.2\bin;C:\Users\yhpark\Documents\R\win-library\3.6\rJava\jri\x64;

R_HOME / C:\Program Files\R\R-3.6.2;C:\Users\yhpark\Documents\R\win-library\3.6\rJava\jri

'''
	Rengine re = new Rengine(new String[]{" --vanilla"}, false, null);
    re.eval("a <- 10");
    REXP X - re.eval("a");
    System.out.println(X);
'''

4. 결론

연동하여 R Script를 실행하는것이 제일 안정적이다.

Java -> Rserve를 통한 Script 실행 -> Script내에서 DB 접속 -> DB Update -> Java에서 변경, 적용된 데이타 사용



로고