다음은 부트스트랩된 Transforms Python 저장소의 표준 구조입니다:
transforms-python
├── conda_recipe
│ └── meta.yaml
└── src
├── myproject
│ ├── __init__.py
│ ├── datasets
│ │ ├── __init__.py
│ │ └── examples.py # 예제 데이터셋을 포함하는 파일
│ └── pipeline.py # 데이터 처리 파이프라인을 정의하는 파일
├── setup.cfg
└── setup.py
저장소 내에는 설정 톱니바퀴 아이콘을 파일 탐색기 탭의 Code Repositories로 이동하여 숨겨진 파일 및 폴더 표시를 선택함으로써 볼 수 있는 추가 파일도 있습니다. 대부분의 경우, 이러한 숨겨진 파일은 편집되어서는 안 되며; Palantir은 이러한 숨겨진 파일에 대한 커스텀 변경이 있는 저장소에 대한 지원을 제공하지 않습니다.
아래에서 다음 파일에 대해 자세히 알아볼 수 있습니다:
읽기 전에 getting started guide를 반드시 읽어 보십시오. 또한, 이 페이지는 기본 Transforms Python 저장소에 포함된 기본 프로젝트 구조를 사용한다고 가정합니다.
저장소를 처음 생성할 때는 해당 시점의 최신 Transforms Python 템플릿 버전의 기본 내용으로 부트스트랩됩니다. 이후의 repository upgrades에서 저장소의 파일이 최근 Transforms Python 템플릿 버전의 내용과 일치하도록 업그레이드됩니다. 이러한 파일에 대한 사용자 지정 변경은 새로운 업그레이드 템플릿 중 일관성을 보장하기 위해 덮어 쓸 수 있습니다. 이러한 파일에 대한 커스텀 변경은 예기치 않은 동작을 초래할 수 있기 때문에 지원되지 않습니다.
다음 파일은 저장소 업그레이드로 인해 덮어쓰기 되지 않습니다:
conda_recipe
및 src
폴더의 기본 파일build.gradle
파일다음 파일은 저장소 업그레이드 중 가장 최신의 Python 템플릿 파일과 병합됩니다. 모든 공통 키의 경우 Python 템플릿 버전이 선택됩니다:
gradle.properties
versions.properties
나머지 파일은 업그레이드를 통해 최신 Python 템플릿 버전의 파일과 일치하도록 덮어쓰여집니다.
pipeline.py
이 파일에서 프로젝트의 파이프라인을 정의합니다. 이 파이프라인은 데이터 변환과 관련된 Transform 오브젝트의 레지스트리입니다. 다음은 기본 src/myproject/pipeline.py
파일입니다:
Copied!1 2 3 4 5 6 7 8 9
# 파이썬 라이브러리 임포트 from transforms.api import Pipeline from myproject import datasets # 파이프라인 객체 생성 my_pipeline = Pipeline() # 데이터셋에 적용 가능한 변환(discover_transforms) 찾기 my_pipeline.discover_transforms(datasets)
기본적으로 pipeline.py
파일은 자동 등록을 사용하여 Transform 오브젝트를 프로젝트의 Pipeline에 추가합니다. 자동 등록은 프로젝트의 데이터셋
패키지에 있는 모든 Transform 오브젝트를 발견합니다. 따라서, 변환 로직이 데이터셋
폴더 내에 포함되지 않은 프로젝트를 재구성하면, src/myproject/pipeline.py
파일을 적절히 업데이트 해야 합니다.
또는, 수동 등록을 사용하여 각 Transform 오브젝트를 프로젝트의 Pipeline에 명시적으로 추가할 수 있습니다. 각 Transform 오브젝트를 명시적으로 Pipeline에 추가해야 하는 워크플로가 없는 경우, 자동 등록을 사용하는 것이 권장됩니다. Pipeline 오브젝트에 대한 자세한 정보는 Pipelines을 설명하는 섹션을 참조하십시오.
setup.py
이 파일에서는 transforms.pipeline
진입점인 root
를 정의하며, 이는 Transforms Python이 프로젝트의 Pipeline을 찾을 수 있게 합니다. 다음은 기본 src/setup.py
파일입니다:
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
import os from setuptools import find_packages, setup # 환경 변수에서 패키지 이름과 버전을 가져옵니다. setup( name=os.environ['PKG_NAME'], version=os.environ['PKG_VERSION'], # 프로젝트 설명 description='파이썬 데이터 변환 프로젝트', # 이 프로젝트의 저자 수정 author='{{REPOSITORY_ORG_NAME}}', # 제외할 패키지 목록 packages=find_packages(exclude=['contrib', 'docs', 'test']), # 의존성은 conda_recipe/meta.yml에서 지정하세요. install_requires=[], entry_points={ 'transforms.pipelines': [ # 변환 파이프라인 정의 'root = myproject.pipeline:my_pipeline' ] } )
기본 프로젝트 구조를 수정하는 경우, src/setup.py
파일의 내용을 수정해야 할 수도 있습니다. 자세한 내용은 transforms.pipeline 엔트리 포인트를 설명하는 섹션을 참조하십시오.
examples.py
이 파일은 데이터 변환 코드를 포함하고 있습니다. 다음은 기본 src/myproject/datasets/examples.py
파일입니다:
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13
""" from transforms.api import transform_df, Input, Output from myproject.datasets import utils # transform_df 데코레이터를 사용하여 출력 데이터셋 경로를 설정하고 입력 데이터셋을 가져옵니다. @transform_df( Output("/path/to/output/dataset"), # 출력 데이터셋 경로 my_input=Input("/path/to/input/dataset"), # 입력 데이터셋 경로 ) # 계산 함수를 정의합니다. 이 함수는 입력 데이터셋을 그대로 반환합니다. def my_compute_function(my_input): return utils.identity(my_input) # 입력 데이터셋을 그대로 반환하는 utils.identity 함수를 사용합니다. """
주석을 해제한 후, /path/to/input/dataset
및 /path/to/out/dataset
을 입력 및 출력 데이터셋의 전체 경로로 교체할 수 있습니다. 데이터 변환에 여러 데이터셋이 필요한 경우 추가 입력 데이터셋을 제공할 수 있습니다. 또한 입력 데이터셋을 출력 데이터셋으로 변환하는 코드를 포함하도록 my_compute_function
을 업데이트해야 합니다. 또한 단일 Python 파일은 여러 출력 데이터셋을 생성하는 데 사용할 수 있다는 점을 유의하세요.
샘플 코드는 DataFrame 변환 데코레이터를 사용합니다. 대신 다음을 사용할 수 있습니다:
입력 및 출력 데이터셋을 설명하고 변환 로직을 설명하는 Transform 객체를 생성하는 정보는 Transforms 설명 섹션을 참조하세요.
meta.yaml
conda 빌드 레시피는 conda 패키지를 빌드하는 데 필요한 모든 메타데이터와 스크립트가 포함된 디렉토리입니다. 빌드 레시피의 파일 중 하나는 meta.yaml
입니다. 이 파일에는 모든 메타데이터가 포함되어 있습니다. 이 파일의 구조에 대한 자세한 내용은 conda 문서의 meta.yaml 파일을 참조하세요.
다음은 기본 conda_recipe/meta.yaml
파일입니다:
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
# 패키지의 런타임 요구 사항을 수정해야 하는 경우, # 이 파일의 'requirements.run' 섹션을 업데이트하세요. package: name: "{{ PACKAGE_NAME }}" # 패키지 이름 version: "{{ PACKAGE_VERSION }}" # 패키지 버전 source: path: ../src # 소스 코드 경로 requirements: # 패키지를 빌드하는 데 필요한 도구들. 이들 패키지는 빌드 시스템에서 실행되며, # 리비전 제어 시스템(Git, SVN), 메이크 도구(GNU make, Autotool, CMake), # 컴파일러(실제 크로스, 의사 크로스 또는 크로스 컴파일하지 않을 때 네이티브), # 소스 전처리기 등을 포함합니다. # https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#build build: - python 3.8.* # 파이썬 3.8.* 버전이 필요 - setuptools # setuptools 패키지가 필요 # 패키지를 실행하는 데 필요한 패키지들. 패키지가 설치될 때마다 자동으로 설치되는 종속성입니다. # https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#run run: - python 3.8.* # 파이썬 3.8.* 버전이 필요 - transforms {{ PYTHON_TRANSFORMS_VERSION }} # transforms 패키지와 그 버전이 필요 - transforms-expectations # transforms-expectations 패키지가 필요 - transforms-verbs # transforms-verbs 패키지가 필요 build: script: python setup.py install --single-version-externally-managed --record=record.txt # 스크립트: python setup.py install --single-version-externally-managed --record=record.txt 실행
Transforms Python 프로젝트에서 추가 빌드 의존성이 필요한 경우, package 탭을 사용하여 사용 가능한 패키지를 찾고 이를 meta.yml
파일에 자동으로 추가할 수 있습니다. 이는 Python 라이브러리 공유에 대한 문서에서 설명한대로 진행됩니다. 이 단계에서는 가져오려는 패키지를 생성하는 채널을 자동으로 감지하고 이를 백킹 저장소로 추가합니다.
또한 이 파일의 "requirements" 섹션을 수동으로 업데이트할 수도 있습니다. 그러나 수동으로 수행하는 것은 권장하지 않습니다. 사용할 수 없는 패키지와 버전을 요청할 위험이 있으며, 이로 인해 저장소에서 검사가 실패할 수 있기 때문입니다. 추가하는 종속성에 대해서는 의존성에 필요한 패키지가 사용 가능한지 확인하세요.
"requirements" 외에 다른 섹션을 수정할 필요가 거의 없다는 점에 유의하세요.
다음 Python 버전이 지원됩니다: Python 3.6, Python 3.7, Python 3.8, Python 3.9 및 Python 3.10.
예제 사용법:
Copied!1 2 3 4 5 6 7 8 9
requirements: build: - python 3.7.* # 파이썬 3.7 버전 - setuptools # 패키지 설치 도구 # 패키지 실행에 필요한 추가 패키지 run: - python 3.7.* # 파이썬 3.7 버전 - transforms {{ PYTHON_TRANSFORMS_VERSION }} # transforms 패키지 (버전은 변수로 설정됨)
python >=3.6
또는 python >3.7,<=3.8.7
와 같은 범위는 Python 버전에 대해 지원되지 않습니다.변환 작업이 특정 라이브러리 버전을 고정해야 하는 경우, 권장되는 패키지 탭을 사용하는 대신 수동으로 추가하려면 requirements
블록에서 라이브러리 이름과 함께 명시적으로 지정할 수 있습니다. 아래는 고정 예시입니다:
Copied!1 2 3 4 5 6 7
requirements: run: # 아래는 명시적인 버전을 지정합니다. - mylibrary 1.0.1 # 아래는 최대 버전을 지정합니다 (버전은 이 값 이하): - scipy <=1.4.0
주의:
scipy <= 1.4.0
은 CI 검사에서 실패합니다.>=
연산자를 지원하지 않습니다.변환에 Conda를 통해 사용할 수 없지만 pip를 사용하여 설치할 수 있는 특정 라이브러리가 필요한 경우, 추가적인 pip
섹션에 선언할 수 있습니다. 의존성은 Conda 환경 위에 설치됩니다. 아래는 pip 의존성을 추가하는 예입니다:
Copied!1 2 3 4 5 6 7 8 9 10 11
requirements: build: - python 3.7.* # 파이썬 3.7 버전 사용 - setuptools # setuptools 패키지 사용 run: - python 3.7.* # 파이썬 3.7 버전 사용 - transforms {{ PYTHON_TRANSFORMS_VERSION }} # transforms 패키지와 함께 사용되는 파이썬 버전 pip: - pypicloud # pypicloud 패키지 사용
참고:
pip
섹션에 추가된 종속성은 run
섹션의 패키지에서 파생된 Conda 환경 위에 설치됩니다. 따라서 run
또는 build
를 제거하면 실패가 발생할 수 있습니다.pip
섹션은 Transforms Python 리포지토리에서만 사용할 수 있으며 Python 라이브러리에서는 사용할 수 없습니다.