직장에서 하둡(hadoop)을 사용할 수 있게 됐습니다. 일반적으로 하둡과 R, 파이썬 등이 갖추어진 환경을 빅데이터 시스템이라고 부르는데요. Tool이 바뀌는 것은 별일 아니라고 하지만 처음에는 사용하기 어색하고 불편한 것 또한 사실입니다. 오늘은 R에서 spark table과 data table 다루는 방법에 대해서 알아보겠습니다.

 


R도 어색한데, R에는 데이터 타입별로 가능한 명령어들이 다릅니다. 예전에 하둡 강의를 들을 때 하둡은 디스크 기반의 분산 처리 환경이다 보니 속도가 메모리 기반의 spark보다는 떨어집니다.


R에서 spark를 이용해 데이터를 불러오면 spark table형태(tbl_spark)로 저장됩니다. 그리고 이 상태에서 어느 정도 가공을 한 후에는 data.table로 변환합니다. data.table로 변환하면 R의 메모리로 올리는 것이 됩니다. data.table은 data.frame보다 빠른 데이터 타입입니다.

 

spark table도 속도가 빠르고, data.table로 변환하는 과정에서 시간도 걸리기 때문에 가급적 spark table로 작업하고 싶지만 제약이 많습니다. 예를 들어 ggplot이 안 된다든가 에러가 날 때 에러 메시지가 java code로 출력돼서 무슨 말인지 알기가 어렵습니다. 심지어 어떤 경우에는 data.table로 작업하면 에러가 없는 것도, spark table로 작업 시 에러가 발생합니다.

 


그렇다고 모든 spark table을 data.table로 변환할 수 있는 것도 아닙니다. R의 메모리는 spark에서 사용하는 것보다 용량이 적기 때문에 데이터 크기를 어느 정도 줄여서 R메모리로 넘겨야 합니다. 결국 spark table과 data.table을 모두 다룰 줄 알아야 합니다.

둘 다 dplyr이 적용되는 점은 좋지만, R도 잘 모르는 상황에서 2개의 데이터 타입을 dplyr로만 다루는 것은 한계가 있습니다. 그래서 일단 데이터 가공할 때 필요한 명령들을 tbl_spark와 data.table 2개에 적용되는 구분으로 정리해 보기로 했습니다. 이렇게 해서 사용하다 보면 익숙해지거나 다른 방법을 찾을 수 있지 않을까 합니다.

 


- R에서 tbl_spark와 data.table 처리하기

내 용 tbl_spark data.table
행수 세기 sdf_nrow(data) nrow(data)
칼럼명 보기 colnames(data)  
특정열보기 sdf_read_column(data,"column_name) data$column_name,
data[,column_name,]
구조보기 sdf_schema(data) 2회 
 변수명 바꾸기 dplyrt에서 mutate("x"="y")   
 변수 타입 변경    
merge sdf_bind_cols(data1,data2,) merge(x, y, by.x, by.y,  all.x=TRUE_ 
변수 제거   [,(변수명:=NULL)] 
left join left_join(x,y,by="id")-에러남   
마지막 행 보기  sdf_last_index(data,id="id")   
null값제거   data[is.na(column_name)==0,
 그래프 그리기 dbplot  ggplot 
 테이블 그리기 sdf_pivot(data,x~y,col_name.aggreate="count")   
 샘플추출 sdf_sample(data,fraction=0.5,replacement=0, seed=2018)   
hive에 table쓰기  rhive.write.table  rhive.write.table 
히스토그램 그리기  hist(data$column_name)  

 

 

작업을 하면서 필요한 것을 하나씩 채워가다 보니 곳곳에 빈 곳들도 눈에 띕니다. 이는 앞으로 작업을 하면서 하나씩 채워갈 수 있지 않을까 합니다.

'R-통계분석' 카테고리의 다른 글

R dplyr 함수 및 사용방법  (0) 2023.01.03
R data.table 패키지 사용법  (0) 2022.12.28
R Studio 단축키 BEST3!  (0) 2022.10.21
R 스튜디오 버전 선택 및 설치 방법  (0) 2022.07.25
R 설치하는 방법은?!  (0) 2022.06.16
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기