Python 변환 등록과 실행 방식
Python 변환은 compute 함수와 입력 및 출력 명세를 묶어 등록합니다. 함수를 감싸는 데코레이터에 따라 런타임 입출력 객체를 직접 사용하거나 DataFrame을 받아 반환합니다. 등록한 변환은 Pipeline으로 묶습니다.
선언 방식 선택
| 참조 | compute의 계약 |
|---|---|
| transform | Spark 입출력 객체를 받고 함수가 각 출력을 직접 기록 |
| transform.using | Spark 없는 단일 노드 입출력 객체를 받고 함수가 출력 기록 |
| transform_df | PySpark DataFrame을 받아 DataFrame 하나를 반환하면 단일 출력에 기록 |
| transform_pandas | pandas DataFrame을 받아 반환. 기본 Spark 경로에서는 계산 전후에 변환 |
| transform_polars | 경량 실행에서 Polars DataFrame을 받아 반환 |
| Pipeline | 변환을 직접 등록하거나 패키지에서 재귀적으로 탐색 |
입출력 이름과 함수 인자 이름을 맞추고, 선택적인 실행 맥락 인자는 ctx로 받습니다. 입출력 자체에 ctx라는 이름을 붙이지 않습니다. 각 출력 alias와 compute 함수 참조는 파이프라인 안에서 고유해야 합니다.
실행 객체와 설정
| 참조 | 역할 |
|---|---|
| ContainerTransform | 경량 단일 노드 계산 객체 |
| ContainerTransformsConfiguration | ContainerTransform의 하위 호환 이름 |
| configure | Spark Transform의 프로파일, 실행 시간, 권한 및 체크포인트 설정 |
| ComputeBackend | SPARK 또는 Spark 네이티브 가속 VELOX 선택 |
| lightweight | 3.85.0부터 사용 중단을 권고하는 기존 경량 데코레이터 |
| incremental | 빌드 이력을 기준으로 증분 실행, 스냅샷 및 삭제 조건 처리 |
Spark 프로파일은 경량 실행에 적용하지 않습니다. 새 경량 선언의 CPU, 메모리와 컨테이너 설정은 transform.using 빌더의 with_resources 및 with_container에 지정합니다. 기존 경량 데코레이터도 지원 조건을 구분하여 사용할 수 있습니다.
실행 맥락
| 참조 | 적용 경로 |
|---|---|
| TransformContext | 일반 Spark 변환 |
| IncrementalTransformContext | 증분 Spark 변환 |
| LightweightContext | 경량 단일 노드 변환 |
abort_job은 해당 작업의 모든 출력 트랜잭션을 중단합니다. 증분 데코레이터가 붙어 있어도 초기 실행이나 상태 변경에 따라 비증분 실행이 필요할 수 있으므로 is_incremental과 설정의 예외 조건을 함께 해석합니다.
명세와 실행 객체의 차이는 입출력 참조, 이름 있는 설정값의 전달은 값 매개변수를 확인합니다.
표 형식 대신 원시 파일을 처리하거나 직접 업로드한 Parquet의 메타데이터를 마무리할 때는 데이터셋과 파일 접근의 해당 실행 환경별 API를 사용합니다.