udemy Hadoop - Pig

Michael Kim·2022년 5월 15일
0

0. 들어가기 전에

이전 강의에서 Pig는 SQL Script 형식으로 작동하고, 데이터를 가공할 수 있다고 배웠던 기억이 있다. SQL Script 형식은 어떤 것이며, 데이터를 어떤 형태에서 어떤 형태로 가공할 수 있는 걸까?

1. Pig

Pig는 MapReduce 위에서 작동하며, SQL Script 형태로 간편하게 MapReduce를 조작할 수 있게 한다. SQL Script는 간단하게 SQL과 비슷하게 생긴 Pig만의 언어 'Pig Latin'로 짜여진 프로그래밍 언어 script라고 할 수 있겠다.

  • 다음은 강의에서 실습한 Pig Latin Script이다.

    ratings = LOAD '/user/maria_dev/ml-100k/u.data' AS (userID:int, movieID:int, rating:int, ratingTime:int);
    metadata = LOAD '/user/maria_dev/ml-100k/u.item' USING PigStorage('|')
        AS (movieID:int, movieTitle:chararray, releaseDate:chararray, videoRealese:chararray, imdblink:chararray);
    
    nameLookup = FOREACH metadata GENERATE movieID, movieTitle,
        ToUnixTime(ToDate(releaseDate, 'dd-MMM-yyyy')) AS releaseTime;
    
    ratingsByMovie = GROUP ratings BY movieID;
    avgRatings = FOREACH ratingsByMovie GENERATE group as movieID, AVG(ratings.rating) as avgRating;
    fiveStarMovies = FILTER avgRatings BY avgRating > 4.0;
    fiveStarsWithData = JOIN fiveStarMovies BY movieID, nameLookup BY movieID;
    oldestFiveStarMovies = ORDER fiveStarsWithData BY nameLookup::releaseTime;
    DUMP oldestFiveStarMovies;

코드를 조금만 읽어보자면, 영화 평점 데이터 테이블과 영화 메타 데이터 테이블을 불러오고, 원하는 형태로 가공 후 GROUP, JOIN을 통해 오래된 영화 중 높은 평점을 받은 영화를 띄울 수 있게 한다.

앞서 설명했다시피, 데이터를 불러와 변형하고 다시 재결합하는 과정이 MapReduce와 비슷하다. MapReduce에서는 코드를 사용해서 데이터를 가공했다면, Pig에서는 SQL과 유사한 언어를 이용하여 데이터를 가공할 수 있다.

그렇다면 어떤 환경에서 Pig를 사용할 수 있는 걸까? 강의에서는 Grunt 라는 명령 프롬프트와 Script형태, Ambari UI를 소개한다. Grunt를 이용하면 간단한 명령어를 한줄 한줄 실행할 수 있고, Script형태로 사용하게 되면 Crontab 스케쥴러와 함께 자동화 시킬 수 있다고 한다. 그리고 역시 Ambari에서도 Pig Script를 작성하고 실행하는 것 또한 가능하다.

Pig의 성능은 어떠할까? MapReduce 위에서 작동하는 것이기 때문에 MapReduce보다 느릴 것 같다고 생각했지만, 그리 많이 느리지 않다고 한다. 오히려 MapReduce가 아닌, TEZ 위에서 사용하게 되면 훨씬 더 빠르다고 한다. 참고로 TEZ는 MapReduce처럼 YARN 위에서 동작하는 방향성 비사이클 그래프다. Hive 또한 연동할 수 있다고 하니 참고하도록 해야겠다.

2. 강의 후기

사실 SQL은 알고 있지만, 실제 프로젝트에서 많이 사용해본 경험이 없어 나에게는 STREAMING Python을 통한 MapReduce 프로그래밍이 편할 것 같다. SQL이 훨씬 간편하다고 하지만, 어떠한 점이 간편한 것인지 좀 더 쓰다보면 알 수 있을 것 같다.

Pig와 비슷한 역할로 Hive도 있다고 들었다. 우리 나라 기업 대부분의 기술 스택 맵에서 Pig가 아닌 Hive를 볼 수 있었는데, 그 이유는 무엇일까? 다다음 강의 섹션에서 Hive + MySQL을 배우니, 강의를 듣고 나서 나중에 비교해보도록 해야겠다.

profile
정리하고 복습하고 일기도 쓰고

0개의 댓글