주요 컨텐츠로 이동

PySpark - 2023년 한 해를 돌아보며

PySpark in 2023: A Year in Review

(번역: Youngkyong Ko) Original Post

2023년에 출시된 Apache Spark 3.4와 3.5에서는 PySpark의 성능, 유연성, 사용 편의성을 개선하는 데 중점을 두었습니다. 이 블로그 게시물에서는 주요 개선 사항을 안내합니다.

다음은 2023년에 Apache Spark 3.4와 3.5에 추가된 가장 중요한 기능 중 몇 가지를 요약한 것입니다:

  • Spark Connect는 분리된 클라이언트-서버 아키텍처를 도입하여 모든 애플리케이션에서 Spark 클러스터에 원격으로 연결할 수 있습니다. 따라서 안정성과 업그레이드 가능성, 관찰 가능성이 향상되는 동시에, Spark as a service가 활성화됩니다.
  • Arrow에 최적화된 Python 사용자 정의 함수(UDF)를 통해 Arrow 컬럼 기반 형식을 활용하여 일반 Python UDF의 성능을 두 배로 향상시킴으로써 효율성의 비약적인 발전을 보여주었습니다.
  • Python 사용자 정의 테이블 함수(UDTF)를 통해 이제 사용자는 PySpark에서 기본적으로 테이블 기반 변환을 수행할 수 있습니다.
  • GROUP BY ALL 및 ORDER BY ALL과 같은 새로운 Spark SQL 기능이 도입되었으며, 이 기능들은 모두 PySpark에서 기본적으로 사용할 수 있습니다.
  • 파이썬 임의 상태 저장 처리는 스트리밍 쿼리에서 임의의 상태를 유지할 수 있는 기능을 제공합니다.
  • TorchDistributor는 아파치 스파크 클러스터에서 분산된 파이토치 트레이닝을 지원합니다.
  • 새로운 테스트 API는 PySpark 애플리케이션을 효과적으로 테스트하고 개발자가 고품질 코드를 생성할 수 있도록 도와줍니다.
  • English SDK는 일반 영어 명령을 PySpark 및 SQL로 변환하여 개발자의 생산성을 높일 수 있는 LLM 기반 프로그래밍 접근 방식입니다.

다음 섹션에서는 각각을 살펴보고 몇 가지 주목할 만한 추가 개선 사항에 대해 설명합니다.

Apache Spark 3.5 및 3.4: 기능 심층 분석

Spark Connect: : Apache Spark의 원격 연결

Apache Spark 3.4에서 처음 선보인 Spark Connect는 모든 애플리케이션에서 어디서나 실행 중이든지 Spark 클러스터에 원격으로 연결할 수 있는 분리된 클라이언트-서버 아키텍처를 도입했습니다. 이렇게 클라이언트와 서버를 분리함으로써 최신 데이터 애플리케이션, IDE, 노트북, 프로그래밍 언어가 대화형으로 Spark에 액세스할 수 있습니다. 또한, 분리된 아키텍처는 안정성, 업그레이드 가능성, 디버깅 가능성 및 관찰 가능성을 향상시킵니다.

Apache Spark 3.5에서는 Scala 지원이 완료되었으며, 구조화된 스트리밍(SPARK-42938), ML 및 PyTorch(SPARK-42471), Spark의 Pandas API(SPARK-42497) 등 주요 Spark 구성 요소에 대한 지원도 추가되었습니다.

데이터브릭스에서 Spark Connect를 사용하려면 Databricks Connect를 사용하거나 또는 Apache Spark에 직접 Spark Connect를 사용하세요.

Arrow에 최적화된 Python UDF: Python UDF의 성능 향상하기

Arrow에 최적화된 Python UDF(SPARK-40307)는 Arrow 컬럼 기반 형식을 활용하여 상당한 성능 최적화를 가능하게 합니다. 예를 들어, 동일한 클러스터에서 UDF를 체인으로 연결할 경우, 32GB 데이터 세트에서 Arrow에 최적화된 Python UDF는 피클된 Python UDF보다 약 1.9배 더 빠르게 실행됩니다.

파이썬 UDTF

Apache Spark 3.5에서는 단일 스칼라 결과 값 대신 테이블을 출력으로 반환하는 사용자 정의 테이블 함수를 통해 PySpark의 UDF 지원을 확장했습니다. 이 UDTF를 등록하면 SQL 쿼리의 FROM 절에서 사용할 수 있습니다. 예를 들어, UDTF SquareNumbers는 입력값과 그 제곱값을 테이블로 출력합니다:

새로운 SQL 기능

