HiveQL과 Hive 데이터베이스
· Version : Hive
HiveQL은 Hive에서 사용하는 쿼리 언어이다. SQL과 유사하지만 SQL과 다르며 표준 ANSI SQL을 지원하지 않는다. 하이브는 로우(ROW) 레벨의 삽입과 변경, 삭제를 지원하지 않으며, 트랜잭션 또한 지원하지 않는다. 하지만 하둡이 지원하는 범위 안에서 성능 확장을 위해 다양한 기능을 제공하며, 사용자가 정의한 확장과 외부 프로그램을 하이브와 연동할 수도 있다.
하이브에서 데이터베이스 개념은 단지 테이블의 카탈로그 또는 네임스페이스이다. 데이터베이스는 논리적인 그룹을 구성할 수 있으며 대규모 작업시 동일한 테이블명의 충돌을 방지할수도 있다. 데이터베이스를 별도로 지정하지 않으면 기본 데이터베이스(default)를 사용한다. 아래 스크립트는 데이터베이스를 생성한다.
create database testdb;
create database if not exists testdb; |
하이브는 각 데이터베이스마다 별도의 디렉터리를 생성하고 테이블을 그 하위 디렉터리에 저장한다. 데이터베이스 디렉터리는 “hive.metastore.warehouse.dir” 속성에 설정한 최상위 디렉터리 밑에 생성된다. 아래 스크립트는 데이터베이스 생성시 디렉터리 위치를 변경할 수 있다.
create database testdb location '/user/data/testdb'; |
현재 생성되어 있는 데이터베이스의 디렉터리 경로를 확인하려면 describe 명령을 사용한다.
describe testdb; |
데이터베이스 삭제 명령은 drop 명령을 사용한다. 하이브는 가본적으로 테이블이 있는 데이터베이스를 삭제하는것을 허용하지 않는다. 테이블을 모두 삭제 후 데이터베이스를 삭제 또는 cascade 명령을 사용하여 테이블이 존재하는 데이터베이스를 삭제할 수 있다. 데이터베이스가 삭제되면 해당 디렉터리도 같이 삭제 된다.
drop database if exists testdb cascade; |
2020-06-16 / Sungwook Kang / http://sungwookkang.com
Hadoop, Big Data, 하둡, 빅데이터, 데이터분석, HDFS, 하둡 파일 시스템, Hive, 하이브, 하이브 데이터베이스, HiveQL, 하이브쿼리
'SW Engineering > Hadoop' 카테고리의 다른 글
HDFS 저장소에 데이터를 압축해서 저장하면 더 좋을까? (0) | 2020.06.23 |
---|---|
Hive 테이블 (0) | 2020.06.23 |
Hive 텍스트파일 인코딩 (0) | 2020.06.12 |
Impala Connection refuse Error (0) | 2020.06.12 |
Hive 데이터 타입 (0) | 2020.06.09 |