Apache Hive
Apache Hive 개요
Apache hive는 MapReduce 기반의 High-level abstraction이다.
- HiveQL은 SQL-like 언어를 사용한다.
- Hadoop 클러스터에서 MapReduce 잡을 생성한다.
- Facebook 에서 데이터 웨어하우스를 위해 개발되었다.(현재는 오픈소스인 Apache 프로젝트)
Why Hive?
-MapReduce를 직접 작성하는 것 보다 좀 더 생산적이다.(Java로 100라인 작성하는 것 5라인 HiveQL로 구현 가능)
-폭 넓은 사용자에게 대용량 데이터를 분석할 수 있는 기회를 제공한다. (소프트웨어 개발 경험이 필요 없음, 기존 SQL 지식을 가진 사용자가 사용 가능)
-다른 시스템과의 상호 운용성을 제공한다.(Java나 외부 Scripts를 통해 확장 가능, 많은 Business Intelligence(BI) 툴들이 Hive를 지원함)
어떻게 Hive에서 데이터를 Load, Store 하는가?

Hive load에는 크게 두 가지 방법이 있다.
local --> HDFS --> Hive
local ---------------> Hive
Hive는 데이터 포멧과 위치를 가지고 있는 metastore를 가지고 있는다. 질의문 자체는 HDFS에 저장되어 있는 데이터에게 질의한다.
Hive shell 사용법

아래는 command line 으로 Hive에 접근하는 방법이다.

이후 저번에 배웠던 SQL명령어를 이용할 수 있다.

이후 accounting database 안에 어떤 table 들이 있는지 알고 싶다면 아래 명령어를 이용하면 된다.
hive> USE accounting;
hive> SHOW TABLES;
이 두 명령을 한 번에 하고 싶다면 아래처럼 합치면 된다.
hive> SHOW TABLES IN accounting;
table의 기본 구조를 보고싶다면 DESCRIBE 명령을 이용한다.

database를 생성하기 위해서는 CREATE 명령을 이용한다.
hive> CREATE DATABASE dualcore;
dualcore라는 데이터베이스를 생성하는 명령이다.
hive> CREATE DATABASE IF NOT EXISTS dualcore;
만약 dualcore라는 데이터베이스가 없다면 생성하는 명령이다. dualcore가 있다면 생성되지 않는다.
다음으로 database가 생성되었다면 그 안에 있는 table을 만들어 본다.

실제 jobs라는 이름을 가진 table을 생성하는 예제를 본다.

jobs table은 ,로 구분된 형태의 4개 fields를 가지고 있다.