Python Data Source API — Scala 없이 커스텀 데이터소스를 만든다
Delta Lake Liquid Clustering 및 PySpark Python Data Source API 공식 문서 종합 (웹 리서치, 2026) — Delta Lake 공식 블로그(liquid-clustering), Apache Spark 공식문서(python_data_source tutorial) Apache Spark 공식문서 Python Data Source API tutorial
이 모듈을 다 읽으면
- Python Data Source API가 spark-learn-74의 DataSource V2(Java 인터페이스)와 어떤 관계인지 설명할 수 있다
- DataSource/DataSourceReader 두 클래스가 각각 어떤 책임을 지는지 설명할 수 있다
spark-learn-74에서 다룬 DataSource V2(Java 인터페이스 기반 확장 지점)를 전제로, Spark 4.0이 이를 Python 개발자도 Scala/Java 없이 바로 쓸 수 있게 열어준 Python Data Source API를 정리한다.
왜 필요한가 — Java/Scala 없이 커스텀 커넥터를 만든다
spark-learn-74에서 다룬 DataSource V2는 org.apache.spark.sql.connector 패키지의 Java 인터페이스 집합이라, 커스텀 커넥터를 만들려면 전통적으로 Java나 Scala 지식이 필요했다. Spark 4.0의 Python Data Source API는 이 확장 지점을 Python에서 직접 쓸 수 있게 열어줘, Python 개발자가 Java/Scala 전문성 없이도 배치·스트리밍 워크로드용 커스텀 데이터소스·싱크를 만들 수 있게 한다.
핵심 포인트
- spark-learn-74의 DataSource V2는 Java 인터페이스 기반이라 전통적으로 Java/Scala 지식이 필요했음
- Python Data Source API(Spark 4.0)는 이 확장 지점을 Python에서 직접 구현 가능하게 열어 Java/Scala 없이도 배치·스트리밍용 커스텀 커넥터 제작 가능
DataSource와 DataSourceReader — 두 클래스의 역할 분담
from pyspark.sql.datasource import DataSource, DataSourceReader를 임포트해 이 두 기반 클래스를 서브클래싱하는 것이 커스텀 데이터소스 구현의 시작점이다. DataSource가 spark-learn-74에서 다룬 TableProvider와 유사한 역할(데이터소스 자체를 정의하고 등록)을 한다면, DataSourceReader는 실제로 데이터를 어떻게 읽어올지(파티션 나누기, 각 파티션에서 레코드를 만들어내는 방법)를 구현하는 클래스다.
핵심 포인트
- DataSource와 DataSourceReader를 서브클래싱해 구현 — DataSource는 데이터소스 자체 정의(spark-learn-74의 TableProvider와 유사한 역할)
- DataSourceReader: 실제 데이터를 어떻게 읽어올지(파티션 분할, 레코드 생성 방법)를 구현