Parquet
이 문서는 Doris의 Parquet 파일 형식 읽기 및 쓰기 지원을 소개합니다. 다음 기능에 적용됩니다:
- Catalog에서 데이터 읽기 및 쓰기.
- Table Valued Functions를 사용한 데이터 읽기.
- Broker Load를 사용한 데이터 읽기.
- Export 중 데이터 쓰기.
- Outfile을 사용한 데이터 쓰기.
지원되는 압축 형식
- uncompressed
- snappy
- lz4
- zstd
- gzip
- lzo
- brotli
매개변수
타임스탬프 및 날짜 호환성 (4.1.5부터)
4.1.5부터 Parquet 파일을 읽고 쓸 때 현지 시각(wall-clock time)과 특정 시점(instant)의 구분이 유지됩니다. 시간대가 없는 논리 타임스탬프는 DATETIME에 매핑되며, isAdjustedToUTC=true인 논리 타임스탬프는 TIMESTAMPTZ에 매핑됩니다. Catalog 호환성 속성을 사용하거나 파일 TVF에서 enable_mapping_timestamp_tz=false를 설정해도 후자의 매핑을 DATETIME으로 되돌릴 수 없습니다.
Parquet INT96에는 시간대 어노테이션이 없으며, DATETIME(6)으로 추론됩니다. Hive Catalog와 파일 TVF에서는 선택적 속성인 hive.parquet.time-zone을 사용하여 INT96 작성 시 사용된 시간대를 지정할 수 있습니다. 기본값은 빈 문자열이며, 이 경우 현지 시각이 그대로 유지됩니다. IANA 시간대 또는 -12:00부터 +14:00까지의 UTC 오프셋을 사용하세요. UTC와 GMT는 허용되지만, CST와 PRC 같은 짧은 별칭은 허용되지 않습니다. 작성 시 사용된 시간대를 알고 있는 경우에만 설정하세요. 예를 들어 "hive.parquet.time-zone" = "Asia/Shanghai"로 설정할 수 있습니다.
4.1.5부터 Outfile과 Export에서 enable_int96_timestamps의 기본값은 false이며, 논리 INT64 타임스탬프를 기록합니다. INT96이 필요한 데이터 소비자에 대해서만 이 값을 true로 설정하세요. Hive 테이블에 쓸 때는 다른 호환성 방식을 사용합니다. Hive Catalog를 참조하세요.
이전 Doris 인코딩으로 작성되었으며 0000-01-01부터 0000-02-28까지의 값을 포함하는 DATE 파일은 작성 도구에 맞게 마이그레이션해야 합니다. Reader만 업그레이드해서는 이러한 파일을 복구할 수 없습니다. 연도가 영인 DATE 파일 마이그레이션을 참조하세요.
세션 변수
-
enable_parquet_lazy_mat(2.1+, 3.0+)Parquet Reader에서 지연 구체화를 활성화할지 제어합니다. 기본값은 true입니다.
-
hive_parquet_use_column_names(2.1.6+, 3.0.3+)Hive 테이블에서 Parquet 데이터 타입을 읽을 때 Doris는 기본적으로 Hive 테이블의 컬럼과 이름이 같은 Parquet 파일의 컬럼에서 데이터를 읽습니다. 이 변수를
false로 설정하면 Doris는 컬럼 이름과 관계없이 Hive 테이블의 컬럼 순서를 기준으로 Parquet 파일에서 데이터를 읽습니다. 이는 Hive의parquet.column.index.access변수와 유사합니다. 이 매개변수는 최상위 컬럼 이름에만 적용되며 Struct 내부의 컬럼에는 영향을 주지 않습니다.
BE 구성
-
parquet_metadata_size_limit(4.1.5부터)네이티브 Parquet V2 Reader에서 허용하는 직렬화된 footer 메타데이터의 최대 크기입니다. 기본값은
268435456바이트(256 MiB)이며,0보다 커야 하고 동적 업데이트를 지원합니다. 이 제한은 Page Header 제한과 별개입니다. 제한을 초과하면Parquet v2 footer size ... exceeds metadata limit ...오류가 반환됩니다. BE 구성을 참조하세요. -
enable_parquet_page_index(2.1.5+, 3.0+)Parquet Reader에서 Page Index를 사용하여 데이터를 필터링할지 결정합니다. Page Index가 간혹 데이터를 잘못 필터링하는 경우에 대비한 디버깅 전용 설정입니다. 기본값은 false입니다.
-
parquet_header_max_size_mb(2.1+, 3.0+)Parquet Page 헤더를 읽을 때 할당되는 버퍼의 최대 크기입니다. 기본값은 1M입니다.
-
parquet_rowgroup_max_buffer_mb(2.1+, 3.0+)Parquet Row Group을 읽을 때 할당되는 버퍼의 최대 크기입니다. 기본값은 128M입니다.
-
parquet_column_max_buffer_mb(2.1+, 3.0+)Parquet Row Group 내의 컬럼을 읽을 때 할당되는 버퍼의 최대 크기입니다. 기본값은 8M입니다.