AWS Glue 버전 5.1으로 AWS Glue for Spark 작업 마이그레이션 - AWS Glue

AWS Glue 버전 5.1으로 AWS Glue for Spark 작업 마이그레이션

이 주제에서는 Spark 애플리케이션 및 ETL 작업을 AWS Glue 5.1로 마이그레이션할 수 있도록 하는 AWS Glue 버전 0.9, 1.0, 2.0, 3.0, 4.0 및 5.0 간의 변경 사항에 대해 설명합니다. 또한 AWS Glue 5.1의 기능과 이를 사용할 때의 이점에 대해 설명합니다.

AWS Glue ETL 작업에 이 기능을 사용하려면 작업 생성 시 Glue version으로 5.1을 선택합니다.

새로운 기능

이 섹션에서는 AWS Glue 버전 5.1의 새로운 기능과 장점에 대해 설명합니다.

  • AWS Glue 5.0의 3.5.4에서 AWS Glue 5.1의 3.5.6으로의 Apache Spark 업데이트.

  • 오픈 테이블 형식(OTF)이 Hudi 1.0.2, Iceberg 1.10.0 및 Delta Lake 3.3.2로 업데이트됨

  • Iceberg 구체화된 뷰 - Iceberg 구체화된 뷰(MV)를 생성하고 관리합니다. 자세한 내용은 블로그 게시물을 참조하세요.

  • Iceberg 형식 버전 3.0 - 데이터 유형 및 기존 메타데이터 구조를 확장하여 새 기능을 추가합니다. 자세한 내용은 Iceberg 테이블 사양을 참조하세요.

  • Hudi 전체 테이블 액세스 - 정의된 정책을 기반으로 Apache Spark의 Apache Hudi에 대한 전체 테이블 액세스(FTA)를 제어합니다. 이 기능을 사용하면 작업 역할에 전체 테이블 액세스 권한이 있을 때 등록 테이블의 AWS Glue ETL 작업에서 읽기 및 쓰기 작업을 수행할 수 있습니다.

  • Spark 네이티브 세분화된 액세스(FGAC) 제어 - 등록된 Apache Hive, Apache Iceberg 및 Delta Lake 테이블에 대한 세분화된 액세스 제어와 함께 DDL/DML 작업(예: CREATE, ALTER, DELETE, DROP)을 지원합니다.

  • Spark 작업에 대한 감사 컨텍스트 - 활성화된 작업이 있는 AWS Glue ETL 작업에 대한 감사 컨텍스트가 로그에서 AWS Glue 및 AWS Lake Formation API 호출의 대해 제공됩니다.

알려진 문제 및 제한

다음과 같은 알려진 문제 및 제한 사항에 유의하세요.

  • 구체화된 뷰 생성, 쿼리 재작성 및 증분 새로 고침을 위한 뷰 SQL 절이 제한적으로 지원됩니다. 자세한 내용은 Iceberg 구체화된 뷰 기능 설명서 페이지에서 확인할 수 있습니다.

  • Hudi FTA 쓰기는 작업 실행 중에 자격 증명 벤딩에 HoodieCredentialedHadoopStorage를 사용해야 합니다. Hudi 작업을 실행할 때는 다음 구성을 설정합니다.

    hoodie.storage.class=org.apache.spark.sql.hudi.storage.HoodieCredentialedHadoopStorage

  • Hudi FTA 쓰기 지원은 기본 Hudi 구성에서만 작동합니다. 사용자 지정이거나 기본값이 아닌 Hudi 설정은 완전히 지원되지 않을 수 있으며 예기치 않은 동작이 발생할 수 있습니다. FTA 쓰기 모드에서는 Hudi Merge-On-Read(MOR) 테이블에 대한 클러스터링도 지원되지 않습니다.

호환성에 영향을 미치는 변경 사항

호환성에 영향을 미치는 다음과 같은 변경 사항에 유의하세요.

AWS Glue 5.1으로 마이그레이션할 작업

기존 작업의 경우 작업 구성에서 Glue version을 이전 버전에서 Glue 5.1으로 변경합니다.

  • AWS Glue Studio의 Glue version에서 Glue 5.1 - Supports Spark 3.5.6, Scala 2, Python 3을 선택합니다.

  • API에서 UpdateJob API 작업의 GlueVersion 파라미터에서 5.1을 선택합니다.

