Azure Databricks의 PySpark

Azure Databricks는 빅 데이터 및 기계 학습을 위한 통합 분석 엔진인 Apache Spark를 기반으로 합니다. PySpark를 사용하면 학습, 구현 및 유지 관리가 용이한 유연한 언어인 Python 프로그래밍 언어를 사용하여 Apache Spark와 인터페이스할 수 있습니다. 또한 Databricks에서 데이터 시각화를 위한 다양한 옵션을 제공합니다. PySpark는 Python과 Apache Spark의 기능을 결합합니다.

이 문서에서는 Databricks에서 PySpark의 기본 사항에 대한 개요를 제공합니다.

Spark 개념 소개

PySpark를 사용하기 전에 주요 Apache Spark 개념을 이해하는 것이 중요합니다.

데이터 프레임

데이터 프레임은 Apache Spark의 기본 개체입니다. DataFrame은 명명된 열로 구성된 데이터 세트입니다. DataFrame은 스프레드시트 또는 SQL 테이블, 일련의 레코드(테이블의 행과 유사)의 2차원 레이블이 지정된 데이터 구조 및 다양한 형식의 열과 같이 생각할 수 있습니다. 데이터 프레임은 일반적인 데이터 조작 및 분석 작업을 효율적으로 수행할 수 있는 다양한 함수 집합(예: 열 선택, 필터, 조인 및 집계)을 제공합니다.

몇 가지 중요한 DataFrame 요소는 다음과 같습니다.

  • 스키마: 스키마는 데이터 프레임의 열 이름과 형식을 정의합니다. 데이터 형식에는 스키마 정의 및 적용에 대한 의미 체계가 다릅니다. 일부 데이터 원본은 스키마 정보를 제공하는 반면, 다른 데이터 원본은 수동 스키마 정의를 사용하거나 스키마 유추를 허용합니다. 사용자는 스키마를 수동으로 정의하거나 데이터 원본에서 스키마를 읽을 수 있습니다.
  • 행: Spark는 DataFrame의 레코드를 개체로 Row 나타냅니다. Delta Lake와 같은 기본 데이터 형식은 열을 사용하여 데이터를 저장하는 반면, 최적화를 위해 Spark는 행을 사용하여 데이터를 캐시하고 순서를 섞습니다.
  • 열: Spark의 열은 스프레드시트의 열과 유사하며 문자열 또는 정수와 같은 단순 형식을 나타낼 수 있지만 배열, 맵 또는 null과 같은 복합 형식도 나타낼 수 있습니다. 데이터 원본에서 열을 선택, 조작 또는 제거하는 쿼리를 작성할 수 있습니다. 가능한 데이터 원본에는 테이블, 뷰, 파일 또는 기타 DataFrame이 포함됩니다. 열은 데이터 세트 또는 DataFrame에서 제거되지 않으며, 문에서 변환 또는 누락을 통해 .drop 결과에서 select 생략됩니다.

데이터 처리

Apache Spark는 지연 평가를 사용하여 DataFrames로 정의된 변환 및 작업을 처리합니다. 이러한 개념은 Spark를 사용한 데이터 처리를 이해하는 데 기본 사항입니다.

변환: Spark에서는 데이터 프레임을 사용하여 데이터를 로드하고 조작하기 위한 지침인 처리 논리를 변환으로 표현합니다. 일반적인 변환에는 데이터 읽기, 조인, 집계 및 형식 캐스팅이 포함됩니다. Azure Databricks의 변환에 대한 자세한 내용은 데이터 변환을 참조 하세요.

지연 평가: Spark는 변환으로 지정된 논리를 평가하는 가장 효율적인 물리적 계획을 식별하여 데이터 처리를 최적화합니다. 그러나 Spark는 작업이 호출될 때까지 변환에 대해 동작하지 않습니다. Spark는 지정된 정확한 순서로 각 변환을 평가하는 대신 작업이 모든 변환에서 계산을 트리거할 때까지 기다립니다. 이를 지연 평가 또는 지연 로드라고 합니다. 이를 통해 Spark는 정의된 경우 즉시 실행하지 않고 지연된 방식으로 실행을 처리하므로 여러 작업을 연결할있습니다.

참고 항목

지연 평가는 DataFrames가 논리 쿼리를 메모리 내 결과가 아닌 데이터 원본에 대한 지침 집합으로 저장한다는 것을 의미합니다. 이는 pandas DataFrames에서 사용하는 모델인 즉시 실행과 크게 다릅니다.

