Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

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_configdict실행 환경이 제공하는 서비스 구성. Java com.palantir.remoting.api.config.service.ServicesConfigBlock의 JSON 규격을 따름
auth_headerstrFoundry 서비스 요청에 사용할 전체 인증 헤더 문자열
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_headerstr, 서비스 접속에 사용하는 인증 헤더
fallback_branchesList[str], 데이터셋 조회의 브랜치 대체 후보
spark_sessionpyspark.sql.SparkSession, FoundrySparkManager가 만든 세션

여기서 생성한 핸들과 세션은 Foundry에 연결한 실행 문맥을 따릅니다. 일반적인 변환 선언과 실행 문맥은 Python 변환에서 설명합니다.