Trino 14

[Trino/Hive] 파티션 저장된 S3 데이터 쿼리

개요 2023.03.30 - [Trino/Hive] AWS S3 쿼리하기에서 Hive-connector를 이용해 S3 데이터를 Trino로 쿼리 하는 방법을 정리했다. 이번 글에서는 아래와 같은 구조로 저장된 S3 데이터를 Trino로 쿼리 하되, 데이터 조회 속도 개선을 위해 테이블 파티션을 사용하고자 한다. s3://text_bucket/data/page_views/year=2023/month=12/day=10/1.parquet s3://text_bucket/data/page_views/year=2023/month=12/day=11/1.parquet s3://text_bucket/data/page_views/year=2023/month=12/day=12/1.parquet s3://text_bucket..

Trino 2024.01.22

[Trino/Hive] AWS S3 쿼리하기

개요 2023.03.02 - [Trino] 설치/구성/실행 2023.03.19 - [Ubuntu/Hadoop] Single Node/Standalone 설치 2023.03.22 - [Hive] Metastore 설치 및 실행 2023.03.29 - [Trino] Hive Connector 추가 최근 위와 같은 글들을 작성했는데, 이 글에서는 Hive Connector를 이용해 Trino로 S3에 저장된 데이터를 쿼리하고 싶다. 간단히 말해 Trino를 AWS Athena처럼 쓰고 싶다. 설정 방법을 정리해둔다. 1. 필요한 소프트웨어는 모두 설치되어 동작하고 있다고 가정한다. 2. 이 글에서는 Trino와 Hive Connector로 S3에 연결하는 방법 위주로 적어둔다. HMS에 AWS 라이브러리 추가..

Trino 2023.03.30

[Trino] Hive Connector 추가

개요 2023.03.27 - [Trino] Hive Connector에서 Trino의 Hive 커넥터에 대한 개념을 정리해 보았다. 이 글에서는 구성 방법을 정리해두려고 한다. 요구 사항 Trino Hive 커넥터를 사용하기 위해서는 아래와 같은 사항이 필요하다. Apache Hadoop HDFS 2.x 또는 3.X HMS(Hive Metastore) 또는 AWS Glue data catalog와 같은 HMS 구현 : Coordinator와 Worker는 HMS 및 스토리지 시스템에 접근할 수 있어야 한다. 필요하다면 아래의 글을 참고하여 구성한다. 2023.03.19 - [Ubuntu/Hadoop] Single Node/Standalone 설치 2023.03.23 - [Hive] Metastore 설치..

Trino 2023.03.29

[Trino] Hive Connector

Hive Connector Apache Hive 데이터 웨어하우스에 저장된 데이터 쿼리를 쿼리 할 수 있다. Trino에서 Hive 런타임 없이 Hive에 의해 지정된 규칙에 따라 객체 스토리지에서 데이터를 읽기 위해 사용한다. Trino는 Hadoop, Spark 또는 Hive 인프라에서 느린 쿼리 처리 속도를 피하기 위해 사용하기 때문에 Hive Connector가 있다는 게 혼란스러울 수 있는데, 관련해서 정리된 공식 문서를 요약해 둔다. Hive 구조 Hive 커넥터를 이해하기 위해서는 Hive 구조와 구성 요소를 알아야 한다. Runtime : HiveQL을 파일 시스템에 저장된 파일에서 실행하는 MapReduce 작업으로 변환하는 쿼리 엔진 로직을 포함한다. Storage : 다양한 형식과 인..

Trino 2023.03.27

[Trino/MySQL] - Table does not exist 에러 해결

현상 아래와 같이 MySQL 커넥터를 이용해 Trino에 카탈로그를 생성하고 데이터가 정상적으로 인식되는지 확인해 보았다. # $TRINO_HOME/etc/catalog/.properties connector.name=mysql connection-url=jdbc:mysql://: connection-user= connection-password= 카탈로그, 스키마, 테이블 목록까지 전부 정상적으로 인식되었는데, 테이블 내에 있는 데이터를 조회하면 아래와 같이 테이블을 찾을 수 없다는 에러가 발생했다. 접속 정보 및 권한 확인 서버에서 Trino가 아니라 MySQL Client를 이용해 카탈로그 생성에 이용한 MySQL 접속 정보를 점검한다. 접속 mysql -h -P -u -p # 예시 mysql -h..

Trino 2023.03.24

[Trino] 쿼리 실행 모델 - 2

