[Hive] R로 Hive에 접속해서 데이터 추출하기, R DB connect (R, Hive dbConnect) : rJava, RJDBC, dbConnect(), dbGetQuery(), R로 PostgreSQL 사용하는 방법, R로 MySQL 접속해서 사용하는 방법
Hive 2016. 9. 3. 16:38
이번 포스팅에서는 R로 Hive에 바로 접속(dbConnect)해서 바로 Hive 내의 데이터를 추출해서 R의 데이터 프레임으로 만드는 방법에 대해서 소개하겠습니다.
dbConnect 를 사용하지 않을 때와 사용할 때를 비교해보면 아무래도 dbConnect를 하는 것이 편합니다.
그리고 혹시 R로 Hive table의 데이터를 사용해서 자동화하는 프로그램을 짰다고 할 경우 관리 측면에서도 직접 Hive에 연동해서 batch job 실행시키는 것이 관리 측면에서도 용이합니다.
-------------------------------------------
[ R 따로, Hive 따로 사용할 경우 Hive에서 데이터 추출 및 R에서 사용하기 절차]
1) Hive 로 데이터 처리/추출하여 text file, 또는 csv file 로 내리기
=> 2) R 에서 read.table() 혹은 read.csv() 함수로 데이터 불러오기
-------------------------------------------
vs.
-------------------------------------------
[ R로 Hive에 dbConnect 할 경우 Hive에서 데이터 추출 및 R에서 사용하기 절차 ]
1) R에서 Hive Query로 직접 데이터 처리하여 R로 바로 data.frame으로 내리기 (끝!)
(별도로 불러오기 필요 없음!)
-------------------------------------------
대신에 사용환경 설정해주는게 처음에 좀 번거로운게 있습니다. ^^;
한번 고생하고 나중에 두고 두고 편할 거냐, 아니면 당장의 수고스러움을 피하고 조금 불편한거 감수할거냐의 선택인데요, 이왕 이번 글 읽기 시작하셨으니 아래 설명 참고해서 R로 Hive 접근할 수 있는 환경 세팅해보심이 어떨런지요.
차근차근 설명해보겠습니다.
(1) Java 최신 버전 설치하기
R로 Hive 연동해서 쓸 때 Java를 사용하므로 먼저 Java를 설치해야 합니다. 이미 Java를 설치했다고 하더라도 최신 버전이 아니면 에러가 나더라구요.
Java 설치 확인하는 방법은 cmd 창에서 아래 처럼 'where /R C:\ java.exe' 라고 입력했는데 '정보 : 제공된 패턴에 해당되는 파일을 찾지 못했습니다'라는 메시지가 뜨면 설치가 안되어 있는 겁니다.
설치를 하려면 아래의 링크된 주소로 접속해서 Java SE download 를 합니다.
http://www.oracle.com/technetwork/java/javase/downloads/index.html
아래 그림이 화면에 나오면 Java DOWNLOAD 이미지 클릭하세요.
그러면 아래의 화면이 나오는데요, 각자의 OS, bit 체계 확인해서 본인의 것에 맞는거 다운로드 하시면 됩니다. (참고로, 저는 window7 OS 64bix 운영체제에 R x64 3.3.1 version 사용하고 있습니다. )
중간에 ( ) Accept License Agreement 에 체크하고 다운로드 받으세요.
[참고 : Windows 운영체제 확인하는 방법]
(방법 1) 제어판 > 시스템 선택
(방법 20) 시작메뉴 오른쪽의) 컴퓨터 > (마우스 오른쪽 누르고) 속성 선택
하면 아래의 화면 나옵니다.
jdk-8u101-windows-x64.exe 파일을 다운로드 완료하였다면 클릭해서 설치해주세요.
(계속'Next' 누르시면 됩니다)
C:\Program Files\Java\jre1.8.0_101 폴더에 Java가 설치되었을 겁니다.
cmd 창에서 확인해보니 잘 설치가 되었군요.
(2) 메모리 늘리기(increase heap size of rJava) : options(java.parameters = "-Xmx8g")
Java는 virtual machine을 사용하므로, 만약 메모리가 부족하면 'java.lang.OutOfMemoryError: Java heap space' 에러 메시지가 뜹니다.
R에서는 default memory setting 값이 512 MB 입니다. Hive에서 512 MB 넘는 파일 추출하기라도 하면 에러납니다. 메모리 문제를 피하기 위해서 아래처럼 options(java.parameters = "-Xmx4g" 라는 명령문으로 메모리를 4G 까지 쓸 수 있도록 설정해보겠습니다.
(만약 컴퓨터의 메모리가 빠방하다면 options(java.parameters = "-Xmx8g" 로 해서 8G 로 설정할 수도 있습니다)
|
(3) rJava, RJDBC 패키지 설치 및 로딩 (rJava, RJDBC RJDBC package installation and loading)
RJDBC가 rJava에 의존적이므로 반드시 library(rJava)를 실행한 후에 library(RJDBC) 순서로 로딩을 해야 합니다.
> # rJava, RJDDB package installation and loading > install.packages("rJava") trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.3/rJava_0.9-8.zip' Content type 'application/zip' length 713501 bytes (696 KB) downloaded 696 KB package ‘rJava’ successfully unpacked and MD5 sums checked The downloaded binary packages are in C:\Users\Administrator\AppData\Local\Temp\Rtmpc9SiL3\downloaded_packages
> library(DBI)
|
(4) R에 Hive Class Path, Dirver, dbConnect 설정
Hive/Hadoop Class Path, dbConnect 설정은 하둡 엔지니어에게 물어서 사용하시기 바랍니다.
(아래는 그냥 예시임...)
# setting class path hive.class.path = list.files(path=c("/usr/lib/hive/lib"), pattern="jar", full.names=T);
# setting driver drv <- JDBC("org.apache.hive.jdbc.HiveDriver")
# setting dbConnect : driver, ip, port, userID, password conn <- dbConnect(drv, "jdbc:hive2://xxx/xxx", "userID", "password")
|
(* 주의 : dbConnect 할 때요, Hive 설치된 것이 jdbc:hive인지 jdbc:hive2 인지 확인해서 사용하세요.)
(5) R에서 Hive Query 날리기 : dbGetQuery()
# Hive Query db_qry <- dbGetQuery(conn,
db_qry # query result
|
이렇게 R에서 Hive로 Query를 날리면 R에 데이터 프레임(data.frame) 이 생성됩니다.
[참고] hive 2.0.1 설치 및 metastore 설정 => http://www.gooper.com/ss/bigdata/271507
참고로, RPostgreSQL package를 사용해서 R로 PostgreSQL 사용하는 방법도 아래에 소개합니다.
# installation and loading RPostgreSQL package install.packages("RPostgreSQL")
# setting Driver : dbDriver() drv <- dbDriver("PostgreSQL")
# setting dbConnect
# DB SQL Query r_sql <- c("SELECT var1, sum(var2) as sum_var2
sql_result <- dbGetQuery(con, r_sql)
sql_result # query result
dbDisconnect(conn = con)
|
RMySQL package를 사용해서 R로 MySQL 접속해서 사용하는 방법은 아래와 같습니다.
위의 RPostgreSQL과 비슷해요.
# install and loading RMySQL package install.packages("RMySQL")
# setting dbDriver, dbConnect() drv <- dbDriver("MySQL") con <- dbConnect(drv,
# MySQL query : dbGetQuery r_sql <- c("SELECT var1, sum(var2) as sum_var2
# disconnect MySQL DB : dbDisconnect() dbDisconnect(conn = con)
|
이번 포스팅이 도움이 되었다면 아래의 '공감 ~♡'를 꾸욱 눌러주세요.