Pig와 hive의 차이
Clunix Wiki
- hive와 pig의 활용도의 차이점
1.1.hive
*hive는 하둡 data base(하둡 메타데이터를 저장)에 쿼리를 사용하여 접근합니다. 자바를 신경쓰지 않아도 된다는 장점이 있습니다.
***db를 사용한다는 측면에서 보다 정형화된 data를 생성하고 관리할 수 있다는 장점이 있는 것 같습니다.
***다만 간단한 mr 작업을 수행할 경우 pig가 더욱 쉽게 쓸 수 있어 보입니다. pig는 load, store만 쓰면 어렵지 않게 데이터를 읽어올 수 있으며 또한 filter, join같은 강력한 쿼리문도 지원하기 때문입니다. 다만 pig는 sql과 비슷하게 만들어졌을 뿐 pig로 sql지식을 활용하기는 어려워 한계가 있으며 sql을 활용할 생각이면 hive가 더 좋다고 생각됩니다.
2) pig
- pig는 mapreduce api를 단순화 시켰고 sql과 유사하게 만들어서 사용하기 쉽다는 장점이 있습니다. 다만, 높은 수준의 UDF(User Define Function)를 만들기 위해선 자바에 능숙해야합니다.
- pig는 LoadFunc UDF와 StoreFunc UDF로 하둡의 파일 시스템에 접근하고 쓸 수 있습니다. 다만 pig는 hive와 같이 결과물을 db처럼 관리하기는 어려운 것 같습니다.
3) hive와 pig의 활용도의 차이점 - hive는 sql을 활용한다는 면에서 hdfs를 db처럼 쓰고 싶을 때 쓰는 것 같습니다. 결국 결과물로 나온 data를 지속적으로 관리하고 싶을 때 hive를 쓰라는 것 같습니다.
- pig는 단순함과 어렵지 않다는 이유로 결과물을 빨리 만들어 쓰라는데 목적이 있는 것 같습니다.
- hive가 pig를 대체할 가능성
결론은 hive가 pig를 대체할 수 있으며 더 많은 기능과 가능성을 가지고 있다고 생각합니다.
hive는 하둡의 메타데이터를 db화 시켜 관리합니다. 그리고 하둡파일 시스템에도 접근할 수 있습니다. pig는 하둡파일 시스템에는 접근할 수 있지만 하둡의 메타데이터는 읽고 쓰기만 할 뿐 db처럼 관리하는 툴은 제공하지 않는 것 같습니다. 결국 hive는 pig와 같이 하둡파일 시스템과 메타데이터에 접근할 수 있을 뿐만 아니라 pig가 하지 못하는 메타데이터를 db처럼 관리한다는 점에서 pig보다 더 많은 일을 할 것 같습니다. 또한 pig는 기본적인 기능(load, store)은 사용하기 쉽지만 보다 높은 수준의 자료 검색이나 정형화된 data를 추출하는 기능은 hive가 더 좋은 것 같습니다. (자바함수 구현보다는 sql 쿼리 사용이 더 쉬울것 같습니다.) 그래서 hive를 쓰면 pig가 하는 일을 소화할 수 있을 뿐만 아니라 더 높은 수준의 기능(db관리 같은 기능)도 구현할 수 있어보입니다. 다만 pig가 쓰기 쉽다는 점은 hive가 따라오기 힘든 장점이며 앞으로 많은 사용자들이 pig를 활용할 것 같아서 pig도 묵혀두기에는 아까워보입니다.
HCatalog를 쓰면 hive와 pig를 연동할 수 있다고 하는데 그것도 알아보면 좋을 것 같습니다. (HCatalog는 하둡의 여러가지 tool(pig, hive등..)들간의 연동을 위해 만들어졌다고 합니다.)