개요 2023.03.09 - [Trino] 쿼리 실행 모델 - 1에 이어 쿼리 실행과 관련된 개념을 마저 정리한다. Split Task는 큰 데이터 세트의 부분인 Split에서 동작한다. 분산 쿼리 계획의 가장 낮은 단계인 stage는 커넥터에서 split을 통해 데이터를 검색하고, 분산 쿼리 계획의 더 높은 단게인 중간 stage는 다른 stage에서 데이터를 검색한다. Trino가 쿼리를 스케쥴링할 때, coordinator는 커넥터에 테이블을 사용할 수 있는 모든 split 목록을 쿼리 한다. Driver Task는 하나 이상의 병렬 드라이버를 포함한다. 드라이버는 데이터에 따라 동작하고 operator를 결합해 출력을 생성한다. 생성된 출력은 task에 의해 집계된 다음 다른 stage에서 다른 ..

Trino 2023.03.10

[Trino] 쿼리 실행 모델 - 1

개요 Trino에서 쿼리 실행과 관련된 개념을 정리해 둔다. 구문(Statement) ANSI SQL 표준으로 정의된 구문. 절(clause), 표현식(expression), 조건자(predicate)로 구성된다. Trino는 ANSI 호환 SQL 구문을 실행하며, 구문이 실행되면 Trino Worker에 배포되는 쿼리 플랜에 따라 쿼리를 생성한다. Query Trino는 구문(Statement)을 쿼리로 변환하고 분산 쿼리 계획을 생성한다. 분산 쿼리 계획은 Trino 워커에서 동작하는 상호 연결된 stage로 구현된다. 구문(Statement)이 Trino에게 전달되는 SQL 텍스트라면 쿼리는 구문을 실행하기 위해 인스턴스화된 구성과 구성 요소라고 할 수 있다. 쿼리는 stage, task, spli..

Trino 2023.03.09

[Trino] Data Sources

개요 Trino가 데이터를 다룰 때 사용하는 개념에 대해 정리한다. Connector 데이터베이스 드라이버와 유사하게 Trino를 Hive나 관계형 데이터베이스에 맞게 조정한다. 즉, 데이터 소스에 접근할 수 있는 인터페이스이다. Trino의 SPI(Service Provider Interface)를 구현한 것으로 표준 API를 사용해 리소스와 상호작용할 수 있도록 한다. Trinn은 여러 내장 커넥터를 포함하고 있어 다양한 데이터 소스의 데이터에 접근할 수 있다. Catalog Connector를 사용하여 Catalog 속성 파일로 구성된 데이터 소스 테이블 모음을 제공하는 하나 이상의 스키마가 포함되어 있다. Trino에서 SQL을 실행하는 것은 하나 이상의 카탈로그에 대해 SQL을 실행하는 것이다...

Trino 2023.03.08

[Trino] 서버 유형

Trino 클러스터 Trino 클러스터는 Coordinator와 여러 대의 Worker로 구성된다. 사용자 또는 클라이언트는 Coordinator와 연결하고, Coordinator은 Worker와 함께 동작하며 Catalog에서 구성된 데이터 소스에 접근한다. 이 글에서는 Coordinator와 Worker에 대한 개념을 정리해둔다. Coordinator 구문 분석, 쿼리 계획 및 Trino worker node 관리를 담당하는 서버 클러스터라면 하나씩 존재하는 마스터 서버에 해당한다. 클라이언트가 실행할 구문을 제출하기 위해 접속하는 노드이다. 모든 Trino에는 하나 이상의 Worker와 Coordinator가 존재해야 하며, 개발 또는 테스트 환경에서는 단일 인스턴스가 두 역할을 모두 수행하도록 구..

Trino 2023.03.07

[Trino] example-http 커넥터 연결

example-http 커넥터 example-http connector는 http를 통해 쉼표로 구분된 데이터, 즉 CSV 파일을 읽을 때 사용할 수 있다. CSV 데이터가 많은 경우, example-http를 이용해 쿼리를 작성하고 처리할 수 있다. 커넥터의 소스는 trino-example-http 디렉터리에 위치해 있다. 이 글에서는 example-http 커넥터를 이용해 예시 데이터를 로드해보려고 한다. 예시 데이터 데이터 URL : https://github.com/trinodb/trino/tree/master/plugin/trino-example-http/src/test/resources/example-data 예시 데이터가 있는 Github 디렉터리로 이동하면 여러 개의 CSV 파일과 exam..

Trino 2023.03.06
1 2