Transforms의 FoundryConnector API
FoundryConnector는 Transforms API에서 Foundry 서비스에 접근하는 대화형 진입점입니다. 실제 TransformInput/TransformOutput 핸들을 구성하거나 등록된 Transform을 실행할 수 있습니다. 외부 시스템을 가져오는 Data Connection의 소스 커넥터와 구분합니다.
생성자
transforms.foundry.connectors.FoundryConnector(
service_config,
auth_header,
filesystem_id=None,
fallback_branches=None,
resolver=None,
)
| 인자 | 자료형 | 의미 |
|---|---|---|
service_config | dict | 실행 환경이 제공하는 서비스 구성. Java com.palantir.remoting.api.config.service.ServicesConfigBlock의 JSON 규격을 따름 |
auth_header | str | Foundry 서비스 요청에 사용할 전체 인증 헤더 문자열 |
filesystem_id | 선택적 str | 사용할 기반 파일시스템 |
fallback_branches | 선택적 List[str] | 브랜치 대체 후보 목록 |
resolver | 선택적 Callable[[str], str] | 데이터셋 alias를 RID로 바꾸는 함수. 기본은 Project 경로로 해석 |
service_config는 해당 실행 환경에서 사용하는 서비스 구성 객체입니다. 아래 함수들은 실제 구성 객체를 인자로 받습니다. 인증 헤더는 저장소에 하드코딩하거나 로그에 남기지 않습니다.
input
input(
alias=None, rid=None, branch=None,
end_txrid=None, start_txrid=None, schema_version=None,
)
| 인자 | 자료형 | 기본 동작 |
|---|---|---|
alias | 선택적 str | 데이터셋 별칭. resolver로 RID 결정 |
rid | 선택적 str | 실제 데이터셋 RID |
branch | 선택적 str | 읽을 브랜치. 생략하면 fallback 목록에서 Catalog에 존재하는 첫 브랜치 |
end_txrid | 선택적 str | 읽을 뷰의 끝 트랜잭션. 생략하면 선택 브랜치의 최신 트랜잭션 |
start_txrid | 선택적 str | 읽을 뷰의 시작 트랜잭션 |
schema_version | 선택적 str | 읽기에 사용할 스키마 버전. 생략하면 해당 브랜치의 최신 스키마 |
alias와 rid 중 정확히 하나를 지정합니다. 이 조건을 충족하지 않으면 ValueError가 발생합니다. branch를 지정하지 않았는데 Catalog에서 fallback 브랜치를 찾을 수 없어도 ValueError가 발생합니다.
반환형은 transforms.api.TransformInput이며 요청한 데이터셋 뷰를 나타냅니다. 과거 트랜잭션을 읽으면서 schema_version을 생략하면 스키마의 기본값은 브랜치의 최신 버전이므로 필요한 스키마를 함께 선택해야 합니다.
from transforms.foundry.connectors import FoundryConnector
def open_input(service_config, auth_header, dataset_rid, branch):
connector = FoundryConnector(
service_config=service_config,
auth_header=auth_header,
fallback_branches=[branch],
)
return connector.input(rid=dataset_rid, branch=branch)
인자는 실제 실행 환경의 구성, 인증 헤더, 데이터셋 RID와 읽을 브랜치입니다. 반환 핸들에서 dataframe 또는 파일시스템을 읽을 수 있습니다.
output
output(alias=None, rid=None, branch=None, txrid=None, filesystem_id=None)
| 인자 | 자료형 | 기본 동작 |
|---|---|---|
alias | 선택적 str | 출력 데이터셋 별칭 |
rid | 선택적 str | 출력 데이터셋 RID |
branch | 선택적 str | 쓸 브랜치. 생략하면 fallback 목록의 첫 브랜치 |
txrid | 선택적 str | 데이터를 기록할 트랜잭션 |
filesystem_id | 선택적 str | 데이터셋이 없을 때 생성에 사용할 파일시스템 |
반환형은 transforms.api.TransformOutput입니다. alias와 rid를 정확히 하나만 지정하지 않으면 ValueError가 발생합니다. 입력의 fallback은 Catalog에 존재하는 후보를 찾지만 출력은 목록의 첫 후보를 선택한다는 차이가 있습니다.
출력 구성과 쓰기는 읽기 전용 조회가 아닙니다. 대상 브랜치, 트랜잭션과 생성 위치 및 쓰기 권한을 정한 실행 환경에서 사용합니다.
run
run(transform)은 transforms.api.Transform 객체를 받아 최신 입력과 출력을 사용하여 실행합니다. 함수를 평범한 Python 함수처럼 직접 호출하는 것과 구분합니다.
from transforms.foundry.connectors import FoundryConnector
def run_registered_transform(service_config, auth_header, branch, registered_transform):
connector = FoundryConnector(
service_config=service_config,
auth_header=auth_header,
fallback_branches=[branch],
)
connector.run(registered_transform)
registered_transform은 decorator로 구성한 실제 Transform 객체입니다. 실행은 출력 쓰기를 수행할 수 있으므로 실행할 입력/출력과 권한을 먼저 확인합니다.
속성
| 속성 | 자료형과 의미 |
|---|---|
auth_header | str, 서비스 접속에 사용하는 인증 헤더 |
fallback_branches | List[str], 데이터셋 조회의 브랜치 대체 후보 |
spark_session | pyspark.sql.SparkSession, FoundrySparkManager가 만든 세션 |
여기서 생성한 핸들과 세션은 Foundry에 연결한 실행 문맥을 따릅니다. 일반적인 변환 선언과 실행 문맥은 Python 변환에서 설명합니다.