Apache Hive 설치 3 ( HIVE 테스트 )
HIVE 설치가 완료되었으므로 정상적으로 작동하는지 간단 실습을 진행해보도록 하겠습니다.
1. HIVE로 가져올 데이터 파일 확인
HIVE가 설치된 경로에서 테스트파일을 가져옵니다.
ls /(hive 경로)/examples/files
조회하게 되면 위 사진처럼 파일 리스트가 출력될 것 입니다.
2. HIVE 접속 및 table 생성
hive 명령어를 통해 hive로 접속합니다.
hive는 sql과 비슷한 hql 언어를 사용하여 테이블을 만듭니다.
먼저, events라는 table을 만들고 이 테이블에 우리가 필요한 파일을 넣을 것입니다.
create table events(key int, value string);
pokes라는 table을 만듭니다.
create table pokes(foo int,bar string);
invites라는 테이블을 만듭니다. 이 테이블은 partition을 사용합니다.
partition이란, 데이터를 넣을 때 part로 구분하기 위해 사용합니다. 주로 날짜로 많이 활용합니다.
create table invites(foo int, bar string) partitioned by(ds string);
테이블들이 잘 만들어졌는지 확인합니다.
그리고 한번 invites 테이블의 구조를 확인해보도록 하겠습니다.
3. pokes 테이블에 열 추가
pokes 테이블에 new_col이라는 열을 추가해보겠습니다.
그리고 잘 추가 되었는지 pokes 테이블을 살펴보겠습니다.
alter table pokes add columns(new_col int);
describe pokes;
4. pokes 테이블에 데이터 넣기
이번엔 hive example에 있는 kv1.txt 파일을 pokes 테이블에 넣어보겠습니다.
load data local inpath '/(hive 설치 경로)/examples/files/kv1.txt' overwrite into table pokes;
위와 같이 결과가 나왔으면 load data 성공입니다.
load data가 성공했다면 pokes 테이블을 hive에서 출력해보겠습니다.
select * from pokes limit 10;
위 조회 결과와 같이 데이터가 잘 삽입 되었습니다.
5. invites 테이블에 데이터 넣기
pokes 테이블의 과정과 똑같이 invites 테이블에도 데이터를 넣어보도록 하겠습니다.
이번엔 kv2.txt와 kv3.txt 두 파일 모두 넣어보겠습니다.
kv2.txt 파일 넣기
load data local inpath '/(hive 설치 경로)/examples/files/kv2.txt' overwrite into table invites partition(ds='2008-08-15');
partition 테이블 이기 때문에 날짜를 지정하여 데이터를 삽입하겠습니다.
kv3.txt 파일 넣기
load data local inpath '/(hive 설치 경로)/examples/files/kv3.txt' overwrite into table invites partition(ds='2008-08-08');
partition 테이블 invites를 출력해보겠습니다.
select * from invites limit 20;
6. HDFS 시스템에 작업 저장
partition 을 기준으로 2008-08-15와 2008-08-08 부분을 Hadoop HDFS 시스템에 저장해보겠습니다.
데이터들을 bar로 분류하고, 분류한 그룹의 평균을 foo 값으로 나타냅니다. foo값은 결과치 값입니다.
2008-08-15 분류데이터
insert overwrite directory 'output/' select bar, avg(foo) from invites where ds='2008-08-15' group by bar;
- 2008-08-15 데이터는 Hadoop의 output/ 경로의 HDFS파일로 저장하겠습니다.
2008-08-08 분류데이터
insert overwrite local directory '/tmp/local_out' select bar, avg(foo) from invites where ds='2008-08-08' group by bar;
- 2008-08-08 데이터는 로컬의 /tmp/local_out 경로에 저장하겠습니다.
7. 저장한 데이터 출력
hive 상태에서 exit;를 입력하고 hadoop 계정으로 돌아와서 실행합니다.
먼저 로컬의 /tmp/local_out 경로에 저장한 2008-08-08 데이터를 출력해보겠습니다.
head /tmp/local_out/000000_0
head는 결과물 상단 10개를 출력합니다.
이 결과는 hive 저장초기 이름명인 000000_0 으로 저장됩니다.
다음으로 HDFS에 저장된 2008-08-15 데이터를 출력해보겠습니다.
hdfs dfs -tail output/000000_0