Hive Tables 이해하기
- hive에서 names 테이블 생성
create table names (id int, name string) ROW
FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;
- 터미널 쉘에서 names.txt 파일 생성
0 Rich
1 Barry
2 George
3 Ulf
4 Danielle
5 Tom
6 manish
7 Brian
8 Mark
- hadoop fs -put names.txt /warehouse/tablespace/managed/hive/names/ 로 저장
- 기존에는 비어있던 names 테이블이 (왜인지 모르게 데이터가 깨지긴 하지만) names.txt에 넣은 값이(개수가 같긴 하니까..) 들어감을 볼 수 있음.
- drop table names;
- 터미널에서 hadoop fs -ls /warehouse/tablespace/managed/hive/names 를 실행해 보면 아래 그림처럼 해당 names안에 있어야 할 names.txt(데이터 값들) 도 사라졌음을 볼 수 있음.
- 내부 테이블로 생성하였기에 테이블 삭제시에 HDFS에도 데이터가 삭제된다.
외부 테이블 실습
- 하둡에 names.txt 파일 넣어주기
hadoop fs -put names.txt /user/root
hadoop fs -ls /user/root
hadoop fs -mkdir hivedemo /user/root
- 외부 테이블 생성
create external table names (id int, name string) ROW
FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE LOCATION '/user/root/hivedemo';
- Hortonworks의 경우 위 명령으로 테이블을 생성하면 권한 에러가 발생한다.
- /user/root/hivedemo 디렉토리 권한이 root에게 있어 hive 사용자가 접근할 수 있도록 터미널에서 권한 수정하는 명령어가 필요하다.
- hadoop fs -chmod 777 /user/root/hivedemo
- 외부 테이블 생성 명령어를 다시 입력하면 정상 생성된다.
테이블로 데이터 불러오기
- 테이블 만들어놓고 쭉 데이터 밀어넣을때 넣으려는 txt 파일이 테이블과 동일한 구조로 만들어져 있어야 함
- names.txt 파일과 /user/root도 권한 부여가 필요함
hadoop fs -chmod 777 /user/root/
hadoop fs -chmod 777 /user/root/names.txt
- 데이터 불러오기 명령어
load data inpath '/user/root/names.txt' into table names;
- select 문으로 찍어보면 잘 들어가..는 것 같.. 흠..
- 왜 그러는지 이유를 발견을 못해서 넘아가겠습니다. externaml을 이해하는 게 목적이니까요...
- 터미널에서 hadoop fs -ls /user/root/hivedemo로 데이터를 확인해 보면 names.txt가 잘 존재 함을 볼 수 있습니다.
- 이제 hive로 이동하여 table을 삭제한 후 확인해보면 table이 지워짐을 볼 수 있습니다.
dropt table names;
show tables;
- 다시 터미널에서 hadoop fs -ls /user/root/hivedemo 로 데이터를 확인해보면 names.txt가 존재하여 table은 지워져도 데이터는 남는 것을 볼 수 있습니다.
'빅데이터 관리 > Hadoop' 카테고리의 다른 글
Spark 설치 (0) | 2023.05.19 |
---|---|
SPARK 이론 (1) | 2023.05.19 |
Hive - 1 (0) | 2023.05.16 |
PIG 기본명령어 - 6 (0) | 2023.05.16 |
PIG 기본 명령어 - 5 (1) | 2023.05.16 |