욱이의 냉철한 공부

[Hadoop, Pig] 빅데이터 Pig로 만져보기 - R시각화 본문

데이터엔지니어링/빅데이터 : Hadoop

[Hadoop, Pig] 빅데이터 Pig로 만져보기 - R시각화

냉철한 욱 2021. 6. 22. 03:07

 

 

* 앞 서 확인 할 것

1. 먼저 하둡명령어 파악하기

하둡 대표 명령어 - OS명렁어(unix명령어)하고 비슷한 shell 명령어

- hadoop fs -help : 하둡 fs에서 제공하는 명령어 확인

- hadoop fs -ls : 지정된 폴더나 파일 정보를 출력, 권한정보, 소유자, 생성일자, 바이트 수 확인

- hadoop fs -lsr : 현재 폴더 및 하위 디렉토리 정보까지 출력

- hadoop fs -du : 지정된 폴더나 파일에 사용량을 확인하는 명령어

- hadoop fs -dus : du는 폴더와 파일별 용량 / dus는 전체 합계 용량

- hadoop fs cat : 지정된 파일의 내용을 출력. 텍스트 파일만 출력

- hadoop fs -mkdir : 지정된 경로에 폴더를 생성, 이미 존재하면 error

- hadoop fs -put [운영체제폴더파일][HDFS] : 지정된 운영체제 폴더나 파일을 HDFS에 복사

- hadoop fs -get [HDFS][운영체제폴더파일] : HDFS에 저장된 파일이나 폴더를 OS로 이동

- hadoop fs -rmr : 지정한 파일이나 폴더를 삭제

- hadoop fs -sts : 지정된 경로의 통계 정보 출력

- hadoop fs -expunge : 휴지통비우기, HDFS는 삭제한 파일을 일정기간동안 보관함

 

2. Pig 이해하기

https://warm-uk.tistory.com/62

 

3. Pig 설치 과정

=> 추후에 포스팅 하겠습니다.


 

1. start-all.sh

- 하둡세상으로 접속한다.

- 앞으로 하둡프로그램에 접속하였을 때 하둡세상이라고 지칭하겠다.

 

2. jps

- 하둡세상을 가동하기 위한 환경이 잘 설정되어있는지 확인한다.

 

 

3. mkdir pigdata

- 운영체제 홈에 pigdata라는 폴더를 만든다.

- 이곳에 pig로 처리한 데이터 파일을 보관할 것이다.

 

 

4. cd pigdata

wget http://files.grouplens.org/datasets/movielens/ml-1m.zip

- 해당 데이터를 제공하는 사이트에 접속하여 데이터를 pigdata 폴더에 다운 받는다.

 

5. unzip ml-1m.zip

- 다운받은 압축된 파일 ml-1m이 있다. 압축을 푼다.

 

6. cd ml-1m

ls -l *.dat

- dat 타입 파일이 있는지 확인한다.

- movies.dat, ratings.dat, user.dat 파일이 있다는 것을 확인 할 수 있다.

 

7. head movies.dat

- 각자 데이터 파일들을 확인해 본다.

- movies.dat는 영화ID, 영화 제목, 장르 등 데이터를 가지고 있다.

- ratings.dat는 관객ID, 영화ID, 등급, 시간 등 데이터를 가지고 있다.

- users.dat는 관객ID, 성별, 나이, 직업, 코드번호 등 데이터를 가지고 있다.

 

8. sed s/::/,/q movies.dat > movies1.dat

sed s/::/,/q ratings.dat > ratings1.dat

sed s/::/,/q users.dat > users1.dat

- 구분자 ::를 ,로 바꾸었다.

 

 

9. 바꾼 것을 확인 할 수 있다.

 

10. hadoop fs -mkdir /movie_pig_data

- 하둡세상의 홈에 movie_pig_data라는 폴더를 만든다.

 

 

