

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 특성 저장소 특성 프로세서 SDK
<a name="feature-store-feature-processor-sdk"></a>

`@feature_processor` 데코레이터로 변환 함수를 장식하여 특성 저장소 특성 프로세서 정의를 선언합니다. SageMaker AI SDK for Python(Boto3)은 구성된 입력 데이터 소스에서 데이터를 자동으로 로드하고, 데코레이트된 변환 함수를 적용한 다음, 변환된 데이터를 대상 특성 그룹에 수집합니다. 데코레이트된 변환 함수는 `@feature_processor`데코레이터의 예상 시그니처를 준수해야 합니다. `@feature_processor` 데코레이터에 대한 자세한 내용은 Amazon SageMaker 특성 저장소 설명서 읽기의 [@feature\$1processor 데코레이터](https://sagemaker.readthedocs.io/en/stable/api/prep_data/feature_store.html#feature-processor-decorator)를 참조하세요.

`@feature_processor` 데코레이터를 사용하면 함수에 제공된 입력 인수와 반환 값이 Spark DataFrames인 Spark 런타임 환경에서 변환 함수가 실행됩니다. 변환 함수의 입력 파라미터 개수는 `@feature_processor`데코레이터에 구성된 입력 개수와 일치해야 합니다.

`@feature_processor` 데코레이터에 대한 자세한 내용은 [Python용 특성 프로세서 특성 저장소 SDK (Boto3)](https://github.com/aws/sagemaker-python-sdk/tree/master/src/sagemaker/feature_store/feature_processor)를 참조하세요.

다음 코드는 `@feature_processor`데코레이터 사용 방법에 대한 기본 예제입니다. 보다 구체적인 예제 사용 사례는 [일반 사용 사례에 대한 특성 처리 코드 예시](feature-store-feature-processor-examples.md)섹션을 참조하세요.

특성 프로세서 SDK는 다음 명령을 사용하여 SageMaker Python SDK 및 기타 SDK에서 설치할 수 있습니다.

```
pip install sagemaker[feature-processor]
```

다음 예제에서 `us-east-1`은 리소스의 리전, `111122223333`은 리소스 소유자 계정 ID, `your-feature-group-name`은 특성 그룹 이름입니다.

다음은 기본 특성 프로세서 정의로, `@feature_processor`데코레이터가 Amazon S3의 CSV 입력을 로드하여 변환 함수(예: `transform`)에 제공하도록 구성하고 특성 그룹에 수집할 수 있도록 준비합니다. 마지막 줄에서 실행합니다.

```
from sagemaker.feature_store.feature_processor import CSVDataSource, feature_processor

CSV_DATA_SOURCE = CSVDataSource('s3://your-bucket/prefix-to-csv/')
OUTPUT_FG = 'arn:aws:sagemaker:us-east-1:111122223333:feature-group/your-feature-group-name'

@feature_processor(inputs=[CSV_DATA_SOURCE], output=OUTPUT_FG)
def transform(csv_input_df):
   return csv_input_df
   
transform()
```

`@feature_processor` 파라미터는 다음과 같습니다.
+ `inputs` (List[str]): 특성 저장소 특성 프로세서에서 사용되는 데이터 소스 목록입니다. 데이터 소스가 특성 그룹이거나 Amazon S3에 저장된 경우 특성 프로세서에 대해 특성 저장소에서 제공한 데이터 소스 정의를 사용할 수 있습니다. 특성 저장소에서 제공하는 데이터 소스 정의의 전체 목록은 Amazon SageMaker 특성 저장소 설명서 읽기의 [특성 프로세서 데이터 소스](https://sagemaker.readthedocs.io/en/stable/api/prep_data/feature_store.html#feature-processor-data-source)를 참조하세요.
+ `output` (str): 데코레이팅된 함수의 출력을 수집하기 위한 특성 그룹의 ARN입니다.
+ `target_stores` (선택 사항 [List [str]]): 출력에 수집할 저장소 목록입니다(예: `OnlineStore`또는 `OfflineStore`). 지정하지 않은 경우, 데이터가 모든 출력 특성 그룹의 활성화된 저장소에 수집됩니다.
+ `parameters` (Dict [str, Any]): 변환 함수에 제공되는 사전입니다.
+ `enable_ingestion` (bool): 변환 함수의 출력이 출력 특성 그룹에 수집되는지 여부를 나타내는 플래그입니다. 이 플래그는 개발 단계에서 유용합니다. 지정하지 않은 겨우, 수집이 활성화됩니다.

선택적으로 래핑된 함수 파라미터(함수 시그니처에 제공된 경우 인수로 제공됨)는 다음과 같습니다.
+ `params` (Dict [str, Any]): `@feature_processor`파라미터에 정의된 사전입니다. 또한 `scheduled_time`파라미터와 같이 키 `system`으로 참조할 수 있는 시스템 구성 파라미터도 포함됩니다.
+ `spark` (SparkSession): Spark 애플리케이션용으로 초기화된 SparkSession 인스턴스에 대한 참조입니다.

다음 코드는 `params`및 `spark`파라미터를 사용하는 예제입니다.

```
from sagemaker.feature_store.feature_processor import CSVDataSource, feature_processor

CSV_DATA_SOURCE = CSVDataSource('s3://your-bucket/prefix-to-csv/')
OUTPUT_FG = 'arn:aws:sagemaker:us-east-1:111122223333:feature-group/your-feature-group-name' 

@feature_processor(inputs=[CSV_DATA_SOURCE], output=OUTPUT_FG)
def transform(csv_input_df, params, spark):
   
   scheduled_time = params['system']['scheduled_time']
   csv_input_df.createOrReplaceTempView('csv_input_df')
   return spark.sql(f'''
        SELECT *
        FROM csv_input_df
        WHERE date_add(event_time, 1) >= {scheduled_time}
   ''')
   
transform()
```

`scheduled_time` 시스템 파라미터(함수의 `params`인수에 제공됨)는 각 실행의 재시도를 지원하는 중요한 값입니다. 이 값은 특성 프로세서의 실행을 고유하게 식별하는 데 도움이 될 수 있으며, 코드의 실제 실행 시간과 관계없이 입력 범위를 보장하기 위해 날짜 범위 기반 입력(예: 최근 24시간 분량의 데이터만 로드)의 참조 포인트로 사용할 수 있습니다. 특성 프로세서가 일정에 따라 실행되는 경우([특성 프로세서 파이프라인의 일정 예약 및 이벤트 기반 실행](feature-store-feature-processor-schedule-pipeline.md) 참조) 해당 값은 예정된 실행 시간으로 고정됩니다. 데이터 백필 또는 누락된 이전 실행 재실행과 같은 사용 사례를 지원하기 위해 SDK의 Execute API를 사용하여 동기 실행 중에 인수를 재정의할 수 있습니다. 이 값은 특성 프로세서가 다른 방식으로 실행되는 경우의 현재 시간입니다.

Spark 코드 작성에 대한 자세한 내용은 [Spark SQL 프로그래밍 설명서](https://spark.apache.org/docs/latest/sql-programming-guide.html)를 참조하세요.

일반 사용 사례에 대한 더 많은 코드 샘플은 [일반 사용 사례에 대한 특성 처리 코드 예시](feature-store-feature-processor-examples.md)섹션을 참조하세요.

`@feature_processor`로 데코레이션된 변환 함수는 값을 반환하지 않는다는 점에 유의하세요. 함수를 프로그래밍 방식으로 테스트하려면 래핑된 함수에 대한 패스스루 역할을 하도록 `@feature_processor`데코레이터를 제거하거나 몽키 패치하면 됩니다. `@feature_processor` 데코레이터에 대한 자세한 내용은 [Amazon SageMaker 특성 저장소 Python SDK](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_featurestore.html)를 참조하세요.