본문으로 건너뛰기

Data Catalog 유형

Data Catalog 기반 테이블의 파티션을 등록, 삭제, 동기화할 수 있는 프로시저 호출 방법을 설명합니다.

파티션 테이블 준비

파티션 칼럼을 포함한 테이블을 생성하고, 외부 S3 경로에 데이터를 저장할 수 있도록 설정합니다.
자세한 내용은 테이블 생성 가이드을 참고해 주세요.

빈 파티션 생성

메타스토어에만 존재하고 실제 데이터는 없는 빈 파티션을 생성합니다.

개요

CALL data_source_name.system.create_empty_partition(
schema_name => 'schema_name',
table_name => 'table_name',
partition_columns => ARRAY['partition_columns'],
partition_values => ARRAY['partition_values']);

파라미터

schema_name
  • 파티션을 생성할 데이터베이스 스키마 이름입니다.
table_name
  • 파티션을 추가할 테이블 이름입니다.
partition_columns
  • 파티션을 구성할 칼럼 목록을 배열로 지정합니다.
    파티션 테이블 생성 시 partitioned_by 에 지정했던 칼럼이어야 합니다.
partition_values
  • partition_columns 에 대응되는 각 파티션 칼럼의 값을 배열로 입력합니다.
    값의 순서와 갯수는 partition_columns 와 일치해야 합니다.

사용 예시

빈 파티션 생성 Example
CALL my_data_source.system.create_empty_partition( 
schema_name => 'tpch',
table_name => 'nation_test',
partition_columns => ARRAY['nationkey'],
partition_values => ARRAY['1']);

파티션 등록

S3에 존재하는 경로를 메타스토어에 특정 파티션으로 등록합니다.

개요

CALL data_source_name.system.register_partition(
schema_name => 'schema_name',
table_name => 'table_name',
partition_columns => ARRAY['partition_columns'],
partition_values => ARRAY['partition_values'],
[ location => '<S3 경로>' ]);

파라미터

[ location => 'S3 경로' ]
  • 파티션 데이터가 실제로 저장된 S3 경로를 지정합니다. 지정하지 않으면 기본 파티션 경로(테이블 위치 하위 경로)가 자동으로 지정됩니다.

사용 예시

파티션 등록 Example
CALL my_data_source.system.register_partition(
schema_name => 'tpch',
table_name => 'nation_test',
partition_columns => ARRAY['nationkey', 'regionkey'],
partition_values => ARRAY['3', '3'],
location => 's3a://test-bucket/tpch/nation_test/nationkey=3/regionkey=3');

파티션 삭제

메타스토어에서 지정한 파티션 정보를 삭제합니다. (S3의 데이터는 삭제되지 않습니다.)

개요

CALL data_source_name.system.unregister_partition(
schema_name => 'schema_name',
table_name => 'table_name',
partition_columns => ARRAY['partition_columns'],
partition_values => ARRAY['partition_values']);

사용 예시

파티션 삭제 Example
CALL my_data_source.system.unregister_partition(
schema_name => 'tpch',
table_name => 'nation_test',
partition_columns => ARRAY['nationkey', 'regionkey'],
partition_values => ARRAY['2', '2']);

파티션 동기화

S3 경로와 메타스토어의 파티션 정보를 비교하여 차이를 업데이트 합니다. (추가, 삭제, 또는 전체 동기화)

개요

CALL data_source_name.system.sync_partition_metadata(
schema_name => 'schema_name',
table_name => 'table_name',
mode => [ ADD | DROP | FULL ],
[ case_sensitive => [ TRUE | FALSE ] ]);

파라미터

MODE
  • 동기화 방식 지정 값으로서, 다음 중 하나를 선택할 수 있습니다.
    • ADD : S3에는 존재하고 메타스토어에는 존재하지 않는 파티션을 추가
    • DROP : S3에는 없고 메타스토어에는 존재하는 파티션을 삭제
    • FULL : ADD와 DROP 모두 동작
[ CASE_SENSITIVE ]
  • 디렉터리 및 파티션 이름 비교 시 대소문자를 구분할지 여부를 지정합니다.
    • TRUE : 기본 값으로서, 대소문자를 구분합니다.
    • FALSE : 대소문자 구분을 무시합니다.

사용 예시

파티션 동기화 Example
CALL my_data_source.system.sync_partition_metadata(
schema_name => 'tpch',
table_name => 'nation_test',
mode => 'FULL',
case_sensitive => true);

파티션 조회

테이블에 등록된 파티션 목록을 조회할 수 있는 내부 시스템 테이블을 조회합니다.

개요

SELECT * FROM "table_name$partitions";

사용 예시

파티션 조회 Example
SELECT * FROM "nation_test$partitions";

메타데이터 캐시 초기화

메타스토어에 저장된 테이블 또는 파티션의 캐시를 초기화하여 최신 메타데이터를 반영합니다.

개요

CALL data_source_name.system.flush_metadata_cache(
[ schema_name => 'schema_name' ],
[ table_name => 'table_name' ],
[ partition_columns => ARRAY['partition_columns'] ],
[ partition_values => ARRAY['partition_values'] ]);

사용 예시

-- 전체 메타데이터 캐시 초기화
CALL my_data_source.system.flush_metadata_cache();

-- 특정 테이블만 캐시 초기화
CALL my_data_source.system.flush_metadata_cache(
schema_name => 'tpch',
table_name => 'nation_test');

-- 특정 파티션만 캐시 초기화
CALL my_data_source.system.flush_metadata_cache(
schema_name => 'tpch',
table_name => 'nation_test',
partition_columns => ARRAY['nationkey', 'regionkey'],
partition_values => ARRAY['2', '2']);