HIVE 작동방식

김형수·2022년 12월 16일
0

Hadoop

목록 보기
6/11

Shcema on Read

  • 관계형 데이터베이스에서는 Schema on Write 개념을 사용한다.
    - 데이터베이스에 데이터를 입력하기전에 스키마를 정의.

    • 데이터를 디스크에 저장할 때 이 스키마대로 시행.
  • Hive는 구조화되지 않은 데이터를 가져와서 읽는 순간에 스키마를 적용한다.
    - ex) 데이터는 탭으로 구분된 텍스트 파일이지만 실제로 구조화되지는 않은 상태

    • 데이터가 뭘 나타내는지에 대한 정보가 없다. 하지만 Hive는 그 구조화되지 않은 데이터와 연관된 실제 스키마 데이터인 메타스토어를 가지고 있음.
    • 텍스트 파일을 어떻게 해석할지 알려준다.
CREATE TABLE ratings (
	userID INT,
    movieID INT,
    rating INT,
    time INT)
ROW FORMAT DELIMETED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE

LOAD DATA LOCAL INPAHT '<PATH the data file>'
OVERWRITE INTO TABLE ratings
  • 'CREATE TABLE ratings'라는 명령어를 입력하고 다양한 필드 이름과 유형을 지정.
  • 데이터가 디스크에 어떻게 구조화되는지 지정.
  • 행은 탭 구분 기호로 나눠져 있고 텍스트 파일로 저장.

Hive는 구조화된 관계형 데이터베이스를 만드는 게 아님. 클러스터에 있는 기존의 데이터를 읽을 때 스키마를 적용하는 것. 'LOAD DATA' 명령어를 사용하면 데이터를 분산 파일 시스템에서 Hive로 가져오고 그 데이터에 대한 소유권을 갖고 관리한다.

Managed TABLE vs External TABLE

  • 누가 데이터를 소유하고 삭제하는가의 차이.
  • Managed TABLE
    - Hive로 가져온 데이터는 Hive의 소유가 되는 것.
    • 'DROP TABLE' 명령어를 사용하면 그 데이터는 삭제.
  • External TABLE
    - External TABLE의 의미는 Hive가 소유권을 갖지 않는다는 겁
    - Hive 외부의 다른 시스템과 공유해야 할 때.
    • 'CREATE EXTERNAL TABLE'로 사용가능.
    • 이 데이터에 Hive를 사용하지만 소유하지는 않는다고 하는 것.
    • 'DROP'하면 메타데이터만 버리고 이 데이터는 삭제되지 않음.

Partitioning

  • 만약 대용량 데이터 세트 중의 일정 부분에만 쿼리한다면 최적화하는데 파티션이 중요한 역할을 함.
CREATE TABLE customers(
	name STRING,
    address STRUCT<street:STRING, city:STRING, state:STRING, zip:INT>)

PARTITIONED BY (country STRING);
  • customers 데이터베이스 안에 name, address속성이 있음.
  • PARTITIONED BY (country STRING);
    - country를 하나의 열로 취급.
  • 전체 데이터베이스를 검색하지 않아도 되니 많은 시간을 절약할 수 있음.

STRUCT

  • 'address'를 보면 'street:STRING'과'city:STRING','state:STRING', 'zip:INT'를 포함.
    - Hive 데이터베이스에 구조화 데이터를 저장할 수 있음.

0개의 댓글