다음을 통해 공유


패브릭 런타임 1.2(GA)

Microsoft Fabric 런타임은 데이터 엔지니어링 및 데이터 과학 환경을 실행하고 관리할 수 있도록 하는 Apache Spark를 기반으로 하는 Azure 통합 플랫폼입니다. 이 문서에서는 런타임 1.2 구성 요소 및 버전을 다룹니다.

런타임 1.2의 주요 구성 요소는 다음과 같습니다.

  • Apache Spark 3.4.1
  • 운영 체제: Mariner 2.0
  • Java: 11
  • Scala: 2.12.17
  • Python: 3.10
  • Delta Lake: 2.4.0
  • R: 4.2.2

현재 런타임 1.3인 프로덕션 워크로드에 대해 항상 가장 최근의 GA 런타임 버전을 사용합니다.

런타임 버전을 선택하는 방법을 보여 주는 스크린샷

Microsoft Fabric Runtime 1.2에는 전체 Anaconda 설치 및 Java/Scala, Python 및 R용으로 일반적으로 사용되는 라이브러리를 비롯한 기본 수준 패키지 컬렉션이 함께 제공됩니다. 이러한 라이브러리는 Microsoft Fabric 플랫폼에서 Notebook 또는 작업을 사용할 때 자동으로 포함됩니다. 전체 라이브러리 목록은 설명서를 참조하세요. Microsoft Fabric은 런타임 1.2에 대한 유지 관리 업데이트를 주기적으로 롤아웃하여 버그 수정, 성능 향상 및 보안 패치를 제공합니다. 최신 상태를 유지하면 데이터 처리 작업에 대한 최적의 성능과 안정성이 보장됩니다.

Spark 릴리스 3.4.1의 새로운 기능 및 개선 사항

Apache Spark 3.4.0은 3.x 라인의 다섯 번째 릴리스입니다. 오픈 소스 커뮤니티가 주도하는 이 릴리스는 2,600장 이상의 Jira 티켓을 확인했습니다. Spark Connect용 Python 클라이언트를 도입하고 비동기 진행률 추적 및 Python 상태 저장 처리를 통해 구조적 스트리밍을 향상시킵니다. NumPy 입력 지원을 사용하여 Pandas API 범위를 확장하고 ANSI 규정 준수 및 새로운 기본 제공 함수를 통해 기존 데이터 Warehouse에서 마이그레이션을 간소화합니다. 또한 메모리 프로파일링을 사용하여 개발 생산성 및 디버깅 기능을 향상시킵니다. 또한 런타임 1.2는 안정성 수정에 초점을 맞춘 유지 관리 릴리스인 Apache Spark 3.4.1을 기반으로 합니다.

주요 하이라이트

Spark 3.4.0Spark 3.4.1을 모두 방문하여 특정 Apache Spark 버전에 대한 릴리스 정보의 전체 버전을 읽어봅니다.

새 사용자 지정 쿼리 최적화

Spark에서 동시 쓰기 지원

SQL INSERT INTO 쿼리를 사용하여 동일한 테이블에 병렬 데이터 삽입을 수행할 때 'Operation failed: The specified path doesn't exist'라는 메시지와 함께 404 오류가 발생하는 것은 일반적인 문제입니다. 이 에러로 인해 데이터가 손실될 수 있습니다. 새로운 기능인 파일 출력 커밋자 알고리즘은 이 문제를 해결하여 고객이 병렬 데이터 삽입을 원활하게 수행할 수 있도록 합니다.

이 기능에 액세스하려면 기본적으로 런타임 1.2(Spark 3.4)부터 사용하도록 설정된 spark.sql.enable.concurrentWrites 기능 플래그를 사용하도록 설정합니다. 이 기능은 다른 Spark 3 버전에서도 사용할 수 있지만 기본적으로 사용하도록 설정되지는 않습니다. 이 기능은 각 동시 작업이 동일한 테이블의 다른 파티션에 있는 데이터를 동적으로 덮어쓰는 INSERT OVERWRITE 쿼리의 병렬 실행을 지원하지 않습니다. 이를 위해 Spark는 spark.sql.sources.partitionOverwriteMode 설정을 동적으로 구성 하여 활성화할 수 있는 대체 기능을 제공합니다.

실패한 작업에서 파일을 건너뛰는 스마트 읽기

현재 Spark 커밋자 시스템에서 테이블 작업에 삽입이 실패하지만 일부 작업이 성공하면 성공한 작업에서 생성된 파일이 실패한 작업의 파일과 공존합니다. 이러한 공존은 성공 작업과 실패한 작업에 속하는 파일을 구분하기가 어려워짐에 따라 사용자에게 혼란을 야기할 수 있습니다. 또한 한 작업이 테이블에서 읽는 동안 다른 작업이 동일한 테이블에 동시에 데이터를 삽입하는 경우 읽기 작업은 커밋되지 않은 데이터에 액세스할 수 있습니다. 쓰기 작업이 실패하면 읽기 작업이 잘못된 데이터를 처리할 수 있습니다.

