기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
에서 Apache Iceberg 작업 AWS Glue
AWS Glue
AWS Glue 작업은 Apache Spark
에서 Iceberg 작업을 생성할 때 버전에 AWS Glue따라 AWS Glue네이티브 Iceberg 통합 또는 사용자 지정 Iceberg 버전을 사용하여 Iceberg 종속성을 작업에 연결할 수 있습니다.
네이티브 Iceberg 통합 사용
AWS Glue 버전 3.0, 4.0 및 5.0은 기본적으로의 Apache Iceberg, Apache Hudi 및 Linux Foundation Delta Lake AWS Glue for Spark와 같은 트랜잭션 데이터 레이크 형식을 지원합니다. 이 통합 기능은에서 이러한 프레임워크 사용을 시작하는 데 필요한 구성 단계를 간소화합니다 AWS Glue.
AWS Glue 작업에 대한 Iceberg 지원을 활성화하려면 작업을 설정합니다. 작업에 대한 작업 세부 정보 탭을 선택하고 고급 속성에서 작업 파라미터로 AWS Glue 스크롤한 다음 키를 --datalake-formats
로 설정하고 해당 값을 로 설정합니다iceberg
.
노트북을 사용하여 작업을 작성하는 경우 다음과 같이 %%configure
매직을 사용하여 첫 번째 노트북 셀에서 파라미터를 구성할 수 있습니다.
%%configure { "--conf" : <job-specific Spark configuration discussed later>, "--datalake-formats" : "iceberg" }
--datalake-formats
의 iceberg
AWS Glue 구성은 버전에 따라 특정 Iceberg AWS Glue 버전에 해당합니다.
AWS Glue 버전 | 기본 Iceberg 버전 |
---|---|
5.0 |
1.7.1 |
4.0 |
1.0.0 |
3.0 |
0.13.1 |
사용자 지정 Iceberg 버전 사용
경우에 따라 작업에 대한 Iceberg 버전을 제어하고 원하는 속도로 업그레이드해야 할 수 있습니다. 예를 들어 최신 버전으로 업그레이드하면 새로운 기능 및 성능 향상에 대한 액세스가 잠금 해제될 수 있습니다. 에서 특정 Iceberg 버전을 사용하려면 자체 JAR 파일을 제공할 AWS Glue수 있습니다.
사용자 지정 Iceberg 버전을 구현하기 전에 설명서의 AWS Glue 버전 섹션을 확인하여 환경과의 AWS Glue 호환성을 AWS Glue 확인합니다. 예를 들어, AWS Glue 5.0은 Spark 3.5.4와의 호환성이 필요합니다.
예를 들어 Iceberg 버전 1.9.1을 사용하는 AWS Glue 작업을 실행하려면 다음 단계를 따릅니다.
-
필요한 JAR 파일을 획득하여 Amazon S3에 업로드합니다.
-
Apache Maven 리포지토리에서 iceberg-spark-runtime-3.5_2.12-1.9.1.jar
및 iceberg-aws-bundle-1.9.1.jar 을 다운로드합니다. -
이러한 파일을 지정된 S3 버킷 위치(예:
s3://your-bucket-name/jars/
)에 업로드합니다.
-
-
다음과 같이 작업에 대한 AWS Glue 작업 파라미터를 설정합니다.
-
--extra-jars
파라미터의 두 JAR 파일에 대한 전체 S3 경로를 쉼표로 구분하여 지정합니다(예:s3://your-bucket-name/jars/iceberg-spark-runtime-3.5_2.12-1.9.1.jar,s3://your-bucket-name/jars/iceberg-aws-bundle-1.9.1.jar
). -
--datalake-formats
파라미터의 값으로iceberg
를 포함하지 마세요. -
AWS Glue 5.0을 사용하는 경우
--user-jars-first
파라미터를 로 설정해야 합니다true
.
-
의 Iceberg에 대한 Spark 구성 AWS Glue
이 섹션에서는 Iceberg 데이터 세트에 대한 AWS Glue ETL 작업을 작성하는 데 필요한 Spark 구성에 대해 설명합니다. 모든 --conf
Spark 구성 키 및 값의 쉼표로 구분된 목록과 함께 Spark 키를 사용하여 이러한 구성을 설정할 수 있습니다. 노트북에서 %%configure
매직을 사용하거나 AWS Glue Studio 콘솔의 작업 파라미터 섹션을 사용할 수 있습니다.
%glue_version 5.0 %%configure { "--conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions...", "--datalake-formats" : "iceberg" }
다음 속성을 사용하여 Spark 세션을 구성합니다.
-
<catalog_name>
는 Iceberg Spark 세션 카탈로그 이름입니다. 선택한 이름으로 바꾸고이 카탈로그와 연결된 모든 구성에서 참조를 변경해야 합니다. 코드에서 다음과 같이 Spark 세션 카탈로그 이름을 포함하여 정규화된 테이블 이름을 사용하여 Iceberg 테이블을 참조할 수 있습니다.<catalog_name>.<database_name>.<table_name>
또는를 카탈로그 이름으로 설정하여 기본 카탈로그를 정의한 Iceberg 카탈로그
spark.sql.defaultCatalog
로 변경할 수 있습니다. 이 두 번째 접근 방식을 사용하여 카탈로그 접두사가 없는 테이블을 참조할 수 있으므로 쿼리를 간소화할 수 있습니다. -
<catalog_name>.<warehouse>
는 데이터와 메타데이터를 저장할 Amazon S3 경로를 가리킵니다. -
카탈로그를 로 만들려면를
spark.sql.catalog.<catalog_name>.type
로 AWS Glue Data Catalog설정합니다glue
. 이 키는 사용자 지정 카탈로그 구현을 위한 구현 클래스를 가리키는 데 필요합니다. Iceberg에서 지원하는 카탈로그는이 가이드 뒷부분의 일반 모범 사례 섹션을 참조하세요.
예를 들어 라는 카탈로그가 있는 경우 다음과 같이 여러 --conf
키를 사용하여 작업을 구성할 glue_iceberg
수 있습니다.
%%configure { "--datalake-formats" : "iceberg", "--conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.glue_iceberg=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.glue_iceberg.warehouse=s3://<your-warehouse-dir>/ --conf spark.sql.catalog.glue_iceberg.type=glue" }
또는 코드를 사용하여 다음과 같이 Spark 스크립트에 위의 구성을 추가할 수 있습니다.
spark = SparkSession.builder\ .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions")\ .config("spark.sql.catalog.glue_iceberg", "org.apache.iceberg.spark.SparkCatalog")\ .config("spark.sql.catalog.glue_iceberg.warehouse","s3://<your-warehouse-dir>/")\ .config("spark.sql.catalog.glue_iceberg.type", "glue") \ .getOrCreate()
AWS Glue 작업 모범 사례
이 섹션에서는 Iceberg 테이블에 대한 데이터 읽기 및 쓰기를 최적화 AWS Glue 하기 위해에서 Spark 작업을 튜닝하기 위한 일반 지침을 제공합니다. Iceberg 관련 모범 사례는이 가이드 뒷부분의 모범 사례 섹션을 참조하세요.
-
의 최신 버전을 사용하고 가능한 경우 AWS Glue 업그레이드 -의 새 버전은 성능 개선, 시작 시간 단축 및 새 기능을 AWS Glue 제공합니다. 또한 최신 Iceberg 버전에 필요할 수 있는 최신 Spark 버전을 지원합니다. 사용 가능한 AWS Glue 버전 및 지원하는 Spark 버전 목록은 AWS Glue 설명서를 참조하세요.
-
AWS Glue 작업 메모리 최적화 - AWS 블로그 게시물의 메모리 관리 최적화의 AWS Glue
권장 사항을 따릅니다. -
AWS Glue Auto Scaling 사용 - Auto Scaling을 활성화하면가 워크로드에 따라 동적으로 AWS Glue 작업자 수를 AWS Glue 자동으로 조정합니다. 이렇게 하면 워크로드가 작고 작업자가 유휴 상태일 때가 작업자 수를 스케일 다운하므로 AWS Glue 최대 부하 중에 AWS Glue 작업 비용을 줄일 수 있습니다. AWS Glue Auto Scaling을 사용하려면 작업을 확장할 수 있는 최대 작업자 수를 AWS Glue 지정합니다. 자세한 내용은 설명서의 에 Auto Scaling 사용을 AWS Glue 참조하세요 AWS Glue .
-
원하는 Iceberg 버전 사용 - Iceberg의 AWS Glue 기본 통합은 Iceberg를 시작하는 데 가장 좋습니다. 그러나 프로덕션 워크로드의 경우 Iceberg 버전을 완전히 제어하려면 라이브러리 종속성(이 가이드의 앞부분에서 설명한 대로)을 추가하는 것이 좋습니다. 이 접근 방식은 작업의 최신 Iceberg 기능 및 성능 개선을 활용하는 데 도움이 됩니다 AWS Glue .
-
모니터링 및 디버깅을 위한 Spark UI 활성화 - 의 Spark UI AWS Glue를 사용하여 방향성 비순환 그래프(DAG)에서 Spark 작업의 다양한 단계를 시각화하고 작업을 세부적으로 모니터링하여 Iceberg 작업을 검사할 수도 있습니다. Spark UI는 Iceberg 작업의 문제를 해결하고 최적화하는 효과적인 방법을 제공합니다. 예를 들어, 큰 셔플 또는 디스크 유출이 있는 병목 현상 단계를 식별하여 튜닝 기회를 식별할 수 있습니다. 자세한 내용은 설명서의 Apache Spark 웹 UI를 사용하여 작업 모니터링을 참조하세요 AWS Glue .