새 작업의 경우 작업을 생성할 때 Glue 5.1을 선택합니다.

  • 콘솔의 Glue version에서 Spark 3.5.6, Python 3 (Glue Version 5.1) or Spark 3.5.6, Scala 2 (Glue Version 5.1)를 선택합니다.

  • AWS Glue Studio의 Glue version에서 Glue 5.1 - Supports Spark 3.5.6, Scala 2, Python 3을 선택합니다.

  • API에서 CreateJob API 작업의 GlueVersion 파라미터에서 5.1을 선택합니다.

AWS Glue 2.0 또는 이전 버전에서 가져온 AWS Glue 5.1의 Spark 이벤트 로그를 보려면 CloudFormation 또는 Docker를 사용하여 업그레이드된 AWS Glue 5.1용 Spark 기록 서버를 시작합니다.

마이그레이션 체크리스트

마이그레이션을 위해 이 체크리스트를 검토합니다.

  • [Python] boto 참조를 1.34에서 1.40로 업데이트합니다.

AWS Glue 5.0에서 AWS Glue 5.1으로 마이그레이션

AWS Glue 5.0에 존재하는 모든 기존 작업 파라미터와 주요 기능은 AWS Glue 5.1에 존재합니다. 마이그레이션할 때 다음 변경 사항에 유의합니다.

  • AWS Glue 5.1에서는 S3A 파일 시스템이 기본 S3 커넥터로 EMRFS를 대체했습니다. spark.hadoop.fs.s3a.endpointspark.hadoop.fs.s3a.endpoint.region이 모두 설정되지 않은 경우, S3A에서 사용하는 기본 리전은 us-east-2입니다. 이로 인해 특히 VPC 작업의 경우 S3 업로드 제한 시간 오류와 같은 문제가 발생할 수 있습니다. 이 변경으로 인한 문제를 완화하려면 AWS Glue 5.1에서 S3A 파일 시스템을 사용할 때 spark.hadoop.fs.s3a.endpoint.region Spark 구성을 설정합니다.

  • S3A 대신 EMRFS를 계속 사용하려면 다음 스파크 구성을 설정합니다.

    --conf spark.hadoop.fs.s3.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem --conf spark.hadoop.fs.s3n.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem --conf spark.hadoop.fs.AbstractFileSystem.s3.impl=org.apache.hadoop.fs.s3.EMRFSDelegate

Spark 마이그레이션 설명서를 참조하세요.

이전 AWS Glue 버전에서 AWS Glue 5.1로 마이그레이션

AWS Glue 5.1용 커넥터 및 JDBC 드라이버 마이그레이션

업그레이드된 JDBC 및 데이터 레이크 커넥터 버전은 다음을 참조하세요.

다음 변경 사항은 AWS Glue 5.1에 대한 부록 D: 오픈 테이블 형식 업그레이드에서 식별된 OTF 버전 업그레이드에 적용됩니다.

Apache Hudi

다음과 같은 변경 사항에 유의하세요.

  • Lake Formation 등록 테이블에서 FTA 읽기 및 쓰기 액세스 지원.

Apache Iceberg

다음과 같은 변경 사항에 유의하세요.

  • Iceberg 형식 버전 3 지원. 다음 기능이 지원됩니다.

    • 파티셔닝 및 정렬을 위한 다중 인수 변환.

    • 행 계보 추적.

    • 삭제 벡터. 자세한 내용은 블로그 게시물을 참조하세요.

    • 테이블 암호화 키.

  • 등록 테이블에서 Spark 네이티브 FGAC 쓰기 지원.

  • Athena SQL 호환성 - 오류로 인해 EMR Spark에서 생성한 Iceberg V3 테이블을 읽을 수 없음: GENERIC_INTERNAL_ERROR: Cannot read unsupported version 3

Delta Lake

다음과 같은 변경 사항에 유의하세요.

  • Lake Formation 등록 테이블에서 FTA 읽기 및 쓰기 액세스 지원.

부록 A: 중요한 종속성 업그레이드

다음은 종속성 업그레이드입니다.

