기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS Glue 버전 4.0으로 AWS Glue for Spark 작업 마이그레이션
이 주제에서는 Spark 애플리케이션 및 ETL 작업을 AWS Glue 4.0으로 마이그레이션할 수 있도록 하는 AWS Glue 버전 0.9, 1.0, 2.0 및 3.0 간의 변경 사항에 대해 설명합니다. 또한 AWS Glue 4.0의 기능과 이를 사용할 때의 이점에 대해 설명합니다.
AWS Glue ETL 작업에 이 기능을 사용하려면 작업 생성 시 Glue version
으로 4.0
을 선택합니다.
주제
지원되는 새로운 기능
이 섹션에서는 AWS Glue 버전 4.0의 새로운 기능과 장점에 대해 설명합니다.
-
Apache Spark 3.3.0을 기반으로 하지만 적응형 쿼리 실행, 벡터화된 리더, 최적화된 셔플, 파티션 병합과 같은 Amazon EMR 및 AWS Glue의 최적화를 포함합니다.
-
MySQL, Microsoft SQL Server, Oracle, PostgreSQL, MongoDB 및 Spark 3.3.0에서 가져온 업그레이드된 Spark 라이브러리 및 종속성을 포함한 모든 AWS Glue 기본 소스용 JDBC 드라이버가 업그레이드되었습니다.
-
새로운 Amazon Redshift 커넥터와 JDBC 드라이버로 업데이트.
-
업그레이드된 EMR 파일 시스템(EMRFS)으로 Amazon S3 액세스가 최적화되었으며 Amazon S3 최적화 출력 커미터가 기본적으로 사용됩니다.
-
파티션 인덱스, 푸시다운 조건자, 파티션 목록 및 업그레이드된 Hive 메타스토어 클라이언트로 Data Catalog 액세스가 최적화되었습니다.
-
셀 수준 필터링 및 데이터 레이크 트랜잭션이 있는 관리되는 카탈로그 테이블을 위해 Lake Formation과 통합됩니다.
-
시작 대기 시간이 단축되어 전반적인 작업 완료 시간과 상호 작용성이 개선되었습니다.
-
Spark 작업은 최소 10분에서 1분으로 10배 더 짧은 최소 청구 기간으로 1초 단위로 청구됩니다.
-
Apache Hudi, Delta Lake 및 Apache Iceberg를 통해 개방형 데이터 레이크 프레임워크 기본 지원.
-
Amazon S3를 사용하여 셔플링 및 탄력적인 스토리지 용량을 지원할 수 있도록 Amazon S3 기반 클라우드 셔플 스토리지 플러그인(Apache Spark 플러그인) 기본 지원.
Spark 3.1.1에서 Spark 3.3.0으로 개선된 주요 기능
다음과 같은 개선 사항에 유의합니다.
-
행 수준 런타임 필터링(SPARK-32268
). -
ANSI 개선 사항(SPARK-38860
). -
오류 메시지 개선 사항(SPARK-38781
). -
Parquet 벡터화된 리더(SPARK-34863
)에 대해 복합 유형을 지원합니다. -
Spark SQL(SPARK-37273
)에 대해 숨김 파일 메타데이터를 지원합니다. -
Python/Pandas UDF(SPARK-37443
)에 대한 프로파일러를 제공합니다. -
여러 배치에서 Triggger.Once과 같은 스트리밍 쿼리를 실행하기 위해 Triggger.AvailableNow를 소개합니다(SPARK-36533
). -
보다 포괄적인 Datasource V2 푸시다운 기능(SPARK-38788
). -
log4j 1에서 log4j 2(SPARK-37814
)로 마이그레이션합니다.
기타 주요 변경 사항
다음과 같은 변경 사항에 유의하세요.
-
호환성에 영향을 미치는 변경
-
문서 및 Python/문서(SPARK-36977
)에서 Python 3.6 지원에 대한 참조를 삭제합니다. -
기본 제공 pickle을 cloudpickle(SPARK-32079
)로 대체하여 명명된 tuple hack을 제거합니다. -
최소 pandas 버전을 1.0.5(SPARK-37465
)로 올립니다.
-
AWS Glue 4.0으로 마이그레이션할 작업
기존 작업의 경우 작업 구성에서 Glue version
을 이전 버전에서 Glue 4.0
으로 변경합니다.
-
AWS Glue Studio의
Glue version
에서Glue 4.0 - Supports Spark 3.3, Scala 2, Python 3
을 선택합니다. -
API에서
UpdateJob
API 작업의GlueVersion
파라미터에서4.0
을 선택합니다.
새 작업의 경우 작업을 생성할 때 Glue 4.0
을 선택합니다.
-
콘솔의
Glue version
에서Spark 3.3, Python 3 (Glue Version 4.0) or Spark 3.3, Scala 2 (Glue Version 3.0)
를 선택합니다. -
AWS Glue Studio의
Glue version
에서Glue 4.0 - Supports Spark 3.3, Scala 2, Python 3
을 선택합니다. -
API에서
CreateJob
API 작업의GlueVersion
파라미터에서4.0
을 선택합니다.
AWS Glue 2.0 이전 버전에서 가져온 AWS Glue 4.0의 Spark 이벤트 로그를 보려면 AWS CloudFormation 또는 Docker를 사용하여 AWS Glue 4.0용으로 업그레이드된 Spark 기록 서버를 시작합니다.
마이그레이션 체크리스트
마이그레이션을 위해 이 체크리스트를 검토합니다.
참고
AWS Glue 3.0과 관련된 체크리스트 항목은 마이그레이션 체크리스트 섹션을 참조하세요.
-
작업의 외부 Python 라이브러리가 Python 2.7/3.6에 종속되나요?
-
Spark 3.3.0에서 Python 2.7 및 3.6 지원이 완전히 제거되었으므로 종속 라이브러리를 Python 2.7/3.6에서 Python 3.10으로 업데이트합니다.
-
AWS Glue 3.0에서 AWS Glue 4.0으로 마이그레이션
마이그레이션할 때 다음 변경 사항에 유의합니다.
-
AWS Glue 3.0에 존재하는 모든 기존 작업 파라미터와 주요 기능은 AWS Glue 4.0에 존재합니다.
-
AWS Glue 3.0은 Amazon EMR 최적화 Spark 3.1.1을 사용하고 AWS Glue 4.0은 Amazon EMR 최적화 Spark 3.3.0을 사용합니다.
몇 가지 Spark 변경만으로도 제거된 기능이 참조되지 않도록 스크립트를 수정해야 할 수 있습니다.
-
AWS Glue 4.0에는 EMRFS와 Hadoop에 대한 업데이트도 제공됩니다. 특정 버전 번호는 부록 A: 중요한 종속성 업그레이드 섹션을 참조하세요.
-
ETL 작업에 제공되는 AWS SDK가 이제 1.11에서 1.12로 업그레이드되었습니다.
-
모든 Python 작업에서는 Python 버전 3.10을 사용합니다. 이전에는 Python 3.7이 AWS Glue 3.0에서 사용되었습니다.
따라서 AWS Glue에서 기본적으로 가져오는 일부 pymodule이 업그레이드됩니다.
-
Log4j가 Log4j2로 업그레이드되었습니다.
-
Log4j2 마이그레이션 경로에 대한 자세한 내용은 Log4j 설명서
를 참조하세요. -
대신 사용자 지정 log4j.properties 파일의 이름을 적절한 log4j2 속성을 사용하여 log4j2.properties 파일로 바꿔야 합니다.
-
-
특정 커넥터를 마이그레이션하려면 AWS Glue 4.0용 커넥터 및 JDBC 드라이버 마이그레이션 섹션을 참조하세요.
-
AWS 암호화 SDK가 1.x에서 2.x로 업그레이드되었습니다. AWS Glue보안 구성을 사용하는 AWS Glue 작업과 런타임에 제공된 AWS 암호화 SDK 종속성에 종속되는 작업이 영향을 받습니다. AWS Glue 작업 마이그레이션 지침을 참조하세요.
AWS Glue 2.0/3.0에는 이미 AWS 암호화 SDK 브리지 버전이 포함되어 있으므로 AWS Glue 2.0/3.0 작업을 AWS Glue 4.0 작업으로 안전하게 업그레이드할 수 있습니다.
Spark 마이그레이션 설명서를 참조하세요.
AWS Glue 2.0에서 AWS Glue 4.0으로 마이그레이션
마이그레이션할 때 다음 변경 사항에 유의합니다.
참고
AWS Glue 3.0과 관련된 마이그레이션 단계는 AWS Glue 3.0에서 AWS Glue 4.0으로 마이그레이션 섹션을 참조하세요.
-
AWS Glue 2.0에 존재하는 모든 기존 작업 파라미터와 주요 기능은 AWS Glue 4.0에 존재합니다.
-
AWS Glue 3.0 이상에서는 Amazon S3에 Parquet 데이터를 쓰기 위한 EMRFS S3 최적화 커미터가 기본값으로 사용됩니다. 그러나
--enable-s3-parquet-optimized-committer
를false
로 설정하여 사용하지 않을 수도 있습니다. -
AWS Glue 2.0은 오픈 소스 Spark 2.4를 사용하고 AWS Glue 4.0은 Amazon EMR 최적화 Spark 3.3.0을 사용합니다.
-
몇 가지 Spark 변경만으로도 제거된 기능이 참조되지 않도록 스크립트를 수정해야 할 수 있습니다.
-
예를 들어 Spark 3.3.0은 Scala 유형이 지정되지 않은 UDF를 사용하지 않지만 Spark 2.4는 이를 허용합니다.
-
-
ETL 작업에 제공되는 AWS SDK가 이제 1.11에서 1.12로 업그레이드되었습니다.
-
AWS Glue 4.0에는 EMRFS 업데이트, JDBC 드라이버 업데이트, AWS Glue에서 제공하는 Spark 자체에 대한 추가 최적화 기능도 포함되어 있습니다.
-
Scala는 2.11에서 2.12로 업데이트되었으며 Scala 2.12는 Scala 2.11과 역호환되지 않습니다.
-
Python 3.10은 Python 스크립트에 사용되는 기본 버전입니다. AWS Glue 2.0은 Python 3.7 및 2.7만 사용했기 때문입니다.
-
Python 2.7은 Spark 3.3.0에서 지원되지 않습니다. 작업 구성에서 Python 2를 요청하는 작업은 IllegalArgumentException과 함께 실패합니다.
-
AWS Glue 2.0 이상에서는 추가 Python 모듈을 설치하는 새로운 메커니즘을 사용할 수 있습니다.
-
-
부록 A: 중요한 종속성 업그레이드에서 강조 표시된 여러 종속성 업데이트
-
기존 AWS Glue 2.0 작업에 제공된 추가 JAR 파일은 2.0에서 4.0의 여러 종속성에서 업그레이드가 있었기 때문에 종속성 충돌을 일으킬 수 있습니다. AWS Glue 4.0에서
--user-jars-first
AWS Glue 작업 파라미터를 사용하여 클래스 경로 충돌을 피할 수 있습니다. AWS Glue 4.0은 Spark 3.3을 사용합니다. Spark 3.1부터 parquet 파일에서 타임스탬프를 로드하거나 해당 파일로 저장하는 동작이 변경되었습니다. 자세한 내용은 Spark SQL 3.0에서 3.1로 업그레이드
를 참조하세요. 타임스탬프 열이 포함된 parquet 데이터를 읽거나 쓸 때는 다음 파라미터를 설정하는 것이 좋습니다. 이러한 파라미터를 설정하면 Spark 2에서 Spark 3으로 업그레이드하는 동안 AWS Glue 동적 프레임과 Spark 데이터 프레임 둘 다에서 발생하는 달력 비호환성 문제를 해결할 수 있습니다. datetime 값을 있는 그대로 읽으려면 CORRECTED 옵션을 사용하고, 읽는 동안 달력 차이를 기준으로 datetime 값을 다시 지정하려면 LEGACY 옵션을 사용합니다.
- Key: --conf - Value: spark.sql.legacy.parquet.int96RebaseModeInRead=[CORRECTED|LEGACY] --conf spark.sql.legacy.parquet.int96RebaseModeInWrite=[CORRECTED|LEGACY] --conf spark.sql.legacy.parquet.datetimeRebaseModeInRead=[CORRECTED|LEGACY]
-
특정 커넥터를 마이그레이션하려면 AWS Glue 4.0용 커넥터 및 JDBC 드라이버 마이그레이션 섹션을 참조하세요.
-
AWS 암호화 SDK가 1.x에서 2.x로 업그레이드되었습니다. AWS Glue보안 구성을 사용하는 AWS Glue 작업과 런타임에 제공된 AWS 암호화 SDK 종속성에 종속되는 작업이 영향을 받습니다. AWS Glue 작업 마이그레이션 지침을 참조하세요.
-
AWS Glue 2.0에는 이미 AWS 암호화 SDK 브리지 버전이 포함되어 있으므로 AWS Glue 2.0 작업을 AWS Glue 4.0 작업으로 안전하게 업그레이드할 수 있습니다.
-
Spark 마이그레이션 설명서를 참조하세요.
AWS Glue 1.0에서 AWS Glue 4.0으로 마이그레이션
마이그레이션할 때 다음 변경 사항에 유의합니다.
-
AWS Glue 1.0은 오픈 소스 Spark 2.4를 사용하고 AWS Glue 4.0은 Amazon EMR 최적화 Spark 3.3.0을 사용합니다.
-
몇 가지 Spark 변경만으로도 제거된 기능이 참조되지 않도록 스크립트를 수정해야 할 수 있습니다.
-
예를 들어 Spark 3.3.0은 Scala 유형이 지정되지 않은 UDF를 사용하지 않지만 Spark 2.4는 이를 허용합니다.
-
-
AWS Glue 4.0의 모든 작업은 시작 시간이 크게 개선되어 실행됩니다. Spark 작업은 시작 대기 시간이 최대 10분에서 1분으로 단축되어 최소 청구 기간이 10배 더 짧으며 1초 단위로 청구됩니다.
-
AWS Glue 4.0에서는 로깅 동작이 크게 변경되었습니다. Spark 3.3.0의 최소 요구 사항은 Log4j2입니다.
-
부록에서 강조 표시된 여러 종속성 업데이트.
-
Scala도 2.11에서 2.12로 업데이트되었으며 Scala 2.12는 Scala 2.11과 역호환되지 않습니다.
-
Python 3.10은 Python 스크립트에 사용되는 기본 버전이기도 합니다. AWS Glue 0.9는 Python 2만 사용했기 때문입니다.
Python 2.7은 Spark 3.3.0에서 지원되지 않습니다. 작업 구성에서 Python 2를 요청하는 작업은 IllegalArgumentException과 함께 실패합니다.
-
AWS Glue 2.0 이상에서는 pip를 통해 추가 Python 모듈을 설치하는 새로운 메커니즘을 사용할 수 있습니다. 자세한 내용은AWS Glue 2.0+에서 pip를 사용하여 추가 Python 모듈 설치를 참조하세요.
-
AWS Glue 4.0은 Apache YARN에서 실행되지 않으므로 YARN 설정이 적용되지 않습니다.
-
AWS Glue 4.0에는 Hadoop 분산 파일 시스템(HDFS)이 없습니다.
-
기존 AWS Glue 1.0 작업에 제공된 추가 JAR 파일은 1.0에서 4.0의 여러 종속성에서 업그레이드가 있었기 때문에 종속성 충돌을 일으킬 수 있습니다. 이 문제를 방지하기 위해 기본적으로
--user-jars-first
AWS Glue 작업 파라미터를 사용하여 AWS Glue 4.0을 활성화합니다. -
AWS Glue 4.0은 Auto Scaling을 지원합니다. 따라서 auto Scaling이 활성화된 경우 ExecutorAllocationManager 지표를 사용할 수 있습니다.
-
AWS Glue 버전 4.0 작업에서는 작업자 수와 작업자 유형을 지정하지만
maxCapacity
를 지정하지 않습니다. -
AWS Glue 4.0은 아직 기계 학습 변환을 지원하지 않습니다.
-
특정 커넥터를 마이그레이션하려면 AWS Glue 4.0용 커넥터 및 JDBC 드라이버 마이그레이션 섹션을 참조하세요.
-
AWS 암호화 SDK가 1.x에서 2.x로 업그레이드되었습니다. AWS Glue보안 구성을 사용하는 AWS Glue 작업과 런타임에 제공된 AWS 암호화 SDK 종속성에 종속되는 작업이 영향을 받습니다. AWS Glue 작업 마이그레이션 지침을 참조하세요.
-
AWS Glue 0.9/1.0 작업을 AWS Glue 4.0 작업으로 직접 마이그레이션할 수 없습니다. 이는 버전 2.x 이상으로 직접 업그레이드하고 모든 새 기능을 즉시 활성화하면 AWS Encryption SDK가 이전 버전의 AWS Encryption SDK에서 암호화된 사이퍼텍스트를 해독할 수 없기 때문입니다.
-
안전하게 업그레이드하려면 먼저 AWS Encryption SDK 브리지 버전이 포함된 AWS Glue 2.0/3.0 작업으로 마이그레이션하는 것이 좋습니다. 작업을 한 번 실행하여 AWS Encryption SDK 브리지 버전을 활용합니다.
-
완료되면 AWS Glue 2.0/3.0 작업을 AWS Glue 4.0으로 안전하게 마이그레이션할 수 있습니다.
-
Spark 마이그레이션 설명서를 참조하세요.
AWS Glue 0.9에서 AWS Glue 4.0으로 마이그레이션
마이그레이션할 때 다음 변경 사항에 유의합니다.
-
AWS Glue 0.9는 오픈 소스 Spark 2.2.1을 사용하고 AWS Glue 4.0은 Amazon EMR 최적화 Spark 3.3.0을 사용합니다.
-
몇 가지 Spark 변경만으로도 제거된 기능이 참조되지 않도록 스크립트를 수정해야 할 수 있습니다.
-
예를 들어 Spark 3.3.0은 Scala 유형이 지정되지 않은 UDF를 사용하지 않지만 Spark 2.2는 이를 허용합니다.
-
-
AWS Glue 4.0의 모든 작업은 시작 시간이 크게 개선되어 실행됩니다. Spark 작업은 시작 대기 시간이 최대 10분에서 1분으로 단축되어 최소 청구 기간이 10배 더 짧으며 1초 단위로 청구됩니다.
-
AWS Glue 4.0 이후 로깅 동작이 크게 변경되었습니다. Spark 3.3.0에는 여기서(https://spark.apache.org/docs/latest/core-migration-guide.html#upgrading-from-core-32-to-33) 언급한 것처럼 Log4j2의 최소 요구 사항이 있습니다.
-
부록에서 강조 표시된 여러 종속성 업데이트
-
Scala도 2.11에서 2.12로 업데이트되었으며 Scala 2.12는 Scala 2.11과 역호환되지 않습니다.
-
Python 3.10은 Python 스크립트에 사용되는 기본 버전이기도 합니다. AWS Glue 0.9는 Python 2만 사용했기 때문입니다.
-
Python 2.7은 Spark 3.3.0에서 지원되지 않습니다. 작업 구성에서 Python 2를 요청하는 작업은 IllegalArgumentException과 함께 실패합니다.
-
pip를 통해 추가 Python 모듈을 설치하는 새로운 메커니즘을 사용할 수 있습니다.
-
-
AWS Glue 4.0은 Apache YARN에서 실행되지 않으므로 YARN 설정이 적용되지 않습니다.
-
AWS Glue 4.0에는 Hadoop 분산 파일 시스템(HDFS)이 없습니다.
-
기존 AWS Glue 0.9 작업에 제공된 추가 JAR 파일은 0.9에서 3.0의 여러 종속성에서 업그레이드가 있었기 때문에 종속성 충돌을 일으킬 수 있습니다. AWS Glue 3.0에서
--user-jars-first
AWS Glue 작업 파라미터를 사용하여 클래스 경로 충돌을 피할 수 있습니다. -
AWS Glue 4.0은 Auto Scaling을 지원합니다. 따라서 auto Scaling이 활성화된 경우 ExecutorAllocationManager 지표를 사용할 수 있습니다.
-
AWS Glue 버전 4.0 작업에서는 작업자 수와 작업자 유형을 지정하지만
maxCapacity
를 지정하지 않습니다. -
AWS Glue 4.0은 아직 기계 학습 변환을 지원하지 않습니다.
-
특정 커넥터를 마이그레이션하려면 AWS Glue 4.0용 커넥터 및 JDBC 드라이버 마이그레이션 섹션을 참조하세요.
-
AWS 암호화 SDK가 1.x에서 2.x로 업그레이드되었습니다. AWS Glue보안 구성을 사용하는 AWS Glue 작업과 런타임에 제공된 AWS 암호화 SDK 종속성에 종속되는 작업이 영향을 받습니다. AWS Glue 작업 마이그레이션 지침을 참조하세요.
-
AWS Glue 0.9/1.0 작업을 AWS Glue 4.0 작업으로 직접 마이그레이션할 수 없습니다. 이는 버전 2.x 이상으로 직접 업그레이드하고 모든 새 기능을 즉시 활성화하면 AWS Encryption SDK가 이전 버전의 AWS Encryption SDK에서 암호화된 사이퍼텍스트를 해독할 수 없기 때문입니다.
-
안전하게 업그레이드하려면 먼저 AWS Encryption SDK 브리지 버전이 포함된 AWS Glue 2.0/3.0 작업으로 마이그레이션하는 것이 좋습니다. 작업을 한 번 실행하여 AWS Encryption SDK 브리지 버전을 활용합니다.
-
완료되면 AWS Glue 2.0/3.0 작업을 AWS Glue 4.0으로 안전하게 마이그레이션할 수 있습니다.
-
Spark 마이그레이션 설명서를 참조하세요.
AWS Glue 4.0용 커넥터 및 JDBC 드라이버 마이그레이션
업그레이드된 JDBC 및 데이터 레이크 커넥터 버전은 다음을 참조하세요.
Hudi
-
Spark SQL 지원 개선 사항:
-
Call Procedure
명령을 통해 업그레이드, 다운그레이드, 부트스트랩, 정리 및 복구에 대한 지원이 추가되었습니다. Spark SQL에서는Create/Drop/Show/Refresh Index
구문이 가능합니다. -
Spark SQL과 달리 Spark DataSource를 통한 사용 간 성능 격차가 좁혀졌습니다. 과거에는 데이터 소스 쓰기가 SQL보다 빨랐습니다.
-
모든 기본 제공 키 생성기는 성능이 우수한 Spark 전용 API 작업을 구현합니다.
-
대량
insert
작업에서 UDF 변환을 RDD 변환으로 대체하여 SerDe 사용 비용을 줄였습니다. -
Hudi에서 Spark SQL을 사용하려면 SQL 문에서
primaryKey
를tblproperites
또는 옵션으로 지정해야 합니다. 업데이트 및 삭제 작업의 경우에도preCombineField
가 필요합니다.
-
-
primaryKey
없이 버전 0.10.0 이전에 생성한 Hudi 테이블은 버전 0.10.0 이후의primaryKey
필드를 사용하여 다시 생성해야 합니다.
PostgreSQL
-
여러 취약점(CVE)이 해결되었습니다.
-
Java 8은 기본적으로 지원됩니다.
-
작업에서 바이트 배열을 제외한 배열 배열을 사용하는 경우 이 시나리오를 다차원 배열로 간주할 수 있습니다.
MongoDB
-
현재 MongoDB 커넥터는 Spark 버전 3.1 이상과 MongoDB 버전 4.0 이상을 지원합니다.
-
커넥터 업그레이드로 인해 몇 가지 속성 이름이 변경되었습니다. 예를 들어 URI 속성 이름이
connection.uri
로 변경되었습니다. 현재 옵션에 대한 자세한 내용은 MongoDB Spark 커넥터 블로그를 참조하세요. -
Amazon DocumentDB에서 호스팅하는 MongoDB 4.0을 사용하면 기능상 몇 가지 차이점이 있습니다. 자세한 내용은 다음 주제를 참조하십시오.
-
“파티셔너” 옵션은
ShardedPartitioner
,PaginateIntoPartitionsPartitioner
및SinglePartitionPartitioner
로 제한됩니다. 스테이지 오퍼레이터가 MongoDB API를 지원하지 않기 때문에 Amazon DocumentDB에는 기본값SamplePartitioner
및PaginateBySizePartitioner
를 사용할 수 없습니다. 자세한 내용은 지원되는 MongoDB API, 작업 및 데이터 형식을 참조하세요.
Delta Lake
-
Delta Lake는 이제 SQL에서 시간 여행
을 지원하여 오래된 데이터를 쉽게 쿼리할 수 있습니다. 이번 업데이트를 통해 이제 Spark SQL과 DataFrame API를 통해 시간 여행을 사용할 수 있습니다. SQL에서 현재 버전의 TIMESTAMP에 대한 Support 추가되었습니다. -
Spark 3.3에는 배치 쿼리를 위한
Trigger.Once
와 동일한 방식으로 스트리밍 쿼리를 실행할 수 있는 Triggger.AvailableNow가 도입되었습니다. 이 지원은 Delta 테이블을 스트리밍 소스로 사용하는 경우에도 사용할 수 있습니다. -
테이블의 열 목록을 반환하는 SHOW COLUMNS를 지원합니다.
-
Scala 및 Python DeltaTable API에서 DESCRIBE DETAIL
을 지원합니다. DeltaTable API 또는 Spark SQL을 사용하여 Delta 테이블에 대한 세부 정보를 검색합니다. -
SQL Delete
, Merge 및 Update 명령에서 작업 지표 반환을 지원합니다. 이전에는 이러한 SQL 명령이 빈 DataFrame을 반환했지만 이제 수행된 작업에 대한 유용한 지표가 포함된 DataFrame을 반환합니다. -
성능 개선 최적화:
-
여러 개의 작은 파일을 압축할 때 성능을 높이려면 Optimize 명령에서
coalesce(1)
대신repartition(1)
을 사용하도록spark.databricks.delta.optimize.repartition.enabled=true
구성 옵션을 설정합니다. -
큐 기반 접근 방식을 사용하여 압축 작업을 병렬화하여 성능을 개선했습니다
.
-
-
기타 주요 변경 사항:
-
VACUUUM 및 OPTIMIZE SQL 명령에서 변수 사용을 지원합니다
. -
카탈로그 테이블을 통한 CONVERT TO DELTA 관련 개선 사항은 다음과 같습니다.
-
제공되지 않은 경우 카탈로그에서 파티션 스키마를 자동으로 채웁니다
. -
전체 디렉터리 스캔을 수행하는 대신 카탈로그의 파티션 정보를 사용하여
커밋할 데이터 파일을 찾습니다. 테이블 디렉터리의 모든 데이터 파일을 커밋하는 대신 활성 파티션의 디렉터리에 있는 데이터 파일만 커밋됩니다.
-
-
DROP COLUMN 및 RENAME COLUMN을 사용하지 않은 경우 열 매핑이 가능한 테이블에 대한 CDF(Change Data Feed) 배치 읽기를 지원합니다
. 자세한 내용은 Delta Lake 설명서 를 참조하세요. -
첫 번째 통과에서 스키마 프루닝을 활성화하여 Update 명령 성능을 개선합니다
.
-
Apache Iceberg
-
스캔 계획 및 Spark 쿼리에 대한 몇 가지 성능 개선 사항
이 추가되었습니다. -
변경 기반 커밋을 사용하여 서비스 측의 커밋 충돌을 해결하는 일반 REST 카탈로그 클라이언트를 추가했습니다.
-
AS OF
SQL 시간 여행 쿼리 구문이 지원됩니다. -
MERGE 및 UPDATE 쿼리에 대한 읽기 중 병합 지원을 추가했습니다.
-
Z축을 통한 파티션 재작성 지원을 추가했습니다.
-
Theta 스케치
또는 블룸 필터와 같은 대형 통계 및 인덱스 blob을 위한 형식인 Puffin의 사양 및 구현을 추가했습니다. -
데이터를 점진적으로 소비하기 위한 새 인터페이스를 추가했습니다(추가 및 변경 로그 스캔 모두).
-
대량 작업 및 FileIO 인터페이스에 대한 범위 읽기 지원이 추가되었습니다.
-
메타데이터 트리에서 삭제 파일을 표시하는 메타데이터 테이블을 더 추가했습니다.
-
드롭 테이블 동작이 변경되었습니다. Iceberg 0.13.1에서
DROP TABLE
을 실행하면 카탈로그에서 테이블이 제거되고 테이블 내용도 삭제됩니다. Iceberg 1.0.0에서DROP TABLE
은 카탈로그에서만 테이블을 제거합니다. 테이블 내용을 삭제하려면DROP TABLE PURGE
를 사용합니다. -
Parquet 벡터화된 읽기는 Iceberg 1.0.0에서 기본적으로 활성화됩니다. 벡터화된 읽기를 비활성화하려면
read.parquet.vectorization.enabled
를false
로 설정합니다.
Oracle
변경 사항은 미미합니다.
MySQL
변경 사항은 미미합니다.
Amazon Redshift
AWS Glue 4.0에는 새로운 JDBC 드라이버가 포함된 새로운 Amazon Redshift 커넥터가 있습니다. 향상된 기능 및 이전 AWS Glue 버전에서 마이그레이션하는 방법에 대한 자세한 내용은 Redshift 연결 섹션을 참조하세요.
부록 A: 중요한 종속성 업그레이드
다음은 종속성 업그레이드입니다.
종속성 | AWS Glue 4.0 버전 | AWS Glue 3.0 버전 | AWS Glue 2.0 버전 | AWS Glue 1.0 버전 |
---|---|---|---|---|
Spark | 3.3.0-amzn-1 | 3.1.1-amzn-0 | 2.4.3 | 2.4.3 |
Hadoop | 3.3.3-amzn-0 | 3.2.1-amzn-3 | 2.8.5-amzn-5 | 2.8.5-amzn-1 |
Scala | 2.12 | 2.12 | 2.11 | 2.11 |
Jackson | 2.13.3 | 2.10.x | 2.7.x | 2.7.x |
Hive | 2.3.9-amzn-2 | 2.3.7-amzn-4 | 1.2 | 1.2 |
EMRFS | 2.54.0 | 2.46.0 | 2.38.0 | 2.30.0 |
Json4s | 3.7.0-M11 | 3.6.6 | 3.5.x | 3.5.x |
화살표 | 7.0.0 | 2.0.0 | 0.10.0 | 0.10.0 |
AWS Glue 데이터 카탈로그 클라이언트 | 3.7.0 | 3.0.0 | 1.10.0 | N/A |
Python | 3.10 | 3.7 | 2.7 및 3.6 | 2.7 및 3.6 |
Boto | 1.26 | 1.18 | 1.12 | N/A |
부록 B: JDBC 드라이버 업그레이드
다음은 JDBC 드라이버 업그레이드입니다.
드라이버 | 과거 AWS Glue 버전의 JDBC 드라이버 버전 | AWS Glue 3.0의 JDBC 드라이버 버전 | AWS Glue 4.0의 JDBC 드라이버 버전 |
---|---|---|---|
MySQL | 5.1 | 8.0.23 | 8.0.23 |
Microsoft SQL Server | 6.1.0 | 7.0.0 | 9.4.0 |
Oracle Database | 11.2 | 21.1 | 21.7 |
PostgreSQL | 42.1.0 | 42.2.18 | 42.3.6 |
MongoDB | 2.0.0 | 4.0.0 | 4.7.2 |
Amazon Redshift |
redshift-jdbc41-1.2.12.1017 |
redshift-jdbc41-1.2.12.1017 |
redshift-jdbc42-2.1.0.16 |
부록 C: 커넥터 업그레이드
다음은 커넥터 업그레이드입니다.
드라이버 | AWS Glue 3.0의 커넥터 버전 | AWS Glue 4.0의 커넥터 버전 |
---|---|---|
MongoDB | 3.0.0 | 10.0.4 |
Hudi | 0.10.1 | 0.12.1 |
Delta Lake | 1.0.0 | 2.1.0 |
Iceberg | 0.13.1 | 1.0.0 |
DynamoDB | 1.11 | 1.12 |