TransformOutput: Spark 실행 출력
transforms.api.TransformOutput은 Transform의 compute 함수에 런타임 출력으로 주입됩니다. Output은 이 객체를 생성할 선언용 명세입니다. 증분 실행에서는 IncrementalTransformOutput이 읽기 모드와 쓰기 의미를 확장합니다.
transforms.api.TransformOutput(
rid, branch, txrid, dfreader, dfwriter, fsbuilder, mode="replace",
)
메타데이터 속성
| 속성 | 형식 | 의미 |
|---|---|---|
batch_incremental_configuration | BatchIncrementalConfiguration | 배치로 읽는 증분 입력의 설정 |
branch | str | 데이터셋 브랜치 |
column_descriptions | dict[str, str] | 열별 설명 |
column_typeclasses | dict[str, str] | 열별 typeclass 메타데이터 |
start_transaction_rid | str | 읽기 범위의 시작 트랜잭션 RID |
end_transaction_rid | str | 읽기 범위의 끝 트랜잭션 RID |
path | str | Compass 경로 |
rid | str | 데이터셋 RID |
읽기, 파일시스템과 필드 복사
| 메서드 | 동작 |
|---|---|
dataframe() | 데이터셋 전체 뷰의 pyspark.sql.DataFrame 반환 |
pandas() | 데이터셋 전체 뷰의 pandas.DataFrame 반환 |
filesystem() | FoundryFS에 기록할 FileSystem 구성 |
from_transform_output(instance, delegate) | 클래스 메서드. delegate TransformOutput의 값으로 instance의 필드 설정 |
set_mode(mode)
문자열 mode로 쓰기 모드를 바꿉니다. replace는 데이터셋을 대체하고, modify는 데이터를 추가하며, append는 데이터를 추가하되 기존 파일을 덮어쓰지 않습니다. 데이터를 쓴 뒤에는 모드를 바꿀 수 없습니다. set_mode는 1.61.0에 추가되었습니다.
write_dataframe
write_dataframe(df, partition_cols=None, bucket_cols=None, bucket_count=None,
sort_by=None, output_format=None, options=None,
column_descriptions=None, column_typeclasses=None)
| 인자 | 형식 | 조건 |
|---|---|---|
df | pyspark.sql.DataFrame | 기록할 DataFrame |
partition_cols | list[str] | 쓰기에 사용할 열 파티션. 기본값 None |
bucket_cols | list[str] | 버킷 기준 열. bucket_count를 지정하면 필수 |
bucket_count | int | 버킷 수. bucket_cols를 지정하면 필수 |
sort_by | list[str] | 버킷 데이터의 정렬 기준 열. 기본값 None |
output_format | str | 출력 파일 형식. 미지정 시 parquet |
options | dict | Spark DataFrameWriter의 option(String, String)에 전달할 옵션 |
column_descriptions | dict[str, str] | 열 이름별 설명. DataFrame 열과 교집합에 해당하는 설명만 반영하며 각 설명은 800자 이하 |
column_typeclasses | dict[str, list[dict[str, str]]] | 열 이름별 typeclass 목록 |
column_typeclasses의 각 typeclass 맵에서 허용하는 키는 name과 kind뿐이며 각 문자열 값은 100자 이하여야 합니다. 형식 예시:
column_typeclasses = {
"my_column": [{"name": "my_typeclass_name", "kind": "my_typeclass_kind"}]
}
메타데이터를 읽는 column_typeclasses 속성과 쓰기에 전달하는 위 중첩 구조를 구분합니다.
write_pandas(pandas_df)
주어진 pandas.DataFrame을 데이터셋에 기록합니다.
abort()
이 출력의 모든 작업을 중단합니다. 이 출력에서 얻은 writer가 호출 전이나 후에 수행한 작업도 무시합니다. 작업 전체와 모든 출력 트랜잭션을 중단하는 ctx.abort_job과는 대상 범위를 구분합니다.