spark.sql.auto.cleanup.enabled 플래그는 새 기능을 제어하여 이 문제를 해결합니다. 이 설정을 동적으로 구성하면 Spark는 spark.read를 수행하거나 테이블에서 쿼리를 선택할 때 커밋되지 않은 파일 읽기를 자동으로 건너뛰게 됩니다. 이 기능을 사용하도록 설정하기 전에 작성된 파일은 평소와 같이 계속 읽습니다.

표시되는 변경 내용은 다음과 같습니다.

  • 이제 모든 파일에는 해당 파일 이름에 tid-{jobID} 식별자가 포함 됩니다.
  • 작업이 성공적으로 완료되면 일반적으로 출력 위치에 생성된 _success 표식 대신 새 _committed_{jobID} 표식이 생성됩니다. 이 표식은 성공한 작업 ID를 특정 파일 이름과 연결합니다.
  • 사용자가 정기적으로 실행하여 스토리지를 관리하고 커밋되지 않은 파일을 정리할 수 있는 새로운 SQL 명령을 도입했습니다. 이 명령의 구문은 다음과 같습니다.
    • 특정 디렉터리를 정리하려면 CLEANUP ('/path/to/dir') [RETAIN number HOURS];을 수행합니다.
    • 특정 테이블을 정리: CLEANUP [db_name.]table_name [RETAIN number HOURS]; 이 구문에서 path/to/dir는 정리가 필요한 위치 URI를 나타내며 number는 보존 기간을 나타내는 이중 유형 값입니다. 기본 보존 기간은 7일로 설정됩니다.
  • spark.sql.deleteUncommittedFilesWhileListing이라는 새로운 구성 옵션을 도입했으며, 이 옵션은 기본적으로 false로 설정되어 있습니다. 이 옵션을 사용하도록 설정하면 읽기 중에 커밋되지 않은 파일이 자동으로 삭제되지만 이 시나리오로 인해 읽기 작업이 느려질 수 있습니다. 이 플래그를 사용하도록 설정하는 대신 클러스터가 유휴 상태일 때 정리 명령을 수동으로 실행하는 것이 좋습니다.

런타임 1.1에서 런타임 1.2로 마이그레이션 가이드

Apache Spark 3.3으로 구동되는 런타임 1.1에서 Apache Spark 3.4로 구동되는 런타임 1.2로 마이그레이션하는 경우 공식 마이그레이션 가이드를 검토합니다.

Delta Lake 2.4의 새로운 기능 및 개선 사항

Delta Lake는 데이터 Lake를 기반으로 Lakehouse 아키텍처를 빌드할 수 있는 오픈 소스 프로젝트입니다. Delta Lake는 ACID 트랜잭션을 제공하고, 확장 가능한 메타데이터를 처리하고, 기존 데이터 레이크 위에서 스트리밍일괄 처리 데이터 처리를 통합합니다.

특히 Delta Lake는 다음을 제공합니다.

  • Spark의 ACID 트랜잭션: 직렬화 가능한 격리 수준은 판독기에서 일관되지 않은 데이터를 볼 수 없도록 합니다.
  • 확장 가능한 메타데이터 처리: Spark 분산 처리 능력을 활용하여 수십억 개의 파일이 있는 페타바이트 규모의 테이블에 대한 모든 메타데이터를 쉽게 처리합니다.
  • 스트리밍일괄 처리 통합: Delta Lake의 테이블은 배치 테이블과 스트리밍 소스 및 싱크입니다. 스트리밍 데이터 수집, 일괄 처리 기록 백필 및 대화형 쿼리 모두 즉시 작동합니다.
  • 스키마 적용: 수집 중에 잘못된 레코드가 삽입되지 않도록 스키마 변형을 자동으로 처리합니다.
  • 시간 이동: 데이터 버전 관리 기능을 사용하면 롤백, 전체 기록 감사 내역 및 재현 가능한 기계 학습 실험을 사용할 수 있습니다.
  • upsert삭제: 병합, 업데이트 및 삭제 작업을 지원하여 변경 데이터 캡처, SCD(느린 변경 차원) 작업, 스트리밍 upsert 등과 같은 복잡한 사용 사례를 사용하도록 설정합니다.

Delta Lake 2.4에 대한 릴리스 정보의 전체 버전을 읽어 보세요.

Java, Scala, Python 라이브러리에 대한 기본 수준 패키지

Java, Scala, Python 및 해당 버전에 대한 모든 기본 수준 패키지 목록은 릴리스 정보를 참조하세요.