Trino와 함께 Iceberg 클러스터 사용 - 아마존 EMR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Trino와 함께 Iceberg 클러스터 사용

Amazon EMR 버전 6.6.0부터 Iceberg를 트리노 클러스터와 함께 사용할 수 있습니다.

이 자습서에서는 Amazon EMR Trino AWS CLI 클러스터에서 Iceberg를 사용하여 작업합니다. 콘솔을 사용하여 Iceberg가 설치된 클러스터를 생성하려면 Amazon Athena, Amazon 및 Glue를 사용하여 아파치 아이스버그 데이터 레이크 구축의 단계를 따르십시오. EMR AWS

Iceberg 클러스터 생성

Amazon에서 Iceberg를 EMR AWS CLI와 함께 사용하려면 먼저 다음 단계에 따라 클러스터를 생성하십시오. 를 사용하여 빙산 분류를 지정하는 방법에 대한 자세한 내용은 또는 을 AWS CLI참조하십시오클러스터를 생성할 AWS CLI 때 를 사용하여 구성을 제공하십시오.. 클러스터를 생성할 SDK 때 Java를 사용하여 구성을 제공하십시오.

  1. iceberg.properties 파일을 생성하고 선택한 카탈로그의 값을 설정합니다. 예를 들어 Hive 메타스토어를 카탈로그로 사용하려면 파일에 다음과 같은 콘텐츠가 있어야 합니다.

    connector.name=iceberg hive.metastore.uri=thrift://localhost:9083

    AWS Glue Data Catalog를 스토어로 사용하려면 파일에 다음과 같은 콘텐츠가 있어야 합니다.

    connector.name=iceberg iceberg.catalog.type=glue
  2. 다음 예제와 같이 iceberg.properties를 Amazon S3에서 /etc/trino/conf/catalog/iceberg.properties로 복사하는 부트스트랩 작업을 생성합니다. 부트스트랩 작업에 대한 자세한 내용은 부트스트랩 작업을 생성하여 추가 소프트웨어 설치를 참조하세요.

    set -ex sudo aws s3 cp s3://DOC-EXAMPLE-BUCKET/iceberg.properties /etc/trino/conf/catalog/iceberg.properties
  3. 다음과 같은 구성으로 클러스터를 생성해 예제 부트스트랩 작업 스크립트 경로 및 키 이름을 사용자 정보로 대체합니다.

    aws emr create-cluster --release-label emr-6.7.0 \ --applications Name=Trino \ --region us-east-1 \ --name My_Trino_Iceberg_Cluster \ --bootstrap-actions '[{"Path":"s3://DOC-EXAMPLE-BUCKET","Name":"Add iceberg.properties"}]' \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=c3.4xlarge InstanceGroupType=CORE,InstanceCount=3,InstanceType=c3.4xlarge \ --use-default-roles \ --ec2-attributes KeyName=<key-name>

Iceberg용 Trino 세션 초기화

Trino 세션을 초기화하려면 다음 명령을 실행합니다.

trino-cli --catalog iceberg

Iceberg 테이블에 쓰기

다음 SQL 명령어를 사용하여 테이블을 만들고 테이블에 씁니다.

trino> SHOW SCHEMAS; trino> CREATE TABLE default.iceberg_table ( id int, data varchar, category varchar) WITH ( format = 'PARQUET', partitioning = ARRAY['category', 'bucket(id, 16)'], location = 's3://DOC-EXAMPLE-BUCKET/<prefix>') trino> INSERT INTO default.iceberg_table VALUES (1,'a','c1'), (2,'b','c2'), (3,'c','c3');

Iceberg 테이블에서 읽기

Iceberg 테이블에서 읽으려면 다음 명령을 실행합니다.

trino> SELECT * from default.iceberg_table;