작업: 작업은 하나 이상의 DataFrame에서 일련의 변환 결과를 계산하도록 Spark에 지시합니다. 작업 작업은 값을 반환하며 다음 중 어느 것이든 될 수 있습니다.

  • 콘솔 또는 편집기에서 데이터를 출력하는 작업(예: display ) show
  • 데이터를 수집하는 작업(개체 반환Row) 및 take(n)firsthead
  • 데이터 원본에 쓸 작업(예: ) saveAsTable
  • 계산을 트리거하는 집계(예: count

Important

프로덕션 데이터 파이프라인에서 데이터 작성은 일반적으로 있어야 하는 유일한 작업입니다. 다른 모든 작업은 쿼리 최적화를 중단하며 병목 현상이 발생할 수 있습니다.

DataFrame을 변경할 수 없다는 것은 무엇을 의미하나요?

DataFrame은 하나 이상의 데이터 원본에 대해 정의된 변환 및 작업의 컬렉션이지만, 궁극적으로 Apache Spark는 쿼리를 원래 데이터 원본으로 다시 확인하므로 데이터 자체는 변경되지 않고 데이터 프레임은 변경되지 않습니다. 즉, DataFrame은 변경할 수 없습니다. 이 때문에 변환을 수행한 후 후속 작업에서 액세스하기 위해 변수에 저장해야 하는 새 DataFrame이 반환됩니다. 변환의 중간 단계를 평가하려면 작업을 호출합니다.

API 및 라이브러리

Spark용 모든 API와 마찬가지로 PySpark에는 다음을 비롯한 강력한 기능을 사용하도록 설정하고 지원하는 많은 API 및 라이브러리가 장착되어 있습니다.

  • Spark SQL 및 DataFrames를 사용하여 관계형 쿼리를 사용하여 구조화된 데이터 처리 Spark SQL을 사용하면 SPARK 프로그램과 SQL 쿼리를 혼합할 수 있습니다. Spark DataFrames를 사용하면 Python 및 SQL을 사용하여 데이터를 효율적으로 읽고, 쓰고, 변환하고, 분석할 수 있습니다. 즉, 항상 Spark의 모든 기능을 활용합니다. PySpark 시작 참조
  • 구조적 스트리밍을 사용하여 스트림의 확장 가능한 처리 정적 데이터에 대한 일괄 계산을 표현하는 것과 동일한 방식으로 스트리밍 계산을 표현할 수 있으며, 스트리밍 데이터가 계속 도착함에 따라 Spark SQL 엔진은 증분 및 지속적으로 실행합니다. 구조적 스트리밍 개요를 참조하세요.
  • Spark의 Pandas API사용하여 Apache Spark에서 작동하는 Pandas 데이터 구조 및 데이터 분석 도구입니다. Spark의 Pandas API를 사용하면 pandas(테스트, 더 작은 데이터 세트) 및 Spark(프로덕션, 분산 데이터 세트)에서 작동하는 단일 코드베이스를 사용하여 여러 노드에 분산된 Pandas 워크로드를 실행하여 모든 크기로 pandas 워크로드를 확장할 수 있습니다. Spark 개요의 Pandas API를 참조하세요.
  • Machine Learning(MLLib)을 사용하는 기계 학습 알고리즘. MLlib는 사용자가 실용적인 기계 학습 파이프라인을 만들고 튜닝하는 데 도움이 되는 균일한 API 집합을 제공하는 Spark 기반의 확장 가능한 기계 학습 라이브러리입니다. Machine Learning 라이브러리 개요를 참조하세요.
  • GraphX를 사용한 그래프 및 그래프 병렬 계산 GraphX는 각 꼭짓점 및 에지에 연결된 속성이 있는 새로운 방향 다중 그래프를 도입하고 그래프 분석 작업을 간소화하기 위해 그래프 계산 연산자, 알고리즘 및 작성기를 노출합니다. GraphX 개요를 참조하세요.

Spark 자습서

Databricks 사용 예제의 PySpark는 다음 문서를 참조하세요.

Apache Spark 설명서에는 다음을 포함하여 Spark를 학습하기 위한 빠른 시작 및 가이드도 있습니다.

PySpark 참조

Azure Databricks는 다음 섹션에서 찾을 수 있는 PySpark API 및 해당 참조의 자체 버전을 유지 관리합니다.