기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Iceberg 클러스터를 Hive와 함께 사용
Amazon EMR 릴리스 6.9.0 이상에서는 오픈 소스 Iceberg Hive 통합에 필요한 설정 단계를 수행하지 않고도 Iceberg를 Hive 클러스터와 함께 사용할 수 있습니다. Amazon EMR 버전 6.8.0 및 이전 버전의 경우 부트스트랩 작업을 사용하여 Iceberg용 Hive를 구성하기 위한 iceberg-hive-runtime
jar를 설치할 수 있습니다.
Amazon EMR 6.9.0에는 아이스버그 0.14.1과의 하이브 3.1.3 통합을
Iceberg 클러스터 생성
AWS Management Console, AWS CLI 또는 EMR API Amazon을 사용하여 Iceberg가 설치된 클러스터를 생성할 수 있습니다. 이 자습서에서는 Amazon EMR 클러스터에서 Iceberg를 사용하여 작업합니다. AWS CLI 콘솔을 사용하여 Iceberg가 설치된 클러스터를 생성하려면 Amazon Athena, Amazon 및 Glue를 사용하여 아이스버그 데이터 레이크 구축의
Amazon에서 Iceberg를 EMR AWS CLI와 함께 사용하려면 먼저 아래 단계를 사용하여 클러스터를 생성하십시오. 또는 SDK Java를 사용하여 Iceberg 분류를 지정하는 방법에 대한 자세한 내용은 AWS CLI 또는 을 참조하십시오클러스터를 생성할 AWS CLI 때 를 사용하여 구성을 제공하십시오.. 클러스터를 생성할 SDK 때 Java를 사용하여 구성을 제공하십시오. 다음 콘텐츠가 포함된 configurations.json
이라는 파일을 생성합니다.
[{ "Classification":"iceberg-defaults", "Properties":{"iceberg.enabled":"true"} }]
그리고 다음과 같은 구성으로 클러스터를 생성하고, 예제 Amazon S3 버킷 경로와 서브넷 ID를 사용자 정보로 대체합니다.
aws emr create-cluster --release-label emr-6.9.0 \ --applications Name=Hive \ --configurations file://iceberg_configurations.json \ --region us-east-1 \ --name My_hive_Iceberg_Cluster \ --log-uri s3://
DOC-EXAMPLE-BUCKET
/ \ --instance-type m5.xlarge \ --instance-count 2 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-1234567890abcdef
Hive Iceberg 클러스터는 다음과 같은 작업을 수행합니다.
-
Iceberg Hive 런타임 jar을 Hive에 로드하고 Hive 엔진의 Iceberg 관련 구성을 활성화합니다.
-
Amazon EMR Hive의 동적 실행 엔진 선택을 활성화하여 사용자가 Iceberg 호환성을 위해 지원되는 실행 엔진을 설정하지 못하도록 합니다.
참고
Hive Iceberg 클러스터는 현재 AWS Glue 데이터 카탈로그를 지원하지 않습니다. 기본 Iceberg 카탈로그는 HiveCatalog
이며, 이는 Hive 환경에 맞게 구성된 메타스토어에 해당합니다. 카탈로그 관리에 대한 자세한 내용은 Apache Hive HCatalog
기능 지원
아마존 EMR 6.9.0은 하이브 3.1.3과 아이스버그 0.14.1을 지원합니다. 이 기능은 Hive 3.1.2 및 3.1.3의 Iceberg 호환 기능으로 제한됩니다. 다음 명령이 지원됩니다.
-
아마존 EMR 릴리스 6.9.0에서 6.12.x까지는 Hive
libfb303
디렉터리에 jar를 포함해야 합니다.auxlib
다음 명령을 사용하여 포함합니다.sudo /usr/bin/ln -sf /usr/lib/hive/lib/libfb303-*.jar /usr/lib/hive/auxlib/libfb303.jar
Amazon EMR 릴리스 6.13 이상에서는
libfb303
jar가auxlib
Hive 디렉터리에 자동으로 심볼릭 링크됩니다. -
테이블 생성
-
파티셔닝되지 않은 테이블 - 다음과 같이 스토리지 핸들러를 제공하여 Hive의 외부 테이블을 생성할 수 있습니다.
CREATE EXTERNAL TABLE x (i int) STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler'
-
파티셔닝된 테이블 - 다음과 같이 Hive에서 파티셔닝된 외부 테이블을 생성할 수 있습니다.
CREATE EXTERNAL TABLE x (i int) PARTITIONED BY (j int) STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler'
참고
Hive 3에서는 ORC AVRO /의
STORED AS
파일 PARQUET 형식이 지원되지 않습니다. 기본 옵션이자 유일한 옵션은 Parquet입니다. -
-
테이블 삭제 -
DROP TABLE
명령은 다음 예제와 같이 테이블을 삭제하는 데 사용됩니다.DROP TABLE [IF EXISTS] table_name [PURGE];
-
테이블 읽기 - 다음 예제와 같이
SELECT
문을 사용하여 Hive에서 Iceberg 테이블을 읽을 수 있습니다. 지원되는 실행 엔진은 MR 및 Tez입니다.SELECT * FROM table_name
Hive의 select 구문에 대한 자세한 내용은 선택을 참조하십시오LanguageManual .
Hive의 Iceberg 테이블에서 select 문에 대한 자세한 내용은 Apache Iceberg Select 를 참조하세요. -
테이블에 삽입 - HiveQL의
INSERT INTO
문은 Map Reduce 실행 엔진만 지원하는 Iceberg 테이블에서 작동합니다. Amazon EMR Hive는 런타임에 Iceberg Tables용 엔진을 선택하기 때문에 Amazon EMR 사용자는 실행 엔진을 명시적으로 설정할 필요가 없습니다.-
단일 테이블 삽입 - 예제:
INSERT INTO table_name VALUES ('a', 1); INSERT INTO table_name SELECT...;
-
다중 테이블 삽입 - 명령문에 비원자성 다중 테이블 삽입이 지원됩니다. 예제:
FROM source INSERT INTO table_1 SELECT a, b INSERT INTO table_2 SELECT c,d;
-