Trino 0.80 릴리스 노트

Trino 0.80 릴리스 노트

Trino 0.80 릴리스 노트입니다. 이번 릴리스에서는 새 Hive ORC 리더, 빅 쿼리 지원, 메타데이터 전용 쿼리 최적화 등이 포함돼 있어요.

출처: 문서

본문

새 Hive ORC 리더

새 ORC 리더 구현을 추가했어요. 새 리더는 벡터화된 읽기, 지연 로딩, 조건자 푸시다운을 지원하며, 이 모두가 리더를 더 효율적으로 만들고 일반적으로 쿼리의 벽시계(wall clock) 시간을 줄여요. 새 리더는 광범위하게 테스트됐지만 Apache Hive ORC 리더의 대규모 재작성이라 잠재적 문제가 있을 수 있어요. 문제가 보이면 <hive-catalog>.optimized_reader_enabled 세션 속성을 설정해 쿼리별로 새 리더를 비활성화하거나, Hive 카탈로그 속성 hive.optimized-reader.enabled=false를 설정해 기본적으로 리더를 비활성화할 수 있어요.

Hive

  • Hive S3 파일 시스템의 최대 재시도 시간을 hive.s3.max-retry-time을 설정해 구성할 수 있어요.
  • null 키(즉 __HIVE_DEFAULT_PARTITION__)에 대한 Hive 파티션 프루닝을 수정했어요.

Cassandra

  • Cassandra 드라이버를 2.1.0으로 업데이트했어요.
  • Cassandra TIMESTAMP 타입을 Presto TIMESTAMP 타입에 매핑했어요.

"빅 쿼리" 지원

"빅" 쿼리에 대한 실험적 지원을 추가했어요. 이는 다음 속성으로 제어되는 별도의 큐를 제공해요:

  • experimental.max-concurrent-big-queries
  • experimental.max-queued-big-queries

experimental_big_query 세션 속성으로 제출된 쿼리에 대한 별도 구성 옵션이 있어요:

  • experimental.big-query-initial-hash-partitions
  • experimental.big-query-max-task-memory

이 속성으로 제출된 쿼리는 모든 조인에 해시 분포를 사용해요.

메타데이터 전용 쿼리 최적화 (Metadata-only query optimization)

입력의 카디널리티에 영향을 받지 않는 집계 쿼리(예: max(), min(), DISTINCT 집계)를 테이블 메타데이터에 대해 실행하도록 다시 작성하는 최적화를 지원해요.

예를 들어 key, key1, key2가 파티션 키라면 다음 쿼리가 이점을 얻어요:

SELECT min(key), max(key) FROM t;

SELECT DISTINCT key FROM t;

SELECT count(DISTINCT key) FROM t;

SELECT count(DISTINCT key + 5) FROM t;

SELECT count(DISTINCT key) FROM (SELECT key FROM t ORDER BY 1 LIMIT 10);

SELECT key1, count(DISTINCT key2) FROM t GROUP BY 1;

이 최적화는 기본적으로 꺼져 있어요. 켜려면 코디네이터 구성 속성에 optimizer.optimize-metadata-queries=true를 추가하세요.

경고: 커넥터가 파티션에 데이터가 없다는 것을 허용하면 이 최적화로 인해 쿼리가 잘못된 결과를 낼 수 있어요. 예를 들어 Hive 웨어하우스에 데이터가 없는 파티션이 있다면 Hive 커넥터는 잘못된 결과를 낼 수 있어요.

일반 (General)

  • 암시적 조인을 지원해요. 다음 문법이 이제 허용돼요:
SELECT * FROM a, b WHERE a.id = b.id;
  • 작업에 대한 상세 통계 수집을 활성화하는 task.verbose-stats 속성을 추가했어요. 기본값은 false예요.
  • CLI에서 바이너리 데이터를 hex 덤프로 포맷하도록 했어요.
  • 근사 숫자 히스토그램 함수 numeric_histogram()를 추가했어요.
  • array_sort() 함수를 추가했어요.
  • map_keys()map_values() 함수를 추가했어요.
  • row_number()을 완전히 스트리밍 방식으로 만들었어요.
  • 집계의 부분 단계 메모리 한도를 구성하는 task.max-partial-aggregation-memory 속성을 추가했어요.
  • 출력이 사용되지 않은 UNNEST 연산이 있는 쿼리를 처리할 때 예외를 수정했어요.
  • 쿼리가 완전히 스케줄링된 후에만 UI에서 쿼리 진행 상황을 표시하도록 했어요.
  • 코디네이터 UI에 쿼리 실행 시각화를 추가했어요. 쿼리 상세 페이지에서 접근할 수 있어요.

더 알아보기 (Learn more)

Trino 0.80의 변경 사항을 더 자세히 확인하고 싶다면 공식 릴리스 노트를 참고해 주세요.