IT용어위키


아파치 하이브 파티션

Apache Hive의 파티션(Partition)은 테이블을 특정 컬럼 값을 기준으로 나누어 저장하는 기능으로, 대규모 데이터를 효율적으로 관리하고 쿼리 성능을 최적화하는 데 사용된다.

개요

Hive에서 파티션은 테이블의 데이터를 특정 기준(예: 날짜, 지역 등)으로 구분하여 HDFS 디렉터리 구조로 저장하는 방식이다. 이를 통해 특정 파티션만 검색하여 성능을 향상시킬 수 있다.

  • 파티션 키(Partition Key) - 데이터를 분할하는 기준이 되는 컬럼.
  • 파티션 디렉터리 - HDFS 내에서 파티션 값별로 데이터가 저장되는 디렉터리.

파티션 테이블 생성

Hive에서 파티션을 사용하려면, 테이블을 생성할 때 PARTITIONED BY 절을 사용하여 지정해야 한다.

단일 컬럼 파티션

CREATE TABLE sales (
    order_id INT,
    amount DOUBLE
) PARTITIONED BY (year INT)
STORED AS PARQUET;
  • year 컬럼을 기준으로 데이터를 파티션별로 저장.
  • 데이터는 HDFS에 다음과 같은 구조로 저장됨.
/user/hive/warehouse/sales/
    ├── year=2022/
    │   ├── part-0000.snappy.parquet
    │   ├── part-0001.snappy.parquet
    │
    ├── year=2023/
    │   ├── part-0000.snappy.parquet
    │   ├── part-0001.snappy.parquet

다중 컬럼 파티션

CREATE TABLE sales_data (
    order_id INT,
    amount DOUBLE
) PARTITIONED BY (year INT, month STRING)
STORED AS ORC;
  • 데이터는 HDFS에 다음과 같은 디렉터리 구조로 저장됨.
/user/hive/warehouse/sales_data/
    ├── year=2022/
    │   ├── month=01/
    │   │   ├── part-0000.orc
    │   │   ├── part-0001.orc
    │   ├── month=02/
    │   │   ├── part-0000.orc
    │   │   ├── part-0001.orc
    │
    ├── year=2023/
    │   ├── month=01/
    │   │   ├── part-0000.orc
    │   │   ├── part-0001.orc

파티션 추가 및 데이터 삽입

Hive에서는 파티션을 명시적으로 추가해야 하며, 데이터를 삽입할 때 해당 파티션 값을 지정해야 한다.

파티션 추가

ALTER TABLE sales ADD PARTITION (year=2023) LOCATION '/data/sales/2023';

파티션에 데이터 삽입

INSERT INTO TABLE sales PARTITION (year=2023) VALUES (1, 100.50);

동적 파티션(Dynamic Partition)

Hive에서는 정적인 파티션(Static Partition) 외에도 동적 파티션(Dynamic Partition)을 지원한다. 이는 여러 개의 파티션을 한 번의 INSERT 쿼리로 생성할 때 사용된다.

동적 파티션 활성화

SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;

동적 파티션 삽입

INSERT INTO TABLE sales_data PARTITION (year, month)
SELECT order_id, amount, year, month FROM raw_sales;
  • 기존 테이블(raw_sales)에서 데이터를 읽어 자동으로 파티션을 생성하여 삽입.

파티션 데이터 조회

파티션을 사용하면 특정 데이터를 빠르게 조회할 수 있다.

SELECT * FROM sales WHERE year = 2023;
  • Hive는 파티션 프루닝(Partition Pruning)을 수행하여 year=2023 파티션만 검색하여 성능을 향상시킴.

파티션 삭제

특정 파티션을 삭제할 수도 있다.

ALTER TABLE sales DROP PARTITION (year=2023);
  • 해당 파티션에 있는 데이터도 함께 삭제됨.

파티션의 장점 및 단점

장점

  • 특정 파티션만 검색하여 쿼리 속도를 향상시킴.
  • HDFS에서 데이터를 논리적으로 분리하여 관리 가능.
  • 대용량 데이터셋을 효과적으로 분할하여 저장.

단점

  • 너무 많은 파티션을 생성하면 메타데이터 관리 부담 증가.
  • 작은 파일이 많아지면 HDFS의 성능 저하 가능.
  • 동적 파티션 사용 시 삽입 성능 저하 가능.

같이 보기


  출처: IT위키 (IT위키에서 최신 문서 보기)

  * 본 페이지는 IT Wiki에서 미러링된 페이지입니다. 일부 오류나 표현의 누락이 있을 수 있습니다. 원본 문서는 IT Wiki에서 확인하세요!