

# AWS Glue 버전 5.1으로 AWS Glue for Spark 작업 마이그레이션
<a name="migrating-version-51"></a>

이 주제에서는 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**을 선택합니다.

**Topics**
+ [새로운 기능](#migrating-version-51-features)
+ [AWS Glue 5.1으로 마이그레이션할 작업](#migrating-version-51-actions)
+ [마이그레이션 체크리스트](#migrating-version-51-checklist)
+ [AWS Glue 5.0에서 AWS Glue 5.1으로 마이그레이션](#migrating-version-51-from-50)
+ [이전 AWS Glue 버전에서 AWS Glue 5.1로 마이그레이션](#migrating-older-versions-to-51)
+ [AWS Glue 5.1용 커넥터 및 JDBC 드라이버 마이그레이션](#migrating-version-51-connector-driver-migration)

## 새로운 기능
<a name="migrating-version-51-features"></a>

이 섹션에서는 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)를 생성하고 관리합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/introducing-apache-iceberg-materialized-views-in-aws-glue-data-catalog/)을 참조하세요.
+ **Iceberg 형식 버전 3.0** - 데이터 유형 및 기존 메타데이터 구조를 확장하여 새 기능을 추가합니다. 자세한 내용은 [Iceberg 테이블 사양](https://iceberg.apache.org/spec/)을 참조하세요.
+ **Hudi 전체 테이블 액세스** - AWS Lake Formation에 정의된 정책을 기반으로 Apache Spark의 Apache Hudi에 대한 전체 테이블 액세스(FTA)를 제어합니다. 이 기능을 사용하면 작업 역할에 전체 테이블 액세스 권한이 있을 때 AWS Lake Formation 등록 테이블의 AWS Glue ETL 작업에서 읽기 및 쓰기 작업을 수행할 수 있습니다.
+ **AWS Lake Formation을 사용하여 Spark 네이티브 세분화된 액세스(FGAC) 제어** - AWS Lake Formation에 등록된 Apache Hive, Apache Iceberg 및 Delta Lake 테이블에 대한 세분화된 액세스 제어와 함께 DDL/DML 작업(예: CREATE, ALTER, DELETE, DROP)을 지원합니다.
+ **Spark 작업에 대한 감사 컨텍스트** - AWS Glue ETL 작업에 대한 감사 컨텍스트가 AWS CloudTrail 로그에서 AWS Glue 및 AWS Lake Formation API 직접 호출에 대해 제공됩니다.

**알려진 문제 및 제한**  
다음과 같은 알려진 문제 및 제한 사항에 유의하세요.
+ 구체화된 뷰 생성, 쿼리 재작성 및 증분 새로 고침을 위한 뷰 SQL 절이 제한적으로 지원됩니다. 자세한 내용은 [Iceberg 구체화된 뷰 기능 설명서 페이지](https://docs.aws.amazon.com/lake-formation/latest/dg/materialized-views.html#materialized-views-considerations-limitations)에서 확인할 수 있습니다.
+ **Hudi FTA 쓰기**는 작업 실행 중에 자격 증명 벤딩에 HoodieCredentialedHadoopStorage를 사용해야 합니다. Hudi 작업을 실행할 때는 다음 구성을 설정합니다.

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

**호환성에 영향을 미치는 변경 사항**  
호환성에 영향을 미치는 다음과 같은 변경 사항에 유의하세요.
+  기본 S3 커넥터로 S3A 파일 시스템이 EMRFS를 대체했습니다. 마이그레이션 방법에 대한 자세한 내용은 [AWS Glue 5.0에서 AWS Glue 5.1으로 마이그레이션](#migrating-version-51-from-50) 섹션을 참조하세요.

## AWS Glue 5.1으로 마이그레이션할 작업
<a name="migrating-version-51-actions"></a>

기존 작업의 경우 작업 구성에서 `Glue version`을 이전 버전에서 `Glue 5.1`으로 변경합니다.
+ AWS Glue Studio의 `Glue version`에서 `Glue 5.1 - Supports Spark 3.5.6, Scala 2, Python 3`을 선택합니다.
+ API에서 [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-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에서 [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob) API 작업의 `GlueVersion` 파라미터에서 **5.1**을 선택합니다.

AWS Glue 2.0 또는 이전 버전에서 가져온 AWS Glue 5.1의 Spark 이벤트 로그를 보려면 [CloudFormation 또는 Docker를 사용하여 업그레이드된 AWS Glue 5.1용 Spark 기록 서버를 시작합니다](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui-history.html).

## 마이그레이션 체크리스트
<a name="migrating-version-51-checklist"></a>

마이그레이션을 위해 이 체크리스트를 검토합니다.
+ [Python] boto 참조를 1.34에서 1.40로 업데이트합니다.

## AWS Glue 5.0에서 AWS Glue 5.1으로 마이그레이션
<a name="migrating-version-51-from-50"></a>

AWS Glue 5.0에 존재하는 모든 기존 작업 파라미터와 주요 기능은 AWS Glue 5.1에 존재합니다. 마이그레이션할 때 다음 변경 사항에 유의합니다.
+ AWS Glue 5.1에서는 S3A 파일 시스템이 기본 S3 커넥터로 EMRFS를 대체했습니다. `spark.hadoop.fs.s3a.endpoint` 및 `spark.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 마이그레이션 설명서를 참조하세요.
+ [Migration Guide: Spark Core](https://spark.apache.org/docs/3.5.6/core-migration-guide.html)
+ [Migration Guide: SQL, Datasets and DataFrame](https://spark.apache.org/docs/3.5.6/sql-migration-guide.html)
+ [Migration Guide: Structured Streaming](https://spark.apache.org/docs/3.5.6/ss-migration-guide.html)
+ [Upgrading PySpark](https://spark.apache.org/docs/3.5.6/api/python/migration_guide/pyspark_upgrade.html)

## 이전 AWS Glue 버전에서 AWS Glue 5.1로 마이그레이션
<a name="migrating-older-versions-to-51"></a>
+ AWS Glue 4.0에서 AWS Glue 5.0으로의 마이그레이션 단계는 [AWS Glue 4.0에서 AWS Glue 5.0으로 마이그레이션](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-40)을 참조하세요.
+ AWS Glue 3.0에서 AWS Glue 5.0으로의 마이그레이션 단계는 [AWS Glue 3.0에서 AWS Glue 5.0으로 마이그레이션](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-30)을 참조하세요.
+ AWS Glue 2.0에서 AWS Glue 5.0으로의 마이그레이션 단계와 AWS Glue 버전 2.0과 4.0 간의 마이그레이션 차이점 목록은 [AWS Glue 2.0에서 AWS Glue 5.0으로의 마이그레이션](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-20)을 참조하세요.

## AWS Glue 5.1용 커넥터 및 JDBC 드라이버 마이그레이션
<a name="migrating-version-51-connector-driver-migration"></a>

업그레이드된 JDBC 및 데이터 레이크 커넥터 버전은 다음을 참조하세요.
+ [부록 B: JDBC 드라이버 업그레이드](#migrating-version-51-appendix-jdbc-driver)
+ [부록 C: 커넥터 업그레이드](#migrating-version-51-appendix-connector)
+ [부록 D: 오픈 테이블 형식 업그레이드](#migrating-version-51-appendix-open-table-formats)

다음 변경 사항은 AWS Glue 5.1에 대한 [부록 D: 오픈 테이블 형식 업그레이드](#migrating-version-51-appendix-open-table-formats)에서 식별된 OTF 버전 업그레이드에 적용됩니다.

**Apache Hudi**  
다음과 같은 변경 사항에 유의하세요.
+ Lake Formation 등록 테이블에서 FTA 읽기 및 쓰기 액세스 지원.

**Apache Iceberg**  
다음과 같은 변경 사항에 유의하세요.
+ Iceberg 형식 버전 3 지원. 다음 기능이 지원됩니다.
  + 파티셔닝 및 정렬을 위한 다중 인수 변환.
  + 행 계보 추적.
  + 삭제 벡터. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/unlock-the-power-of-apache-iceberg-v3-deletion-vectors-on-amazon-emr/)을 참조하세요.
  + 테이블 암호화 키.
  + 열에 대해 기본값이 지원됩니다.
+ AWS Lake Formation 등록 테이블에서 Spark 네이티브 FGAC 쓰기를 지원합니다.
+ Athena SQL 호환성 - 오류로 인해 EMR Spark에서 생성한 Iceberg V3 테이블을 읽을 수 없음: `GENERIC_INTERNAL_ERROR: Cannot read unsupported version 3`

**Delta Lake**  
다음과 같은 변경 사항에 유의하세요.
+ Lake Formation 등록 테이블에서 FTA 읽기 및 쓰기 액세스 지원.

### 부록 A: 중요한 종속성 업그레이드
<a name="migrating-version-51-appendix-dependencies"></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 드라이버 업그레이드
<a name="migrating-version-51-appendix-jdbc-driver"></a>

다음은 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: 커넥터 업그레이드
<a name="migrating-version-51-appendix-connector"></a>

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


| 드라이버 | 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: 오픈 테이블 형식 업그레이드
<a name="migrating-version-51-appendix-open-table-formats"></a>

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


| 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 | 