PySpark 주요 이점 중 하나는 Spark SQL이 PySpark 데이터프레임과 원활하게 작동한다는 것입니다. 2023년에 Spark SQL은 spark.sql을 통해 직접 활용할 수 있는 많은 새로운 기능을 도입했습니다. GROUP BY ALLORDER BY ALL, 일반 테이블 값 함수 지원, INSERT BY NAME, PIVOTMELT, ANSI 준수 등이 그 예입니다. 다음은 GROUP BY ALL 및 ORDER BY ALL 사용 예시입니다:

파이썬 임의 상태 저장 처리(arbitrary stateful processing)

구조화된 스트리밍에서의 파이썬 임의 상태 저장 작업은 스트리밍 쿼리 실행 전반에 걸쳐 상태 처리를 허용함으로써 PySpark에서 수많은 실시간 분석 및 머신 러닝 사용 사례를 가능하게 합니다. 다음 예제는 임의 상태 저장 처리를 보여줍니다:

TorchDistributor: PyTorch 네이티브 통합

TorchDistributor는 PySpark에서 PyTorch에 대한 네이티브 지원을 제공하여, Spark 클러스터에서 딥러닝 모델의 분산 학습을 가능하게 합니다. 이 도구는 PyTorch 프로세스를 시작하고 분산처리 메커니즘은 PyTorch에 맡겨 프로세스가 코디네이트 되도록 하는 역할만 수행합니다.

TorchDistributor 사용이 간편하며 몇 가지 주요 설정만 고려하면 됩니다:

Testing API: PySpark 데이터프레임에 대한 더 쉬운 테스트

pyspark.testing 패키지의 새로운 테스트 API(SPARK-44042)는 PySpark 애플리케이션을 테스트하는 개발자를 위해 크게 개선된 기능을 제공합니다. 자세한 오류 메시지와 함께 동등성 테스트를 위한 유틸리티 함수를 제공하여 데이터프레임 스키마와 데이터의 불일치를 더 쉽게 식별할 수 있습니다. 아래 예제 출력은 이를 보여줍니다:

English SDK:  프로그래밍 언어로서의 영어

Apache Spark의 English SDK는 사용자가 일반 영어로 명령을 입력한 다음 이를 PySpark 및 Spark SQL 코드로 변환할 수 있도록 하여 사용을 간소화합니다. 이를 통해 특히 데이터 프레임 변환 작업, 데이터 수집 및 UDF와 관련된 코드에서 PySpark 프로그래밍에 더 쉽게 접근할 수 있으며 캐싱 덕분에 생산성을 더욱 높일 수 있습니다. English SDK는 개발 프로세스를 간소화하고 코드 복잡성을 최소화하며 Spark 커뮤니티의 범위를 확장할 수 있는 큰 잠재력을 가지고 있습니다. 직접 사용해 보세요!

기타 주목할 만한 개선 사항

Apache Spark 3.4와 3.5에 도입된 몇 가지 다른 기능들입니다. 아직 익숙하지 않으시다면 한번 살펴보시기 바랍니다:

회고와 전망

2023년에는 오픈 소스 커뮤니티의 활발한 혁신이 PySpark와 Apache Spark를 크게 강화하여 데이터 전문가가 사용할 수 있는 도구 키트를 넓히고 분석 워크플로우를 간소화했습니다. 곧 출시될 Apache Spark 4.0에서, PySpark는 새로운 기능과 향상된 성능을 통해 데이터 처리를 더욱 혁신하고 데이터 엔지니어링 및 데이터 사이언스 커뮤니티 내에서 데이터 분석을 발전시키기 위한 노력을 더욱 공고히 할 준비가 되어 있습니다.

새로운 기능 시작하기

이 포스팅에서는 2023년에 Apache Spark 3.4와 3.5에서 사용 편의성, 성능 및 유연성을 향상시키기 위해 개선된 가장 중요한 기능들에 대한 간략한 개요를 살펴 보았습니다. 이 모든 기능은 데이터브릭스 런타임 13과 14에서 사용할 수 있습니다. 지금 바로 이 새로운 기능들을 직접 사용해 보시는 것은 어떨까요?

게시물을 놓치지 마세요

관심 있는 카테고리를 구독하고 최신 게시물을 받은편지함으로 받아보세요

다음은 무엇인가요?

Booting Databricks VMs 7x Faster for Serverless Compute

데이터 엔지니어링

November 25, 2024/1분 이내 소요

서버리스 컴퓨팅을 위한 Databricks VM 7배 빠른 부팅

How automated workflows are revolutionizing the manufacturing industry

제품

November 26, 2024/6분 소요

How automated workflows are revolutionizing the manufacturing industry