

# Ray 스크립트 프로그래밍
<a name="aws-glue-programming-ray"></a>

**중요**  
AWS Glue for Ray는 2026년 4월 30일부터 신규 고객에게 더 이상 공개되지 않습니다. AWS Glue for Ray를 사용하려면 해당 날짜 이전에 가입하세요. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. AWS Glue for Ray와 유사한 기능의 경우 Amazon EKS를 살펴보세요. 자세한 내용은 [AWS Glue for Ray 지원 종료](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html)를 참조하세요.

AWS Glue를 사용하면 Ray 스크립트를 쉽게 쓰고 실행할 수 있습니다. 이 섹션에서는 AWS Glue for Ray에서 사용할 수 있는 지원되는 Ray 기능을 설명합니다. Python에서 Ray 스크립트를 프로그래밍합니다.

사용자 정의 스크립트는 작업 정의의 `Runtime` 필드에 정의된 Ray 버전과 호환되어야 합니다. 작업 API에서 `Runtime`에 대한 자세한 내용은 [작업](aws-glue-api-jobs-job.md) 섹션을 참조하세요. 각 런타임 환경에 대한 자세한 내용은 [지원되는 Ray 런타임 환경](ray-jobs-section.md#author-job-ray-runtimes) 섹션을 참조하세요.

**Topics**
+ [자습서: AWS Glue for Ray에서 ETL 스크립트 작성](edit-script-ray-intro-tutorial.md)
+ [AWS Glue for Ray에서 Ray Core 및 Ray Data 사용](edit-script-ray-scripting.md)
+ [Ray 작업에 파일 및 Python 라이브러리 제공](edit-script-ray-env-dependencies.md)
+ [Ray 작업의 데이터에 연결](edit-script-ray-connections-formats.md)

# 자습서: AWS Glue for Ray에서 ETL 스크립트 작성
<a name="edit-script-ray-intro-tutorial"></a>

**중요**  
AWS Glue for Ray는 2026년 4월 30일부터 신규 고객에게 더 이상 공개되지 않습니다. AWS Glue for Ray를 사용하려면 해당 날짜 이전에 가입하세요. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. AWS Glue for Ray와 유사한 기능의 경우 Amazon EKS를 살펴보세요. 자세한 내용은 [AWS Glue for Ray 지원 종료](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html)를 참조하세요.

Ray는 기본적으로 Python에서 배포된 작업을 작성하고 규모를 조정할 수 있는 기능을 제공합니다. AWS Glue for Ray는 작업과 대화형 세션 모두에서 액세스할 수 있는 서버리스 Ray 환경을 제공합니다(Ray 대화형 세션은 평가판 단계임). AWS Glue 작업 시스템은 일정에 따라, 트리거 또는 AWS Glue 콘솔을 통해 작업을 관리하고 실행할 수 있는 일관된 방법을 제공합니다.

이러한 AWS Glue 도구를 결합하면 추출, 전환, 적재(ETL) 워크로드에 사용할 수 있는 강력한 도구 모음이 생성되며, AWS Glue의 사용 사례에 많이 사용됩니다. 이 자습서에서는 이 솔루션을 구성하는 기본 사항을 학습합니다.

또한 ETL 워크로드에서 AWS Glue for Spark를 사용할 수 있도록 지원합니다. AWS Glue for Spark 스크립트 작성에 대한 자습서는 [자습서: AWS Glue for Spark 스크립트 작성](aws-glue-programming-intro-tutorial.md) 섹션을 참조하세요. 사용 가능한 엔진에 대한 자세한 내용은 [AWS Glue for Spark 및 AWS Glue for Ray](how-it-works-engines.md) 섹션을 참조하세요. Ray는 분석, 기계 학습(ML) 및 애플리케이션 개발 분야에서 다양한 종류의 작업을 처리할 수 있습니다.

이 자습서에서는 Amazon Simple Storage Service(S3)에 호스팅된 CSV 데이터 세트를 추출, 전환 및 적재합니다. 먼저 퍼블릭 Amazon S3 버킷에 저장된 New York City Taxi and Limousine Commission (TLC) Trip Record Data 데이터 세트로 시작합니다. 이 데이터 세트에 대한 자세한 내용은 [AWS의 오픈 데이터 레지스트리](https://registry.opendata.aws/nyc-tlc-trip-records-pds/)를 참조하세요.

Ray Data 라이브러리에서 사용할 수 있는 미리 정의된 변환을 사용하여 데이터를 변환합니다. Ray Data는 Ray에서 설계한 데이터 세트 준비 라이브러리이며 AWS Glue for Ray 환경에 기본적으로 포함되어 있습니다. 기본적으로 포함된 라이브러리에 대한 자세한 내용은 [Ray 작업과 함께 제공되는 모듈](edit-script-ray-env-dependencies.md#edit-script-ray-modules-provided) 섹션을 참조하세요. 그런 다음 사용자가 제어하는 Amazon S3 버킷에 변환된 데이터를 작성합니다.

**사전 조건** - 이 자습서에서는 AWS Glue 및 Amazon S3에 액세스할 수 있는 AWS 계정이 필요합니다.

## 1단계: Amazon S3에 출력 데이터를 보관할 버킷 생성
<a name="edit-script-ray-intro-tutorial-s3"></a>

이 자습서에서 생성한 데이터의 싱크 역할을 하기 위해 사용자가 제어하는 Amazon S3 버킷이 필요합니다. 다음 절차에 따라 이 버킷을 생성할 수 있습니다.

**참고**  
사용자가 제어하는 기존 버킷에 데이터를 쓰려면 이 단계를 건너뛰면 됩니다. 이후 단계에서 사용하기 위해 기존 버킷 이름(*yourBucketName*)을 기록해둡니다.

**Ray 작업 출력을 위한 버킷을 생성하려면**
+ *Amazon S3 사용 설명서*의 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)에 나와 있는 단계에 따라 버킷을 생성합니다.
  + 버킷 이름을 선택할 때는 *yourBucketName*을 기록해둡니다. 이 이름은 이후 단계에서 참조합니다.
  + 다른 구성의 경우 Amazon S3 콘솔에서 제공하는 제안된 설정도 이 자습서에서 작동할 수 있습니다.

  예를 들어 Amazon S3 콘솔의 버킷 생성 대화 상자는 다음과 비슷할 수 있습니다.  
![\[새 버킷을 구성하는 데 사용되는 Amazon S3 콘솔의 대화 상자입니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/ray-tutorial-create-bucket.jpg)

## 2단계: Ray 작업에 대한 IAM 역할 생성
<a name="edit-script-ray-intro-tutorial-iam"></a>

작업에는 다음을 포함하는 AWS Identity and Access Management(IAM) 역할이 필요합니다.
+ `AWSGlueServiceRole` 관리형 정책에서 부여한 권한. 이는 AWS Glue 작업을 실행하는 데 필요한 기본 권한입니다.
+ `nyc-tlc/*` Amazon S3 리소스에 대한 `Read` 액세스 수준 권한.
+ `yourBucketName/*` Amazon S3 리소스에 대한 `Write` 액세스 수준 권한.
+ `glue.amazonaws.com` 보안 주체가 역할을 수임할 수 있도록 하는 신뢰 관계.

다음 절차에 따라 이 역할을 생성할 수 있습니다.

**AWS Glue for Ray 작업에 대한 IAM 역할을 생성하려면**
**참고**  
다양한 절차에 따라 IAM 역할을 생성할 수 있습니다. IAM 리소스를 프로비저닝하는 방법에 대한 자세한 내용이나 옵션은 [AWS Identity and Access Management 설명서](https://docs.aws.amazon.com/iam/index.html)를 참조하세요.

1. *IAM 사용 설명서*의 [시각적 편집기를 사용하여 IAM 정책(콘솔) 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-visual-editor)에 나온 단계를 수행하여 이전에 설명한 Amazon S3 권한을 정의하는 정책을 생성합니다.
   + 서비스를 선택할 때 Amazon S3를 선택합니다.
   + 정책에 대한 권한을 선택할 때 앞서 언급한 다음 리소스에 대해 다음 작업 세트를 연결합니다.
     + `nyc-tlc/*` Amazon S3 리소스에 대한 읽기 액세스 수준 권한.
     + `yourBucketName/*` Amazon S3 리소스에 대한 쓰기 액세스 수준 권한.
   + 정책 이름을 선택할 때는 *YourPolicyName*을 기록해둡니다. 이 이름은 이후 단계에서 참조합니다.

1. *IAM 사용 설명서*의 [AWS 서비스에 대한 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console)에 나온 단계에 따라 AWS Glue for Ray 작업의 역할을 생성합니다.
   + 신뢰할 수 있는 AWS 서비스 엔터티를 선택할 때 `Glue`를 선택합니다. 그러면 작업에 필요한 신뢰 관계가 자동으로 채워집니다.
   + 권한 정책에 대한 정책을 선택할 때 다음 정책을 연결합니다.
     + `AWSGlueServiceRole`
     + *YourPolicyName*
   + 역할 이름을 선택할 때는 *YourRoleName*을 기록해둡니다. 이 이름은 이후 단계에서 참조합니다.

## 3단계: AWS Glue for Ray 작업 생성 및 실행
<a name="edit-script-ray-intro-tutorial-author-job"></a>

이 단계에서는 AWS Management Console을 사용하여 AWS Glue 작업을 생성하고 샘플 스크립트를 함께 제공하며 작업을 실행합니다. 작업을 생성하면 콘솔에 Ray 스크립트를 저장, 구성 및 편집할 수 있는 위치가 생성됩니다. 작업 생성에 대한 자세한 내용은 [AWS 콘솔에서 AWS Glue 작업 관리](author-job-glue.md#console-jobs) 섹션을 참조하세요.

이 자습서에서는 다음과 같은 ETL 시나리오를 다룹니다. New York City TLC Trip Record 데이터 세트에서 2022년 1월 기록을 읽고, 기존 열의 데이터를 결합하여 데이터 세트에 새 열(`tip_rate`)을 추가한 다음, 현재 분석과 관련이 없는 열을 여러 개 제거하고 결과를 *yourBucketName*에 쓰려고 합니다. 다음 Ray 스크립트에서 다음 단계를 수행합니다.

```
import ray
import pandas
from ray import data

ray.init('auto')

ds = ray.data.read_csv("s3://nyc-tlc/opendata_repo/opendata_webconvert/yellow/yellow_tripdata_2022-01.csv")

# Add the given new column to the dataset and show the sample record after adding a new column
ds = ds.add_column( "tip_rate", lambda df: df["tip_amount"] / df["total_amount"])

# Dropping few columns from the underlying Dataset 
ds = ds.drop_columns(["payment_type", "fare_amount", "extra", "tolls_amount", "improvement_surcharge"])

ds.write_parquet("s3://yourBucketName/ray/tutorial/output/")
```

**AWS Glue for Ray 작업을 생성하고 실행하려면**

1. AWS Management Console에서 AWS Glue 랜딩 페이지로 이동합니다.

1. 측면 탐색 창에서 **ETL 작업**을 선택합니다.

1. 다음 그림과 같이 **작업 생성**에서 **Ray 스크립트 편집기**를 선택한 다음 **생성**을 선택합니다.  
![\[Ray 작업을 생성하는 데 사용되는 AWS Glue 콘솔의 대화 상자.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/edit-script-ray-create.png)

1. 스크립트의 전체 텍스트를 **스크립트** 창에 붙여넣고 기존 텍스트를 모두 바꿉니다.

1. **작업 세부 정보**로 이동하여 **IAM 역할** 속성을 *YourRoleName*으로 설정합니다.

1. **저장**을 선택한 다음 **실행**을 선택합니다.

## 4단계: 출력 검사
<a name="edit-script-ray-intro-tutorial-inspect"></a>

AWS Glue 작업을 실행한 후에는 출력이 이 시나리오의 예상과 일치하는지 확인해야 합니다. 다음 구문을 사용하면 이 작업을 수행할 수 있습니다.

**Ray 작업이 성공적으로 실행되었는지 확인하려면**

1. 작업 세부 정보 페이지에서 **실행**으로 이동합니다.

1. 몇 분 후 **실행 상태**가 **성공**인 실행이 표시됩니다.

1. Amazon S3 콘솔([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/))로 이동하여 *yourBucketName*을 검사합니다. 출력 버킷에 쓴 파일이 표시됩니다.

1. Parquet 파일을 읽고 해당 콘텐츠를 확인합니다. 기존 도구를 사용하여 이 작업을 수행할 수 있습니다. Parquet 파일을 검증하는 프로세스가 없는 경우 Spark 또는 Ray(평가판)를 사용하여 AWS Glue 대화형 세션이 있는 AWS Glue 콘솔에서 이 작업을 수행할 수 있습니다.

   대화형 세션에서는 선택한 엔진에 따라 기본적으로 제공되는 Ray Data, Spark 또는 pandas 라이브러리에 액세스할 수 있습니다. 파일 콘텐츠를 확인하려면 해당 라이브러리에서 사용할 수 있는 일반적인 검사 방법(예: `count`, `schema` 및 `show`)을 사용할 수 있습니다. 콘솔에서의 대화형 세션에 대한 자세한 내용은 [AWS Glue Studio 및 AWS Glue에서 노트북 사용](https://docs.aws.amazon.com/glue/latest/ug/notebooks-chapter.html)을 참조하세요.

   파일이 버킷에 기록된 것을 확인했으므로 출력에 문제가 있는 경우 IAM 구성과 관련이 없다고 비교적 확신할 수 있습니다. 관련 파일에 액세스할 수 있도록 *yourRoleName*으로 세션을 구성합니다.

예상된 결과를 얻지 못하면 이 안내서의 문제 해결 콘텐츠를 살펴보고 오류의 원인을 파악하고 해결합니다. [AWS Glue 문제 해결](troubleshooting-glue.md) 장에서 문제 해결 콘텐츠를 찾을 수 있습니다. Ray 작업과 관련된 특정 오류에 대해서는 문제 해결 장의 [로그에서 AWS Glue for Ray 오류 해결](troubleshooting-ray.md) 섹션을 참조하세요.

## 다음 단계
<a name="edit-script-ray-intro-tutorial-next"></a>

 지금까지 AWS Glue for Ray를 사용하여 ETL 프로세스를 처음부터 끝까지 확인하고 수행했습니다. 다음 리소스를 통해 AWS Glue for Ray가 대규모로 데이터를 변환하고 해석하기 위해 제공하는 도구를 이해할 수 있습니다.
+  Ray의 작업 모델에 대한 자세한 내용은 [AWS Glue for Ray에서 Ray Core 및 Ray Data 사용](edit-script-ray-scripting.md) 섹션을 참조하세요. Ray 작업 사용에 대한 더 많은 경험을 쌓으려면 Ray Core 설명서의 예제를 따르세요. Ray 설명서의 [Ray Core: Ray Tutorials and Examples (2.4.0)](https://docs.ray.io/en/releases-2.4.0/ray-core/examples/overview.html)를 참조하세요.
+  AWS Glue for Ray에서 사용 가능한 데이터 관리 라이브러리에 대한 지침은 [Ray 작업의 데이터에 연결](edit-script-ray-connections-formats.md) 섹션을 참조하세요. Ray Data를 사용하여 데이터 세트를 변환하고 작성하는 데 더 많은 경험을 쌓으려면 Ray Data 설명서의 예제를 따르세요. [Ray Data: Examples (2.4.0)](https://docs.ray.io/en/releases-2.4.0/data/examples/index.html)를 참조하세요.
+ AWS Glue for Ray 작업 구성에 대한 자세한 내용은 [AWS Glue에서 Ray 작업 사용](ray-jobs-section.md) 섹션을 참조하세요.
+ AWS Glue for Ray 스크립트 작성에 대한 자세한 내용은 이 섹션의 설명서를 계속 읽어보세요.

# AWS Glue for Ray에서 Ray Core 및 Ray Data 사용
<a name="edit-script-ray-scripting"></a>

**중요**  
AWS Glue for Ray는 2026년 4월 30일부터 신규 고객에게 더 이상 공개되지 않습니다. AWS Glue for Ray를 사용하려면 해당 날짜 이전에 가입하세요. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. AWS Glue for Ray와 유사한 기능의 경우 Amazon EKS를 살펴보세요. 자세한 내용은 [AWS Glue for Ray 지원 종료](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html)를 참조하세요.

Ray는 클러스터 전체에 작업을 분산하여 Python 스크립트 규모를 스케일 업하는 프레임워크입니다. Ray는 다양한 문제에 대한 솔루션으로 사용할 수 있으므로 Ray는 특정 작업을 최적화하는 라이브러리를 제공합니다. AWS Glue에서는 Ray를 사용하여 대규모 데이터 세트를 변환하는 데 중점을 둡니다. AWS Glue에서는 이 작업을 용이하게 하기 위해 Ray Data 및 Ray Core의 일부에 대한 지원을 제공합니다.

## Ray Core란 무엇인가요?
<a name="edit-script-ray-scripting-core-what"></a>

분산 애플리케이션을 구축하는 첫 번째 단계는 동시에 수행할 수 있는 작업을 식별하고 정의하는 것입니다. Ray Core에는 동시에 수행할 수 있는 작업을 정의하는 데 사용하는 Ray의 일부 기능이 포함되어 있습니다. Ray는 Ray에서 제공하는 도구를 익히는 데 사용할 수 있는 참조 정보 및 빠른 시작 정보를 제공합니다. 자세한 내용은 [What is Ray Core?](https://docs.ray.io/en/latest/ray-core/walkthrough.html) 및 [Ray Core Quick Start](https://docs.ray.io/en/latest/ray-overview/getting-started.html#ray-core-quick-start)를 참조하세요. Ray에서 동시 작업을 효과적으로 정의하는 방법에 대한 자세한 내용은 [Tips for first-time users](https://docs.ray.io/en/latest/ray-core/tips-for-first-time.html)를 참조하세요.

**Ray 작업 및 액터**  
AWS Glue for Ray 설명서에서는 Ray의 핵심 개념인 *작업* 및 *액터*를 언급할 수 있습니다.  
Ray는 Python 함수와 클래스를 분산 컴퓨팅 시스템의 구성 요소로 사용합니다. Python 함수와 변수가 클래스에서 사용될 때 '메서드'와 '속성' 역할을 하는 것과 마찬가지로, Ray에서 작업자에게 코드를 보낼 때 사용되는 함수는 '작업'이 되고 클래스는 '액터'가 됩니다. `@ray.remote` 주석을 통해 Ray에서 사용할 수 있는 함수와 클래스를 식별할 수 있습니다.  
작업과 액터는 구성이 가능하고, 수명 주기가 있으며, 수명 주기 동안 컴퓨팅 리소스를 차지합니다. 문제의 근본 원인을 찾을 때 작업이나 액터 수준까지 오류를 발생시키는 코드를 추적할 수 있습니다. 따라서 이러한 용어는 AWS Glue for Ray 작업의 구성, 모니터링 또는 디버깅 방법을 배울 때 언급될 수 있습니다.  
작업과 액터를 효과적으로 사용하여 분산 애플리케이션을 구축하는 방법을 배우려면 Ray 설명서의 [Key Concepts](https://docs.ray.io/en/latest/ray-core/key-concepts.html)를 참조하세요.

## AWS Glue for Ray의 Ray Core
<a name="edit-script-ray-scripting-core-glue"></a>

AWS Glue for Ray 환경은 클러스터 형성 및 규모 조정뿐만 아니라 로그 수집 및 시각화를 관리합니다. AWS에서도 이러한 항목을 관리하기 때문에 오픈 소스 클러스터에서 이러한 항목을 해결하는 데 사용되는 Ray Core의 API에 대한 액세스 및 지원이 제한됩니다.

관리형 `Ray2.4` 런타임 환경에서 다음을 지원하지 않습니다.
+ [Ray Core CLI](https://docs.ray.io/en/releases-2.4.0/ray-core/api/cli.html)
+ [Ray State CLI](https://docs.ray.io/en/releases-2.4.0/ray-observability/api/state/cli.html)
+ `ray.util.metrics` Prometheus 지표 유틸리티 메서드:
  + [Counter](https://docs.ray.io/en/releases-2.4.0/ray-core/api/doc/ray.util.metrics.Counter.html)
  + [Gauge](https://docs.ray.io/en/releases-2.4.0/ray-core/api/doc/ray.util.metrics.Gauge.html)
  + [Histogram](https://docs.ray.io/en/releases-2.4.0/ray-core/api/doc/ray.util.metrics.Histogram.html)
+ 기타 디버깅 도구:
  + [ray.util.pdb.set\$1trace](https://docs.ray.io/en/releases-2.4.0/ray-core/api/doc/ray.util.pdb.set_trace.html)
  + [ray.util.inspect\$1serializability](https://docs.ray.io/en/releases-2.4.0/ray-core/api/doc/ray.util.inspect_serializability.html)
  + [ray.timeline](https://docs.ray.io/en/releases-2.4.0/ray-core/api/doc/ray.timeline.html)

## Ray Data란 무엇인가요?
<a name="edit-script-ray-scripting-data-what"></a>

데이터 소스 및 대상에 연결하고, 데이터 세트를 처리하며, 일반적인 변환을 시작할 때 Ray Data는 Ray를 사용하여 Ray 데이터 세트 변환 관련 문제를 해결할 수 있는 간단한 방법입니다. Ray Data 사용에 대한 자세한 내용은 [Ray Datasets: Distributed Data Preprocessing](https://docs.ray.io/en/releases-2.4.0/data/dataset.html)을 참조하세요.

Ray Data 또는 기타 도구를 사용하여 데이터에 액세스할 수 있습니다. Ray에서 데이터에 액세스하는 방법에 대한 자세한 내용은 [Ray 작업의 데이터에 연결](edit-script-ray-connections-formats.md) 섹션을 참조하세요.

## AWS Glue for Ray의 Ray Data
<a name="edit-script-ray-scripting-data-glue"></a>

Ray Data는 관리형 `Ray2.4` 런타임 환경에서 기본적으로 지원되고 제공됩니다. 제공된 모듈에 대한 자세한 내용은 [Ray 작업과 함께 제공되는 모듈](edit-script-ray-env-dependencies.md#edit-script-ray-modules-provided) 섹션을 참조하세요.

# Ray 작업에 파일 및 Python 라이브러리 제공
<a name="edit-script-ray-env-dependencies"></a>

**중요**  
AWS Glue for Ray는 2026년 4월 30일부터 신규 고객에게 더 이상 공개되지 않습니다. AWS Glue for Ray를 사용하려면 해당 날짜 이전에 가입하세요. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. AWS Glue for Ray와 유사한 기능의 경우 Amazon EKS를 살펴보세요. 자세한 내용은 [AWS Glue for Ray 지원 종료](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html)를 참조하세요.

이 섹션에서는 AWS Glue Ray 작업에서 Python 라이브러리를 사용하는 데 필요한 정보를 제공합니다. 모든 Ray 작업에 기본적으로 포함된 특정 공용 라이브러리를 사용할 수 있습니다. Ray 작업에 자체 Python 라이브러리를 제공할 수도 있습니다.

## Ray 작업과 함께 제공되는 모듈
<a name="edit-script-ray-modules-provided"></a>

다음과 같은 제공된 패키지를 사용하여 Ray 작업에서 데이터 통합 워크플로를 수행할 수 있습니다. 이러한 패키지는 Ray 작업에서 기본적으로 사용할 수 있습니다.

------
#### [ AWS Glue version 4.0 ]

AWS Glue 4.0에서 Ray(`Ray2.4` 런타임) 환경은 다음 패키지를 제공합니다.
+ boto3 == 1.26.133
+ ray == 2.4.0
+ pyarrow == 11.0.0
+ pandas == 1.5.3
+ numpy == 1.24.3
+ fsspec == 2023.4.0

이 목록에는 `ray[data] == 2.4.0`과 함께 설치할 모든 패키지가 포함되어 있습니다. Ray Data는 기본적으로 지원됩니다.

------

## Ray 작업에 파일 제공
<a name="edit-script-ray-working-directory"></a>

`--working-dir` 파라미터를 사용하여 Ray 작업에 파일을 제공할 수 있습니다. Amazon S3에 호스팅된 .zip 파일의 경로를 이 파라미터에 제공합니다. .zip 파일 내에서 파일은 단일 최상위 디렉터리에 포함되어야 합니다. 최상위 수준에 다른 파일은 있을 수 없습니다.

스크립트를 실행하기 전에 파일이 각 Ray 노드에 배포됩니다. 이때 각 Ray 노드에서 사용할 수 있는 디스크 공간에 미치는 영향을 고려합니다. 사용 가능한 디스크 공간은 작업 구성에 설정된 WorkerType에 따라 결정됩니다. 작업 데이터를 대규모로 제공하려는 경우 이 메커니즘은 올바른 솔루션이 아닙니다. 작업에 데이터를 제공하는 방법에 대한 자세한 내용은 [Ray 작업의 데이터에 연결](edit-script-ray-connections-formats.md) 섹션을 참조하세요.

`working_dir` 파라미터를 통해 Ray에 디렉터리를 제공한 것처럼 파일에도 액세스할 수 있습니다. 예를 들어 .zip 파일의 최상위 디렉터리에서 이름이 `sample.txt`인 파일을 읽으려면 다음을 직접 호출할 수 있습니다.

```
@ray.remote
def do_work():
    f = open("sample.txt", "r")
    print(f.read())
```

`working_dir`에 대한 자세한 내용은 [Ray 설명서](https://docs.ray.io/en/latest/ray-core/handling-dependencies.html#remote-uris)를 참조하세요. 이 기능은 Ray의 기본 기능과 유사하게 작동합니다.

## Ray 작업을 위한 추가 Python 모듈
<a name="edit-script-ray-python-libraries-additional"></a>

**PyPI의 추가 모듈**

Ray 작업에서는 Python 패키지 설치 프로그램(pip3)을 사용하여 Ray 스크립트에서 사용할 추가 모듈을 설치합니다. `--pip-install` 파라미터를 쉼표로 구분된 Python 모듈 목록과 함께 사용하여 새 모듈을 추가하거나 기존 모듈의 버전을 변경할 수 있습니다.

예를 들어 새 `scikit-learn` 모듈을 업데이트하거나 추가하려면 다음 키 값 페어를 사용합니다.

`"--pip-install", "scikit-learn==0.21.3"`

사용자 지정 모듈이나 사용자 지정 패치가 있는 경우, Amazon S3에서 `--s3-py-modules` 파라미터를 사용하여 자체 라이브러리를 배포할 수 있습니다. 배포를 업로드하기 전에 다시 패키징하고 다시 구축해야 할 수도 있습니다. [Ray 작업에 Python 코드 포함](#edit-script-ray-packaging)의 지침을 따릅니다.

**Amazon S3의 사용자 지정 배포**

사용자 지정 배포는 종속성에 대한 Ray 패키징 지침을 준수해야 합니다. 다음 섹션에서 이러한 배포를 빌드하는 방법을 확인할 수 있습니다. Ray에서 종속성을 설정하는 방법에 대한 자세한 내용은 Ray 설명서의 [환경 종속성](https://docs.ray.io/en/latest/ray-core/handling-dependencies.html)을 참조하세요.

콘텐츠를 평가한 후 사용자 지정 배포 파일을 포함하려면 작업의 IAM 역할에서 사용할 수 있는 버킷에 배포 가능 파일을 업로드합니다. 파라미터 구성에서 Python zip 아카이브에 대한 Amazon S3 경로를 지정합니다. 배포 파일을 여러 개 제공하는 경우 쉼표로 구분합니다. 예제:

`"--s3-py-modules", "s3://s3bucket/pythonPackage.zip"` 

**제한 사항 **

Ray 작업에서는 작업 환경의 기본 코드 컴파일을 지원하지 않습니다. Python 종속성이 컴파일된 기본 코드에 전이적으로 종속되는 경우 이로 인해 제한될 수 있습니다. Ray 작업에서는 제공된 바이너리를 실행할 수 있지만 ARM64 기반 Linux용으로 컴파일해야 합니다. 즉, `aarch64``manylinux` Wheel의 콘텐츠를 사용할 수 있습니다. Wheel을 Ray 표준에 따라 다시 패키징하여 컴파일된 형식으로 기본 종속성을 제공할 수 있습니다. 일반적으로 이는 아카이브의 루트에 단 하나의 폴더만 남도록 `dist-info` 폴더를 제거하는 것을 의미합니다.

이 파라미터를 사용하여 `ray` 또는 `ray[data]` 버전을 업그레이드할 수 없습니다. 새 버전의 Ray를 사용하려면 지원이 출시된 후 작업의 런타임 필드를 변경해야 합니다. 지원되는 Ray 버전에 대한 자세한 내용은 [AWS Glue 버전](release-notes.md#release-notes-versions) 섹션을 참조하세요.

## Ray 작업에 Python 코드 포함
<a name="edit-script-ray-packaging"></a>

Python Software Foundation은 다양한 런타임에서 사용할 Python 파일을 패키징하기 위한 표준화된 동작을 제공합니다. Ray는 사용자가 숙지해야 하는 패키징 표준에 대한 제한 사항을 도입했습니다. AWS Glue에서는 Ray에 지정된 표준 이외의 패키징 표준을 지정하지 않습니다. 다음 지침은 간단한 Python 패키지 패키징 관련 표준 지침을 제공합니다.

파일을 `.zip` 아카이브에 패키징합니다. 디렉터리는 아카이브의 루트에 있어야 합니다. **아카이브의 루트 수준에 다른 파일이 없어야 합니다. 그렇지 않으면 예기치 않은 동작이 발생합니다.** 루트 디렉터리는 패키지이며 패키지 이름은 패키지를 가져올 때 Python 코드를 참조하는 데 사용됩니다.

`--s3-py-modules`를 사용하여 Ray 작업에 이 양식의 배포를 제공하는 경우 Ray 스크립트의 패키지 파일에서 Python 코드를 가져올 수 있습니다.

패키지는 몇 가지 Python 파일을 포함하는 단일 Python 모듈을 제공하거나 여러 모듈을 함께 패키징할 수 있습니다. PyPI의 라이브러리와 같은 종속성을 다시 패키징할 때 해당 패키지 내에 **숨겨진 파일 및 메타데이터 디렉터리가 있는지 확인**합니다.

**주의**  
 특정 OS 동작으로 인해 이러한 패키징 지침을 제대로 수행하지 못할 수 있습니다.  
OSX는 최상위 수준의 zip 파일에 숨겨진 파일(예: `__MACOSX`)을 추가할 수 있습니다.
Windows에서는 파일을 zip 내의 폴더에 자동으로 추가하여 의도치 않게 중첩된 폴더가 생성될 수 있습니다.

다음 절차에서는 Amazon Linux 2 또는 Info-ZIP `zip` 및 `zipinfo` 유틸리티 배포를 제공하는 유사한 OS에서 파일과 상호 작용하는 경우를 가정합니다. 예상치 못한 동작을 방지하려면 이러한 도구를 사용하는 것이 좋습니다.

Ray에서 사용할 Python 파일을 패키징하려면

1. 패키지 이름으로 임시 디렉터리를 생성하고 작업 디렉터리가 상위 디렉터리인지 확인합니다. 다음 명령으로 이를 수행할 수 있습니다.

   ```
   cd parent_directory
   mkdir temp_dir
   ```

1. 파일을 임시 디렉터리에 복사한 다음 디렉터리 구조를 확인합니다. 이 디렉터리의 콘텐츠는 Python 모듈로 직접 액세스됩니다. 이러한 권한 부여는 다음 명령을 사용하여 가능합니다.

   ```
   ls -AR temp_dir
   # my_file_1.py
   # my_file_2.py
   ```

1. zip을 사용하여 임시 폴더를 압축합니다. 다음 명령으로 이를 수행할 수 있습니다.

   ```
   zip -r zip_file.zip temp_dir
   ```

1. 파일이 제대로 패키징되었는지 확인합니다. 이제 작업 디렉터리에서 `zip_file.zip`을 찾을 수 있습니다. 다음 명령을 사용하여 검사할 수 있습니다.

   ```
   zipinfo -1 zip_file.zip
   # temp_dir/
   # temp_dir/my_file_1.py
   # temp_dir/my_file_2.py
   ```

Ray에서 사용할 Python 패키지를 다시 패키징하려면

1. 패키지 이름으로 임시 디렉터리를 생성하고 작업 디렉터리가 상위 디렉터리인지 확인합니다. 다음 명령으로 이를 수행할 수 있습니다.

   ```
   cd parent_directory
   mkdir temp_dir
   ```

1. 패키지의 압축을 풀고 콘텐츠를 임시 디렉터리에 복사합니다. 모듈의 콘텐츠만 남기고 이전 패키징 표준과 관련된 파일을 제거합니다. 다음 명령을 사용하여 파일 구조가 올바른지 확인합니다.

   ```
   ls -AR temp_dir
   # my_module
   # my_module/__init__.py
   # my_module/my_file_1.py
   # my_module/my_submodule/__init__.py
   # my_module/my_submodule/my_file_2.py
   # my_module/my_submodule/my_file_3.py
   ```

1. zip을 사용하여 임시 폴더를 압축합니다. 다음 명령으로 이를 수행할 수 있습니다.

   ```
   zip -r zip_file.zip temp_dir
   ```

1. 파일이 제대로 패키징되었는지 확인합니다. 이제 작업 디렉터리에서 `zip_file.zip`을 찾을 수 있습니다. 다음 명령을 사용하여 검사할 수 있습니다.

   ```
   zipinfo -1 zip_file.zip
   # temp_dir/my_module/
   # temp_dir/my_module/__init__.py
   # temp_dir/my_module/my_file_1.py
   # temp_dir/my_module/my_submodule/
   # temp_dir/my_module/my_submodule/__init__.py
   # temp_dir/my_module/my_submodule/my_file_2.py
   # temp_dir/my_module/my_submodule/my_file_3.py
   ```

# Ray 작업의 데이터에 연결
<a name="edit-script-ray-connections-formats"></a>

**중요**  
AWS Glue for Ray는 2026년 4월 30일부터 신규 고객에게 더 이상 공개되지 않습니다. AWS Glue for Ray를 사용하려면 해당 날짜 이전에 가입하세요. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. AWS Glue for Ray와 유사한 기능의 경우 Amazon EKS를 살펴보세요. 자세한 내용은 [AWS Glue for Ray 지원 종료](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html)를 참조하세요.

AWS Glue Ray 작업에서는 데이터를 빠르게 통합하도록 설계된 다양한 Python 패키지를 사용할 수 있습니다. 사용자 환경의 혼란이 가중되지 않도록 최소한의 종속성 세트가 제공됩니다. 기본적으로 포함되는 항목에 대한 자세한 정보는 [Ray 작업과 함께 제공되는 모듈](edit-script-ray-env-dependencies.md#edit-script-ray-modules-provided) 섹션을 참조하세요.

**참고**  
AWS Glue 추출, 전환, 적재(ETL)에서는 DynamicFrame 추상화를 제공하여 데이터 세트의 행 간 스키마 차이를 해결하는 ETL 워크플로를 간소화합니다. AWS Glue ETL은 추가 기능(예: 작업 북마크 및 입력 파일 그룹화)을 제공합니다. 현재 Ray 작업에서는 해당 기능을 제공하지 않습니다.  
AWS Glue for Spark는 특정 데이터 형식, 소스 및 싱크와의 연결을 직접 지원합니다. Ray에서 AWS SDK for pandas 및 최신 서드 파티 라이브러리가 실질적으로 이러한 요구 사항을 충족합니다. 사용 가능한 기능을 알아보려면 해당 라이브러리를 참조해야 합니다.

AWS Glue for Ray 및 Amazon VPC의 통합은 현재 사용할 수 없습니다. Amazon VPC 내 리소스는 퍼블릭 경로로만 액세스할 수 있습니다. Amazon VPC에서 AWS Glue를 사용하는 방법에 대한 자세한 내용은 [AWS Glue에 대한 인터페이스 VPC 엔드포인트(AWS PrivateLink) 구성(AWS PrivateLink)](vpc-interface-endpoints.md) 섹션을 참조하세요.

## Ray의 데이터 작업을 위한 공통 라이브러리
<a name="edit-script-ray-etl-libraries"></a>

**Ray Data** - Ray Data는 일반적인 데이터 형식, 소스 및 싱크를 처리하는 메서드를 제공합니다. Ray Data에서 지원되는 형식 및 소스에 대한 자세한 내용은 Ray Data 설명서의 [Input/Output](https://docs.ray.io/en/latest/data/api/input_output.html)을 참조하세요. Ray Data는 데이터 세트를 처리하기 위한 범용 라이브러리가 아닌, 독자적인 라이브러리입니다.

Ray는 Ray Data가 작업에 가장 적합한 솔루션일 수 있는 사용 사례에 대한 특정 지침을 제공합니다. 자세한 내용은 Ray 설명서에서 [Ray 사용 사례](https://docs.ray.io/en/latest/ray-overview/use-cases.html)를 참조하세요.

**AWS SDK for pandas (awswrangler)** – AWS SDK for pandas는 변환을 통해 pandas DataFrames로 데이터를 관리할 때 AWS 서비스에서 읽고 쓸 수 있는 테스트된 깔끔한 솔루션을 제공하는 AWS 제품입니다. AWS SDK for pandas에서 지원되는 형식 및 소스에 대한 자세한 내용은 AWS SDK for pandas 설명서의 [API Reference](https://aws-sdk-pandas.readthedocs.io/en/stable/api.html)를 참조하세요.

AWS SDK for pandas를 사용하여 데이터를 읽고 쓰는 방법에 대한 예제는 AWS SDK for pandas 설명서의 [Quick Start](https://aws-sdk-pandas.readthedocs.io/en/stable/)를 참조하세요. AWS SDK for pandas에서는 데이터에 대한 변환을 제공하지 않습니다. 소스에서의 읽기 및 쓰기만 지원합니다.

**Modin** – Modin은 일반적인 pandas 연산을 배포 가능한 방식으로 구현하는 Python 라이브러리입니다. Modin에 대한 자세한 내용은 [Modin 설명서](https://modin.readthedocs.io/en/stable/)를 참조하세요. Modin 자체는 소스에서의 읽기 및 쓰기를 지원하지 않습니다. 공통 변환의 분산 구현을 제공합니다. Modin은 AWS SDK for pandas에서 지원됩니다.

Ray 환경에서 Modin 및 AWS SDK for pandas를 함께 실행하면 공통 ETL 작업을 수행하여 더 뛰어난 결과를 얻을 수 있습니다. AWS SDK for pandas와 함께 Modin을 사용하는 방법에 대한 자세한 내용은 AWS SDK for pandas 설명서의 [At scale](https://aws-sdk-pandas.readthedocs.io/en/stable/scale.html)을 참조하세요.

**기타 프레임워크** - Ray가 지원하는 프레임워크에 대한 자세한 내용은 Ray 설명서의 [Ray 에코시스템](https://docs.ray.io/en/latest/ray-overview/ray-libraries.html)을 참조하세요. AWS Glue for Ray에서는 다른 프레임워크에 대한 지원을 제공하지 않습니다.

## 데이터 카탈로그를 통해 데이터에 연결
<a name="edit-script-ray-gludc"></a>

Ray 작업과 함께 데이터 카탈로그를 통해 데이터를 관리하는 기능은 AWS SDK for pandas에서 지원됩니다. 자세한 내용은 AWS SDK for pandas 웹사이트의 [Glue 카탈로그](https://aws-sdk-pandas.readthedocs.io/en/3.0.0rc2/tutorials/005%20-%20Glue%20Catalog.html)를 참조하세요.