11. hadoop fs -put /home/user1/pigdata/ml-1m/*.dat /movie_pig_data

- 운영체제 홈의 pigdata/ml-1m폴더 안의 모든 데이터를 하둡세상 movie_pig_data에 복사한다.

- 결론적으로 movies.dat, ratings.dat, users.dat, movies1.dat, ratings1.dat, users1.dat가 복사한다.

 

12. hadoop fs -ls /movie_pig_data

- 하둡세상 홈에 있는 movie_pig_data 폴더 안을 확인해본다.

 

=> 인터넷으로도 확인 할 수 있다.

- localhost:50070로 접속하면 된다.

 

13. Pig 설치 후 Pig를 입력하여 Pig에 접속한다.

 

14. A = LOAD '/movie_pig_data/movies1.dat' USING pigstorage(',') AS(a1:int, a2:chararray, a3:chararray);

- 하둡세상 홈의 movie_pig_data폴더에 있는 movies1.dat 데이터들을 pig 세상 A에 복사 즉 LOAD 한다.

 

15. B = LOAD '/movie_pig_data/ratings1.dat' USING pigstorage(',') AS(a1:int, a2:int, a3:int);

- 하둡세상 홈의 movie_pig_data폴더에 있는 user1.dat 데이터들을 pig 세상 B에 복사 즉 LOAD 한다.

 

16. C = JOIN A BY a1, B BY b2;

- A의 a1과 B의 b2를 대상으로 JOIN한다. 이 과정과 결과를 C에 저장한다.

 

17. D = FOREACH C GENERATE $1, $5;

- 새로 만들어진 C에서 2번째, 6번째 열만 가져온다.

 

E = GROUP D by $0;

- 1번째 열 기준으로 그룹화 한다.

 

F = FOREACH E GENERATE $0, COUNT(D);

- 1번째 열 기준으로 숫자를 카운트 한다. 즉 등급을 매긴 관객 숫자를 카운트 한다.

 

STORE F INTO '/pig_output' USING pigstorage(',');

- 결과 F를 하둡세상의 pig_output 폴더에 저장한다.

 

18. Pig세상에서 성공적으로 MapReduce 작업을 마친 과정이다.

 

 

 

19. hadoop fs -ls /pig_output

- 하둡세상의 홈에서 /pig_output 폴더에 어떤 폴더들과 파일들이 있는지 확인한다.

- 앞서 Pig에서 MapReduce한 part-r-00000이 있다는 것을 확인 할 수 있다.

 

20. hadopo fs -cat /pig_output/p* | head

- p로 시작하는 파일 즉 part-r-00000의 앞부분만 확인 할 수 있다.

 

21. hadoop fs -get /pig_output/p* /home/user1/newmovie.txt

- 하둡세상에 있는 HDFS파일인 part-r-00000을 운영체제의 홈에 newmovie.txt명으로 복제시킨다.

 

22. head newmovie.txt

- 운영체제의 홈으로 잘 옮겨졌는지 확인한다.


 

* R에서 시각화 하기

 

23. R세상으로 접속한다.

24. txt<-read.csv("newmovie.txt",header=FALSE,sep=",")

- 운영체제 홈에 있는 Pig에서 MapReduce를 실행한 결과 newmovie.txt 파일을 R세상으로 불러옵니다.

 

25. colnames(txt)<-c("title","rating")

- 불러온 데이터프레임 txt의 열이름을 title과 rating으로 변경한다.

 

26. newtxt<-txt[order(txt$rating,decreasing=TRUE),c(1,2)]

- txt 데이터프레임에서 rating기준으로 내림차순으로 정렬하고 1, 2번째 열만 newtxt에 저장한다.

 

27. newtxt<-head(newtxt,10)

- 10행만 새롭게 저장한다.

 

28. pie(newtxt$rating, labels=newtxt$title, main="good movie 10")

- 파이그래프로 표현하기 위해 pie를 사용한다.

- labels인자는 영화 제목명을 표현하기 위해서이다.