-
PrestoSQL to Trino Migration 할 때 주의할 점Programming 2023. 12. 22. 23:07
prestoSQL to Trino라고는 하지만 prestoSQL은 사실 Trino로 리브랜딩되기 전의 이름이므로 Trino의 메이저 업데이트라고 봐도 무방하다.
이 포스팅에서는 트리노의 메이저 업데이트 할 때 신경써야할 점들을 모은 내용이다. 사실 메이저 업데이트를 진행한 것은 아주 오래전이고 구성한 인프라별, Trino에 설치한 플러그인별로 증상이 상이하며 지엽적인 내용이 될 가능성이 높다고 생각해서 그 당시 포스팅으로는 작성하지 않고 있었던 찰나에 그래도 부분적으로 나마 나와 동일한 증상을 겪고 있을 사람들을 위해 기록을 남긴다.메이저 업데이트를 하는 것보다 새로 설치하는 것이 낫다
항상 앞자리가 바뀌는 업데이트를 진행할 때마다 느끼는 생각이다. 업데이트를 진행하다보면 지금당장은 티가 안나더라도 어디선가 호환성이 안맞는 부분들이 생겨나고 그 호환성을 고쳐 나가보면 어느새 시간이 훌쩍 지나가 버린다. 그렇게 조금씩 마개조하고 뒤돌아보면 이럴꺼면 굳이 업데이트하는 것보다 다 날리고 새로 설치하는게 더 빨리 걸렸을 뻔 했다는 후회섞인 생각이다.
하지만 이미 새로 설치하기에 관련해서 얽힌 의존성들이 많아서 섣불리 리셋하기도 힘든 상황이다.
어쩔 수 없이 하나씩 맞물려있는 것들과 함께 수정해주자.superset이 1.x 버전대인 경우
FROM apache/superset:1.1.0 USER root RUN pip install sqlalchemy-trino USER superset
- superset 이미지 안에 sqlalchemy-trino를 설치해준다.
- 최신버전의 경우에는 이미 설치되어있음
- 연결시 기존
presto://
이 아닌trino://
로 연결Tableau 데스크탑 및 Dbeaver 등 JDBC 드라이버 변경 - https://trino.io/docs/current/client/jdbc.html
Tableau 데스크탑 및 DBeaver 등 JDBC 드라이버 변경
https://trino.io/docs/current/client/jdbc.html
- 기존 prestoSQL의 드라이버와 호환되지만 최신 드라이버를 사용하는 것을 권장
- 태블로 데스크탑 이용자
- Windows
C:\\Program Files\\Tableau\\Drivers
폴더 안에 위에 링크를 눌러 다운받은 jar파일을 위치
- Mac
/Users/<username>/Library/Tableau/Drivers
폴더 안에 링크를 눌러 다운받은 jar파일을 위치
- Windows
- DBeaver 이용자
- 기존과 커넥션 셋팅값은 동일하되 연결하는 데이터베이스만 Trino로 바꿔서 연결하면 자동으로 드라이버 다운로드가 진행
Hive connector(json-serde)
오류 코드:FAB9A2C5 Query failed (#20220120_055754_00024_sydpk): deserializer does not exist: org.openx.data.jsonserde.JsonSerDe 추출을 만들 수 없습니다.
- 태블로에서 발생하는 json 직렬화 문제 해결을 위해 json-serde jar파일을 build해서 hive폴더에 넣어준다.
https://docs.aws.amazon.com/ko_kr/athena/latest/ug/json-serde.html
https://github.com/rcongiu/Hive-JSON-Serde
https://github.com/trinodb/trino/issues/5602
hudi-bundle
- hudi에서 만든 테이블을 보기 위해서 필요한 번들 라이브러리 필요
COPY ./hudi-trino-bundle-0.11.0-SNAPSHOT.jar /usr/lib/trino/plugin/hive/
- 해당 라이브러리 jar파일을 hive 라이브러리 안에 위치
https://mvnrepository.com/artifact/org.apache.hudi/hudi-trino-bundle
헤더 값 변경
- 기존 헤더와 trino로 리브랜딩되면서 바뀐 헤더 값 문제
- 351부터 HTTP 클라이언트 프로토콜 헤더값이 Trino로 변경되었다. 나머지 클라이언트에서의 요청이 기존 버전에 맞춰져있다면 먼저 이 부분을 변경해주고 일시적인 용도로만 변경하자
protocol.v1.alternate-header-name=Presto
- 다른 클라이언트들도 버전을 맞춰줬다면 다시 해당 옵션을 지워준다.
https://trino.io/blog/2021/01/04/migrating-from-prestosql-to-trino.html
https://trino.io/docs/current/admin/properties-general.html#protocol-v1-alternate-header-name
'Programming' 카테고리의 다른 글
당신의 인덱스는 안녕하신가요?(커버링 인덱스) (0) 2024.03.31 SparkSQL에서 증분 테이블 처리하기 (0) 2024.02.25 kafka retention 용량 설정 값 이해하기 (0) 2023.05.01 ELT 툴 Airbyte 개요 및 M1 mac local환경 세팅 (0) 2022.04.13 dockerfile 한국어 로케일 설정(feat. 우분투와 데비안의 차이) (2) 2021.08.10 - superset 이미지 안에 sqlalchemy-trino를 설치해준다.