종속성 AWS Glue 5.1 버전 AWS Glue 5.0 버전 AWS Glue 4.0 버전 AWS Glue 3.0 버전 AWS Glue 2.0 버전 AWS Glue 1.0 버전
Java 17 17 8 8 8 8
Spark 3.5.6 3.5.4 3.3.0-amzn-1 3.1.1-amzn-0 2.4.3 2.4.3
Hadoop 3.4.1 3.4.1 3.3.3-amzn-0 3.2.1-amzn-3 2.8.5-amzn-5 2.8.5-amzn-1
Scala 2.12.18 2.12.18 2.12 2.12 2.11 2.11
Jackson 2.15.2 2.15.2 2.12 2.12 2.11 2.11
Hive 2.3.9-amzn-4 2.3.9-amzn-4 2.3.9-amzn-2 2.3.7-amzn-4 1.2 1.2
EMRFS 2.73.0 2.69.0 2.54.0 2.46.0 2.38.0 2.30.0
Json4s 3.7.0-M11 3.7.0-M11 3.7.0-M11 3.6.6 3.5.x 3.5.x
화살표 12.0.1 12.0.1 7.0.0 2.0.0 0.10.0 0.10.0
AWS Glue 데이터 카탈로그 클라이언트 4.9.0 4.5.0 3.7.0 3.0.0 1.10.0 해당 사항 없음
Java용 AWS SDK 2.35.5 2.29.52 1.12 1.12
Python 3.11 3.11 3.10 3.7 2.7 및 3.6 2.7 및 3.6
Boto 1.40.61 1.34.131 1.26 1.18 1.12 해당 사항 없음
EMR DynamoDB 커넥터 5.7.0 5.6.0 4.16.0

부록 B: JDBC 드라이버 업그레이드

다음은 JDBC 드라이버 업그레이드입니다.

드라이버 AWS Glue 5.1의 JDBC 드라이버 버전 AWS Glue 5.0의 JDBC 드라이버 버전 AWS Glue 4.0의 JDBC 드라이버 버전 AWS Glue 3.0의 JDBC 드라이버 버전 과거 AWS Glue 버전의 JDBC 드라이버 버전
MySQL 8.0.33 8.0.33 8.0.23 8.0.23 5.1
Microsoft SQL Server 10.2.0 10.2.0 9.4.0 7.0.0 6.1.0
Oracle Database 23.3.0.23.09 23.3.0.23.09 21.7 21.1 11.2
PostgreSQL 42.7.3 42.7.3 42.3.6 42.2.18 42.1.0
Amazon Redshift

redshift-jdbc42-2.1.0.29

redshift-jdbc42-2.1.0.29

redshift-jdbc42-2.1.0.16

redshift-jdbc41-1.2.12.1017

redshift-jdbc41-1.2.12.1017

SAP Hana 2.20.17 2.20.17 2.17.12
Teradata 20.00.00.33 20.00.00.33 20.00.00.06

부록 C: 커넥터 업그레이드

다음은 커넥터 업그레이드입니다.

드라이버 AWS Glue 5.1의 커넥터 버전 AWS Glue 5.0의 커넥터 버전 AWS Glue 4.0의 커넥터 버전 AWS Glue 3.0의 커넥터 버전
EMR DynamoDB 커넥터 5.7.0 5.6.0 4.16.0
Amazon Redshift 6.4.2 6.4.0 6.1.3
OpenSearch 1.2.0 1.2.0 1.0.1
MongoDB 10.3.0 10.3.0 10.0.4 3.0.0
Snowflake 3.1.1 3.0.0 2.12.0
Google BigQuery 0.32.2 0.32.2 0.32.2
AzureCosmos 4.33.0 4.33.0 4.22.0
AzureSQL 1.3.0 1.3.0 1.3.0
Vertica 3.3.5 3.3.5 3.3.5

부록 D: 오픈 테이블 형식 업그레이드

다음은 오픈 테이블 형식 업그레이드입니다.

OTF AWS Glue 5.1의 커넥터 버전 AWS Glue 5.0의 커넥터 버전 AWS Glue 4.0의 커넥터 버전 AWS Glue 3.0의 커넥터 버전
Hudi 1.0.2 0.15.0 0.12.1 0.10.1
Delta Lake 3.3.2 3.3.0 2.1.0 1.0.0
Iceberg 1.10.0 1.7.1 1.0.0 0.13.1