카테고리 없음

[Trino] HiveConnector - S3 Glacier 객체 무시하기

비번변경 2024. 3. 27. 13:57

개요

Trino에 HiveConnector를 AWS S3 버킷에 저장된 데이터를 쿼리하고 있다. 근데 데이터 시각화 도구이자 Trino Client로 사용하고 있는 Superset에서 S3 버킷에 저장된 데이터를 쿼리 하면 아래와 같은 에러가 발생하고 있다.

읽으려고 하는 객체가 수명 주기 규칙에 의해 Glacier 스토리지 클래스에 저장되어 있어 발생한 에러인데, 

 

 

SQL 수정

가장 간단한 방법으로 쿼리문을 수정하여 데이터의 조회 범위를 제한하는 것이다.

예로 들어 이 글에서 사용하는 테이블은 날짜값인 date 컬럼으로 파티셔닝 되어 있고, 생성된 지 5개월이 된 객체는 Glacier 스토리지 클래스로 이동한다. 어차피 Glacier 객체는 읽기 작업이 불가능하기 때문에 쿼리를 통해 데이터의 조회 범위를 제한하는 방법을 고려할 수 있다.

 

 

Catalog 설정 변경

Trino 공식 문서를 확인해보면 Glacier 객체를 무시할 수 있도록 hive.s3.skip-glacier-objects 옵션을 제공하고 있다. 기본값은 false이다.

connector.name=hive
hive.metastore.uri=thrift://<HIVE_METASORE_SERVER>:9083
hive.s3.aws-access-key=액세스 키
hive.s3.aws-secret-key=시크릿 키
hive.s3.skip-glacier-objects=true

따라서 S3 관련 Catalog의 설정을 변경하고 Trino를 재시작한다.

 

이 글의 경우 AWS EKS에서 Helm으로 Trino를 설치해서 사용하고 있어 아래와 같이 처리했다.

helm upgrade --install --values values.yaml trino trino/trino --version 0.14.0

다만 Chart를 새로 배포해도 Pod가 재시작되지 않아 trino 포드를 직접 삭제하여 재시작하였다.

kubectl delete $(kubectl get pods -o name | grep trino)

 

재시작한 Trino 포드가 전부 Running 상태로 변경되면 쿼리가 정상적으로 수행되는지 확인한다.

 

 

참고 문서

https://trino.io/docs/current/connector/hive-s3.html

 

 

728x90