카테고리 없음

R에서 트위터 크롤링, 하둡 연동

라미로 2018. 5. 15. 16:57

0. 사전작업

1) 트위터를 연동하기 위한 사전준비작업은

http://stat-and-news-by-daragon9.tistory.com/105  이 블로그를 참고했다.

 

2) R과 하둡을 연동하기 위한 클라이언트를 설치해야하는데,

https://github.com/RevolutionAnalytics/RHadoop/wiki/Downloads RHadoop 이라는 프로젝트있으니 설치하면 된다.

문제는, 요것을 윈도우즈의 r studio 에서 설치를 하다가 실패를 해서, 그냥 수집서버인 리눅스를 이용하기로..

 

R 자체는 yum 으로 한번에 다운로드받았다. 하기위해 epel-release 를 사전에 설치해야 yum repo가 잡히는것은 주의.

 

R studio 를 설치하려했으나, glibc 버전이 맞지 않아 스킵.
정신건강상 2.6 이하 커널이라면 업데이트하려하지말고, 3.0 이상 커널을 구하는것을 추천한다.

3) 필요한 패키지를 설치한다. ( R 콘솔에서 실행 )

install.packages("twitteR");  

그다음 rhdfs에서 필요한 rJava를 설치해야하는데,


콘솔 밖에서 R CMD javareconf 를 한번 호출해주고

install.packages("rJava"); 를 실행하자

 

그 다음은 rhdfs인데 패키지를 수동으로 받아야한다.
wget https://github.com/RevolutionAnalytics/rhdfs/blob/master/build/R?raw=true

그리고 사전에, HADOOP_CMD가 환경변수로 잡혀있지 않다면,

export HADOOP_CMD=/root/hadoop-2.7.6 처럼 하둡 클라이언트 경로를 잡아준다.

그리고 나서,  R CMD INSTALL rhdfs_1.0.8.tar.gz 를 실행하면 패키지가 설치가 된다.

 

1. 연동

library("twitteR")
library("base64enc")
library("rhdfs")


consumerKey = "자신 코드 입력";
consumerSecret = "자신 코드 입력";
accessToken =  "자신 코드 입력";
accessTokenSecret =  "자신 코드 입력";

setup_twitter_oauth(consumerKey, consumerSecret, accessToken, accessTokenSecret)


# 오늘날짜의 트윗을 불러와서 저장한다.
now = Sys.Date()
keyword = enc2utf8("뮤지컬 양도");
dt =  searchTwitteR(keyword, n=100, lang="ko" , since = toString(now));

hdfs.init();
hf = hdfs.file(paste("mus_" , toString(now), ".csv"   , sep=""),"w");
               

for( d in dt ){
  hdfs.write( paste(d[[".->text"]] , d[[".->created"]]) , hf )
}

hf.close(hf);

 

 

 

 

2. 확인

확인을 해보면 데이터는 잘 들어가있다.

여기서 나오는 hadoop fs -get 명령은, 하둡 클러스터에 분산저장되어있는 파일을 로컬파일로 이동하는것이다.

 

 

 

3. 그 다음은

- 이 크롤링으로 무엇을 할 수 있을까? 데이터를 아무리 수집해봤자 사람이 분석하는건 큰 의미가 없다.
또한, 트위터의 글은 증분해서 저장하는게 아니라, 저 코드대로면 중복데이터가 가득하기때문에 다른 처리 방법이 들어가야한다.
스팸과 의미없는 트윗의 구분도 필요하다.

최종적으로는, 분석이나 학습을 위한 데이터로 변환을 해야한다.
뮤지컬 양도라는 키워드 자체는 양도 알림 정도로밖에 사용할 수 없지만, 다음 포스팅에는 데이터셋으로 가공할수있는 키워드로
데이터 가공법을 진행할 예정이다.