주요 컨텐츠로 이동

PySpark 네이티브 플로팅

PySpark 데이터프레임에서 직접 시각화를 쉽게 생성하세요

PySpark UDF Unified Profiling

Published: June 9, 2025

오픈 소스1분 이내 소요

Summary

  • PySpark Native Plotting 소개: 이 블로그는 PySpark에서 내장 시각화 기능의 필요성을 설명하며, Spark에서의 Pandas API와 기본 pandas 데이터프레임에서 사용자가 기대하는 기능과 일치합니다.
  • 주요 기능 및 기능: 우리는 다양한 지원 플롯 유형, PySpark 플로팅이 효율적인 데이터 처리 전략(예: 샘플링, 글로벌 메트릭)을 활용하는 방법, 그리고 시각화를 위한 Plotly와의 통합을 설명합니다.
  • 실용적인 예시: 우리는 실용적인 예시를 통해 PySpark plotting을 보여주며, 시각화를 생성하고 사용자 정의하는 방법을 안내하고, 플롯에서 얻은 행동 가능한 인사이트를 강조합니다.

소개

Databricks 런타임 17.0과 함께 PySpark에서의 기본 플로팅을 소개하게 되어 매우 기쁩니다(릴리스 노트). 이는 데이터 시각화에 있어서 흥미진진한 도약입니다. 이제 데이터를 시각화하기 위해 도구 간에 왔다갔다 할 필요가 없습니다. PySpark 데이터프레임에서 직접 아름답고 직관적인 플롯을 생성할 수 있습니다. 빠르고, 매끄럽고, 바로 통합되어 있습니다. 이 오랫동안 기다려온 기능은 데이터 탐색을 이전보다 더 쉽고 강력하게 만듭니다.

PySpark에서 대규모 데이터를 다루는 것은 항상 강력했으며, 특히 대규모 데이터셋을 변환하고 분석하는 데 있어서입니다. PySpark 데이터프레임은 규모와 성능을 위해 구축되었지만, 사용자들은 이를 Apache Spark™의 Pandas API 데이터프레임으로 변환하여 그래프를 생성해야 했습니다. 하지만 이 추가 단계로 인해 시각화 작업 흐름이 불필요하게 복잡해졌습니다. PySpark와 pandas 스타일 데이터프레임의 구조 차이는 종종 마찰을 일으켜 데이터를 시각적으로 탐색하는 과정을 느리게 만들었습니다.

예제

다음은 PySpark Plotting을 사용하여 다양한 제품 카테고리에 걸친 판매, 이익, 이익 마진을 분석하는 예입니다.

다음과 같이 표시된 다른 제품 카테고리에 대한 판매 및 이익 데이터를 포함하는 데이터프레임으로 시작합니다:

우리의 목표는 매출과 이익 사이의 관계를 시각화하는 것이며, 이익 마진을 추가적인 시각적 차원으로 포함시켜 분석을 더 의미있게 만드는 것입니다. 다음은 그래프를 생성하는 코드입니다:

“fig”는 “plotly.graph_objs._figure.Figure” 타입임을 주의하세요. 기존 Plotly 기능을 사용하여 레이아웃을 업데이트함으로써 그 모양을 개선할 수 있습니다. 조정된 그림은 다음과 같습니다:

그림에서 판매량과 이익 사이의 명확한 관계를 다양한 카테고리에서 관찰할 수 있습니다. 예를 들어, 전자제품은 상대적으로 적당한 이익률로 높은 판매량과 이익을 보여주며, 강력한 수익 창출을 나타내지만 효율성을 향상시킬 여지를 보여줍니다.

PySpark 플로팅의 특징

사용자 인터페이스

사용자는 PySpark DataFrame에 plot 속성을 호출하여 PySpark Plotting과 상호 작용하고, 원하는 플롯 유형을 하위 메소드로 지정하거나 “kind” 매개변수를 설정함으로써 지정합니다. 예를 들어:

또는 동등하게:

이 디자인은 Apache Spark에서의 Pandas API와 기본 pandas의 인터페이스와 일치하며, pandas 플로팅에 이미 익숙한 사용자들에게 일관되고 직관적인 경험을 제공합니다.

지원되는 그래프 유형

PySpark Plotting은 선, 막대(가로 포함), 영역, 산점도, 파이, 박스, 히스토그램, 밀도/KDE 플롯 등 다양한 일반 차트 유형을 지원합니다. 이를 통해 사용자는 PySpark DataFrames에서 직접 추세, 분포, 비교, 관계를 시각화할 수 있습니다.

내부

이 기능은 Plotly (버전 4.8 이상)를 기본 시각화 백엔드로 사용하여 풍부하고 상호 작용적인 그래프 기능을 제공하며, 대부분의 그래프에 대한 데이터 처리는 내부적으로 pandas 를 사용합니다.

플롯 유형에 따라, PySpark Plotting에서의 데이터 처리는 세 가지 전략 중 하나를 통해 처리됩니다:

  • 상위 N 행: 플로팅 과정은 DataFrame에서 제한된 수의 행을 사용합니다(기본값: 1000). 이는 “spark.sql.pyspark.plotting.max_rows”를 사용하여 구성할 수 있습니다. 옵션, 빠른 인사이트를 위해 효율적입니다. 이는 막대 그래프, 수평 막대 그래프, 파이 그래프에 적용됩니다.
  • 표본 추출: 무작위 표본 추출은 전체 데이터셋을 처리하지 않고도 전반적인 분포를 효과적으로 나타냅니다. 이를 통해 대표성을 유지하면서 확장성을 보장합니다. 이는 면적 그래프, 선 그래프, 산점도 그래프에 적용됩니다.
  • 글로벌 메트릭: 박스 플롯, 히스토그램, 밀도/KDE 플롯의 경우, 계산은 전체 데이터셋에서 수행됩니다. 이를 통해 데이터 분포의 정확한 표현이 가능하며, 통계적 정확성을 보장합니다.

이 접근법은 각 플롯 유형에 대한 Apache Spark에서의 Pandas API 플로팅 전략을 존중하며, 추가적인 성능 향상을 제공합니다:

  • 샘플링: 이전에는 샘플링 비율을 계산하기 위해 전체 데이터셋을 두 번 통과해야 했고, 실제 샘플링을 수행해야 했습니다. 우리는 샘플링 기반의 새로운 방법을 구현하여, 이를 단일 패스로 줄였습니다.
  • 서브플롯: 각 열이 서브플롯에 해당하는 경우, 이제 모든 열에 대한 메트릭을 함께 계산하여 효율성을 향상시킵니다.
  • ML 기반 플롯: 이러한 플롯에 대해 전용 내부 SQL 표현식을 도입하여, 코드 생성과 같은 SQL 측 최적화를 가능하게 했습니다.

결론

PySpark Native Plotting은 PySpark와 직관적인 데이터 시각화 사이의 격차를 메웁니다. 이 기능은 PySpark 사용자가 PySpark 데이터프레임에서 직접 고품질의 플롯을 생성할 수 있게 하여, 데이터 분석을 이전보다 더 빠르고 접근하기 쉽게 만듭니다. Databricks Runtime 17.0에서 이 기능을 시험해 보고 데이터 시각화 경험을 향상시켜 보세요!

더 탐색해 볼 준비가 되셨나요? PySpark API 문서를 확인하여 자세한 가이드와 예시를 참조하세요.

 

(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

게시물을 놓치지 마세요

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