

# Programación de scripts de Ray
<a name="aws-glue-programming-ray"></a>

**importante**  
AWS Glue para Ray ya no estará disponible para nuevos clientes a partir del 30 de abril de 2026. Si desea utilizar AWS Glue para Ray, regístrese antes de esa fecha. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener capacidades similares a AWS Glue para Ray, explore Amazon EKS. Para obtener más información, consulte [Finalización del soporte de AWS Glue para Ray](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html).

AWS Glue facilita la escritura y ejecución de scripts de Ray. En esta sección se describen las capacidades de Ray compatibles que están disponibles en AWS Glue para Ray. Programación de scripts de Ray en Python.

El script personalizado debe ser compatible con la versión de Ray definida en el campo `Runtime` de la definición de su trabajo. Para obtener más información sobre `Runtime` en la API de los trabajos, consulte [Jobs](aws-glue-api-jobs-job.md). Para obtener información acerca de cada entorno de tiempo de ejecución, consulte [Entornos de tiempo de ejecución de Ray compatibles](ray-jobs-section.md#author-job-ray-runtimes).

**Topics**
+ [Tutorial: Cómo escribir un script ETL en AWS Glue para Ray](edit-script-ray-intro-tutorial.md)
+ [Uso de Ray Core y Ray Data en AWS Glue para Ray](edit-script-ray-scripting.md)
+ [Proporcionar archivos y bibliotecas de Python a los trabajos de Ray](edit-script-ray-env-dependencies.md)
+ [Conexión a los datos de los trabajos de Ray](edit-script-ray-connections-formats.md)

# Tutorial: Cómo escribir un script ETL en AWS Glue para Ray
<a name="edit-script-ray-intro-tutorial"></a>

**importante**  
AWS Glue para Ray ya no estará disponible para nuevos clientes a partir del 30 de abril de 2026. Si desea utilizar AWS Glue para Ray, regístrese antes de esa fecha. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener capacidades similares a AWS Glue para Ray, explore Amazon EKS. Para obtener más información, consulte [Finalización del soporte de AWS Glue para Ray](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html).

Ray permite escribir y escalar tareas distribuidas de forma nativa en Python. AWS Glue para Ray ofrece entornos de Ray sin servidor a los que puede acceder tanto desde ambos trabajos y sesiones interactivas (las sesiones interactivas de Ray están en versión preliminar). El sistema de trabajo de AWS Glue proporciona una forma coherente de administrar y ejecutar las tareas de forma programada, mediante un disparador o desde la consola de AWS Glue. 

La combinación de estas herramientas de AWS Glue crea una poderosa cadena de herramientas que puede usar para la extracción, transformación y carga (ETL) de cargas de trabajo, un caso de uso popular para AWS Glue. En este tutorial, aprenderá los conceptos básicos de la creación de esta solución.

También admitimos el uso de AWS Glue para Spark para sus cargas de trabajo de ETL. Para obtener acceso a un tutorial acerca de la escritura de un script de AWS Glue para Spark, consulte [Tutorial: Escritura de un script de Glue for Spark AWS](aws-glue-programming-intro-tutorial.md). Para obtener más información sobre los motores disponibles, consulte [AWS Glue para Spark y AWS Glue para Ray](how-it-works-engines.md). Ray es capaz de abordar muchos tipos diferentes de tareas en los ámbitos de la analítica, machine learning y el desarrollo de aplicaciones. 

En este tutorial, extraerá, transformará y cargará un conjunto de datos de CSV alojado en Amazon Simple Storage Service (Amazon S3). Empezará con el conjunto de datos de registros de viajes de la Comisión de Taxis y Limusinas de Nueva York (TLC), que se almacena en un bucket público de Amazon S3. Para obtener más información sobre este conjunto de datos, consulte el [Registro de datos abiertos](https://registry.opendata.aws/nyc-tlc-trip-records-pds/) en AWS. 

Transformará sus datos con transformaciones predefinidas disponibles en la biblioteca Ray Data. Ray Data es una biblioteca de preparación de conjuntos de datos diseñada por Ray e incluida de forma predeterminada en los entornos de AWS Glue para Ray. Para obtener más información sobre las bibliotecas incluidad de forma predeterminada, consulte [Módulos incluidos con los trabajos de Ray](edit-script-ray-env-dependencies.md#edit-script-ray-modules-provided). A continuación, escribirá los datos transformados en un bucket de Amazon S3 que usted controle.

**Requisitos previos**: para este tutorial, necesita una cuenta de AWS con acceso a AWS Glue y a Amazon S3. 

## Paso 1: crear un bucket en Amazon S3 para almacenar los datos de salida
<a name="edit-script-ray-intro-tutorial-s3"></a>

Necesitará un bucket de Amazon S3 que pueda controlar para que sirva de depósito de los datos creados en este tutorial. Puede crear este bucket mediante el siguiente procedimiento.

**nota**  
Si quiere escribir sus datos en un bucket existente que usted controla, puede omitir este paso. Tome nota de *yourBucketName*, el nombre del bucket existente, para usarlo en pasos posteriores.

**Para crear un bucket para la salida del trabajo de Ray**
+ Para crear un bucket, siga los pasos que se indican en [Crear un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) en la *Guía del usuario de Amazon S3*.
  + Cuando elija el nombre de un bucket, tome nota de *yourBucketName*, que consultará en pasos posteriores.
  + Para otras configuraciones, la configuración sugerida que se proporciona en la consola de Amazon S3 debería funcionar correctamente en este tutorial.

  Por ejemplo, el cuadro de diálogo de creación del bucket podría tener este aspecto en la consola de Amazon S3.  
![\[Cuadro de diálogo en la consola de Amazon S3 que se utiliza para configurar un nuevo bucket.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/ray-tutorial-create-bucket.jpg)

## Paso 2: crear una política y rol de IAM para su trabajo de Ray
<a name="edit-script-ray-intro-tutorial-iam"></a>

Su trabajo necesitará un rol de AWS Identity and Access Management (IAM) con lo siguiente:
+ Permisos otorgados por la política administrada de `AWSGlueServiceRole`. Estos son los permisos básicos necesarios para ejecutar un trabajo de AWS Glue.
+ `Read` los permisos de nivel de acceso para el recurso de Amazon S3 `nyc-tlc/*`.
+ `Write` los permisos de nivel de acceso para el recurso de Amazon S3 `yourBucketName/*`.
+ Una relación de confianza que permite a la entidad principal `glue.amazonaws.com` asumir el rol.

Puede crear este rol mediante el siguiente procedimiento.

**Crear un rol de IAM para su trabajo de AWS Glue para Ray**
**nota**  
Puede seguir muchos procedimientos diferentes para crear un rol de IAM. Para obtener más información u opciones sobre cómo aprovisionar los recursos de IAM, consulte la [documentación de AWS Identity and Access Management](https://docs.aws.amazon.com/iam/index.html).

1. Cree una política que defina los permisos de Amazon S3 descritos anteriormente mediante los pasos que aparecen en [Creación de políticas de IAM (consola) con el editor visual](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-visual-editor) en la *Guía del usuario de IAM*.
   + Cuando seleccione un servicio, elija Amazon S3.
   + Cuando seleccione los permisos para su política, adjunte los siguientes conjuntos de acciones para los siguientes recursos (mencionados anteriormente):
     + Lea los permisos de nivel de acceso para el recurso de Amazon S3 `nyc-tlc/*`.
     + Escriba los permisos de nivel de acceso para el recurso de Amazon S3 `yourBucketName/*`.
   + Cuando seleccione el nombre de la política, tome nota de *YourPolicyName*, que consultará en un paso posterior.

1. Cree un rol para su trabajo de AWS Glue para Ray; para ello, siga los pasos que se indican en [Crear un rol para un servicio de AWS (consola)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console) en la *Guía del usuario de IAM*.
   + Cuando seleccione una entidad de servicio AWS de confianza, elija `Glue`. Esto completará automáticamente la relación de confianza necesaria para su trabajo.
   + Cuando seleccione políticas para la política de permisos, adjunte las siguientes políticas:
     + `AWSGlueServiceRole`
     + *YourPolicyName*
   + Cuando seleccione el nombre del rol, tome nota de *YourRoleName*, que consultará en pasos posteriores.

## Paso 3: crear y ejecutar un trabajo de AWS Glue para Ray
<a name="edit-script-ray-intro-tutorial-author-job"></a>

En este paso, usted crea un trabajo de AWS Glue mediante la Consola de administración de AWS, proporciona un script de ejemplo y ejecuta el trabajo. Cuando crea un trabajo, se crea un lugar en la consola para que usted almacene, configure y edite el script de Ray. Para obtener más información acerca de la creación de trabajos, consulte [Administración de trabajos de AWS Glue en la consola de AWS](author-job-glue.md#console-jobs).

En este tutorial, abordamos el siguiente escenario de ETL: lea los registros de enero de 2022 del conjunto de datos de Registros de viajes de TLC de New York City, agregue una nueva columna (`tip_rate`) al conjunto de datos mediante la combinación de datos en las columnas existentes; luego, elimine la cantidad de columnas que no sean relevantes para el análisis actual y, a continuación, escriba los resultados en *yourBucketName*. El siguiente script de Ray lleva a cabo estos pasos:

```
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/")
```

**Para crear y ejecutar un trabajo de AWS Glue para Ray**

1. En la Consola de administración de AWS, vaya a la página de inicio de AWS Glue.

1. En el panel de navegación lateral, seleccione **Trabajos de ETL**.

1. En **Crear trabajo**, elija **Editor de script de Ray** y, a continuación, elija **Crear**, como se muestra en la siguiente ilustración.  
![\[Un cuadro de diálogo de la consola de AWS Glue que se utiliza para crear un trabajo de Ray.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/edit-script-ray-create.png)

1. Pegue el texto completo del script en el panel **Script** y sustituya el texto existente.

1. Vaya a **Detalles del trabajo** y configure la propiedad de **rol de IAM** en *YourRoleName*.

1. Elija **Guardar** y, a continuación, elija **Ejecutar**.

## Paso 4: inspeccionar la salida
<a name="edit-script-ray-intro-tutorial-inspect"></a>

Después de ejecutar su trabajo de AWS Glue, debe validar que el resultado cumpla con las expectativas de este escenario. Puede hacerlo mediante el siguiente procedimiento.

**Para validar si su trabajo de Ray se ejecutó correctamente**

1. En la página de detalles del trabajo, vaya a **Ejecuciones**.

1. Después de unos minutos, debería ver una ejecución con el **Estado de ejecución** como **Correcto**.

1. Vaya a la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) e inspeccione *yourBucketName*. Debería ver los archivos escritos en su bucket de salida.

1. Lea los archivos de Parquet y verifique su contenido. Puede hacerlo con las herramientas existentes. Si no dispone de un proceso para validar los archivos de Parquet, puede hacerlo en la consola de AWS Glue mediante una sesión interactiva de AWS Glue, con Spark o Ray (versión preliminar).

   En una sesión interactiva, tiene acceso a las bibliotecas Ray Data, Spark o pandas, que se proporcionan de forma predeterminada (según el motor que elija). Para verificar el contenido del archivo, puede usar los métodos de inspección habituales disponibles en esas bibliotecas, como `count`, `schema` y `show`. Para obtener más información sobre las sesiones interactivas en la consola, consulte [Uso de cuaderno con AWS Glue Studio y AWS Glue](https://docs.aws.amazon.com/glue/latest/ug/notebooks-chapter.html). 

   Como ha confirmado que los archivos se han escrito en el bucket, puede decir con relativa certeza que si el resultado tiene problemas, no están relacionados con la configuración de IAM. Configure su sesión con *YourRoleName* para tener acceso a los archivos pertinentes.

Si no ve los resultados esperados, examine el contenido de resolución de problemas que aparecen en esta guía para identificar y corregir el origen del error. Encontrará el contenido sobre la resolución de problemas en el capítulo [Resolución de problemas de AWS Glue](troubleshooting-glue.md). Para ver errores específicos relacionados con los trabajos de Ray, consulte [Solución de problemas AWS Glue de errores de Ray en los registros](troubleshooting-ray.md) en el capítulo sobre resolución de problemas. 

## Siguientes pasos
<a name="edit-script-ray-intro-tutorial-next"></a>

 Ya ha visto y realizado un proceso de ETL mediante AWS Glue para Ray de principio a fin. Puede utilizar los siguientes recursos a fin de comprender qué herramientas proporciona AWS Glue para Ray para transformar e interpretar sus datos a escala. 
+  Para obtener más información sobre este tema, consulte [Uso de Ray Core y Ray Data en AWS Glue para Ray](edit-script-ray-scripting.md). Para obtener más experiencia en el uso de las tareas de Ray, siga los ejemplos que aparecen en la documentación de Ray Core. Consulte [Ray Core: Ray Tutorials and Examples (2.4.0)](https://docs.ray.io/en/releases-2.4.0/ray-core/examples/overview.html) en la documentación de Ray. 
+  Para obtener información sobre las bibliotecas de administración de datos disponibles en AWS Glue para Ray, consulte [Conexión a los datos de los trabajos de Ray](edit-script-ray-connections-formats.md). Para obtener más experiencia en el uso de Ray Data para transformar y escribir conjuntos de datos, siga los ejemplos que aparecen en la documentación de Ray Data. Consulte [Ray Data: Examples (2.4.0](https://docs.ray.io/en/releases-2.4.0/data/examples/index.html)). 
+ Para obtener más información sobre la configuración de trabajos de AWS Glue para Ray, consulte [Trabajar con tareas de Ray en AWS Glue](ray-jobs-section.md).
+ Para obtener más información sobre cómo escribir scripts de AWS Glue para Ray, continúe leyendo la documentación de esta sección.

# Uso de Ray Core y Ray Data en AWS Glue para Ray
<a name="edit-script-ray-scripting"></a>

**importante**  
AWS Glue para Ray ya no estará disponible para nuevos clientes a partir del 30 de abril de 2026. Si desea utilizar AWS Glue para Ray, regístrese antes de esa fecha. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener capacidades similares a AWS Glue para Ray, explore Amazon EKS. Para obtener más información, consulte [Finalización del soporte de AWS Glue para Ray](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html).

Ray es un marco para escalar verticalmente los scripts de Python mediante la distribución del trabajo en un clúster. Puede usar Ray como solución a muchos tipos de problemas, por lo que Ray proporciona bibliotecas para optimizar determinadas tareas. En AWS Glue, nos centramos en usar Ray para transformar grandes conjuntos de datos. AWS Glueofrece soporte para Ray Data y partes de Ray Core a fin de facilitar esta tarea. 

## ¿Qué es Ray Core?
<a name="edit-script-ray-scripting-core-what"></a>

El primer paso para crear una aplicación distribuida es identificar y definir el trabajo que se puede realizar de forma simultánea. Ray Core contiene las partes de Ray que se utilizan para definir las tareas que se pueden realizar de forma simultánea. Ray proporciona información de referencia y de inicio rápido que puede utilizar para aprender las herramientas que proporcionan. Para obtener más información, consulte [¿Qué es Ray Core?](https://docs.ray.io/en/latest/ray-core/walkthrough.html) y [Ray Core Quick Start](https://docs.ray.io/en/latest/ray-overview/getting-started.html#ray-core-quick-start). Para obtener más información sobre cómo definir eficazmente las tareas simultáneas en Ray, consulte [Consejos para usuarios principiantes](https://docs.ray.io/en/latest/ray-core/tips-for-first-time.html). 

**Tareas y actores de Ray**  
En la documentación de AWS Glue para Ray, podríamos referirnos a las *tareas* y los *actores*, que son conceptos básicos de Ray.  
Ray usa las características y clases de Python como bloques de construcción de un sistema de computación distribuida. Al igual que cuando las características y variables de Python se convierten en “métodos” y “atributos” cuando se usan en una clase, las funciones se convierten en “tareas” y las clases se convierten en “actores” cuando se usan en Ray para enviar código a los trabajadores. Mediante la anotación de `@ray.remote`, puede identificar las características y las clases que Ray podría usar.  
Las tareas y los actores son configurables, tienen un ciclo de vida y consumen recursos informáticos a lo largo de su vida. El código que genera errores se puede rastrear hasta una tarea o actor cuando se busca la causa raíz de los problemas. Por lo tanto, estos términos pueden surgir cuando aprenda a configurar, monitorear o depurar trabajos de AWS Glue para Ray.   
Para empezar a aprender a utilizar eficazmente las tareas y los actores a fin de crear una aplicación distribuida, consulte [Conceptos clave](https://docs.ray.io/en/latest/ray-core/key-concepts.html) en los documentos de Ray.

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

AWS Glue para los entornos de Ray administra la formación y el escalado vertical de los clústeres, así como la recopilación y visualización de registros. Como gestionamos estos problemas, limitamos el acceso y el soporte a las API de Ray Core que se utilizarían para abordar estos problemas en un clúster de código abierto.

En el entorno de tiempo de ejecución de `Ray2.4` administrado, no admitimos lo siguiente:
+ [CLI de Ray Core](https://docs.ray.io/en/releases-2.4.0/ray-core/api/cli.html)
+ [CLI de Ray State](https://docs.ray.io/en/releases-2.4.0/ray-observability/api/state/cli.html)
+ `ray.util.metrics`Métodos de utilidad métrica de Prometheus:
  + [Contador](https://docs.ray.io/en/releases-2.4.0/ray-core/api/doc/ray.util.metrics.Counter.html)
  + [Calibre](https://docs.ray.io/en/releases-2.4.0/ray-core/api/doc/ray.util.metrics.Gauge.html)
  + [Histograma](https://docs.ray.io/en/releases-2.4.0/ray-core/api/doc/ray.util.metrics.Histogram.html)
+ Otras herramientas de depuración:
  + [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\$1serializabilidad](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)

## ¿Qué es Ray Data?
<a name="edit-script-ray-scripting-data-what"></a>

Cuando se conecta a orígenes y destinos de datos, gestiona conjuntos de datos e inicia transformaciones comunes, Ray Data es una metodología sencilla para usar Ray a fin de resolver problemas mediante la transformación de conjuntos de datos de Ray. Para obtener más información sobre el uso de Ray Data, consulte [Ray Datasets: Preprocesamiento de datos distribuidos](https://docs.ray.io/en/releases-2.4.0/data/dataset.html). 

Puede usar Ray Data u otras herramientas para acceder a sus datos. Para obtener más información sobre cómo acceder a sus datos en Ray, consulte [Conexión a los datos de los trabajos de Ray](edit-script-ray-connections-formats.md).

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

Ray Data es compatible y se proporciona de forma predeterminada en el entorno de tiempo de ejecución de `Ray2.4` administrado. Para obtener más información sobre los módulos proporcionados, consulte [Módulos incluidos con los trabajos de Ray](edit-script-ray-env-dependencies.md#edit-script-ray-modules-provided).

# Proporcionar archivos y bibliotecas de Python a los trabajos de Ray
<a name="edit-script-ray-env-dependencies"></a>

**importante**  
AWS Glue para Ray ya no estará disponible para nuevos clientes a partir del 30 de abril de 2026. Si desea utilizar AWS Glue para Ray, regístrese antes de esa fecha. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener capacidades similares a AWS Glue para Ray, explore Amazon EKS. Para obtener más información, consulte [Finalización del soporte de AWS Glue para Ray](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html).

En esta sección, se proporciona información que se necesita para utilizar las bibliotecas de Python con los trabajos de Ray de AWS Glue. Puede utilizar determinadas bibliotecas comunes incluidas de forma predeterminada en todos los trabajos de Ray. También puede proporcionar sus propias bibliotecas de Python en su trabajo de Ray. 

## Módulos incluidos con los trabajos de Ray
<a name="edit-script-ray-modules-provided"></a>

Puede aplicar flujos de trabajo de integración de datos en un trabajo de Ray con los siguientes paquetes proporcionados. Estos paquetes están disponibles de manera predeterminada en trabajos de Ray.

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

En AWS Glue 4.0, el entorno de Ray (tiempo de ejecución `Ray2.4`) proporciona los siguientes paquetes:
+ boto3 == 1.26.133
+ ray == 2.4.0
+ pyarrow == 11.0.0
+ pandas == 1.5.3
+ numpy == 1.24.3
+ fsspec == 2023.4.0

Esta lista incluye todos los paquetes que se instalarían con `ray[data] == 2.4.0`. Ray Data se admite de fábrica.

------

## Proporcionar archivos a su trabajo de Ray
<a name="edit-script-ray-working-directory"></a>

Puede proporcionar archivos a su trabajo de Ray con el parámetro `--working-dir`. Proporcione este parámetro con una ruta a un archivo .zip alojado en Amazon S3. Dentro del archivo .zip, los archivos deben estar contenidos en un único directorio de nivel superior. No debe haber ningún otro archivo en el nivel superior.

Los archivos se distribuirán a cada nodo de Ray antes de que el script comience a ejecutarse. Considere cómo esto podría repercutir en el espacio en disco disponible para cada nodo de Ray. El espacio en disco disponible viene determinado por el WorkerType establecido en la configuración del trabajo. Si desea proporcionar los datos de su trabajo a escala, este mecanismo no es la solución adecuada. Para obtener más información sobre cómo proporcionar datos a sus trabajos, consulte [Conexión a los datos de los trabajos de Ray](edit-script-ray-connections-formats.md). 

Se podrá acceder a sus archivos como si el directorio se hubiera proporcionado a Ray a través del parámetro `working_dir`. Por ejemplo, para leer un archivo denominado `sample.txt` en el directorio de nivel superior del archivo .zip, puede llamar a:

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

Para obtener más información acerca de `working_dir`, consulte la [documentación de Ray](https://docs.ray.io/en/latest/ray-core/handling-dependencies.html#remote-uris). Esta característica se comporta de forma similar a las capacidades nativas de Ray.

## Módulos de Python adicionales para trabajos de Ray
<a name="edit-script-ray-python-libraries-additional"></a>

**Módulos adicionales de PyPI**

Los trabajos de Ray utilizan el instalador de paquetes de Python (pip3) para instalar los módulos adicionales que utilizará un script de Ray. Puede utilizar el parámetro `--pip-install` con una lista de módulos de Python separados por comas para agregar un nuevo módulo o cambiar la versión de un módulo existente. 

Por ejemplo, para actualizar o agregar un nuevo módulo `scikit-learn`, utilice el siguiente par clave-valor: 

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

Si tiene módulos o parches personalizados, puede distribuir sus propias bibliotecas desde Amazon S3 con el parámetro `--s3-py-modules`. Es posible que sea necesario volver a empaquetar y compilar su distribución antes de cargarla. Seguir las directrices en [Incluir código Python en los trabajos de Ray](#edit-script-ray-packaging).

**Distribuciones personalizadas de Amazon S3**

Las distribuciones personalizadas deben cumplir con las pautas de empaquetado de Ray para las dependencias. Puede encontrar información sobre la compilación de estas distribuciones en la siguiente sección. Para obtener más información sobre cómo Ray configura las dependencias, consulte [Environment Dependencies](https://docs.ray.io/en/latest/ray-core/handling-dependencies.html) (Dependencias de entorno) en la documentación de Ray. 

Para incluir un distribuible personalizado después de evaluar su contenido, cárguelo en un bucket disponible para el rol de IAM del trabajo. Especifique la ruta de Amazon S3 a un archivo zip de Python en la configuración del parámetro. Si proporciona varios distribuibles, sepárelos con comas. Por ejemplo:

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

**Limitaciones**

Los trabajos de Ray no admiten la compilación de código nativo en el entorno de trabajo. Esto puede ser una limitación si las dependencias de Python dependen de forma transitiva de código nativo compilado. Los trabajos de Ray pueden ejecutar los binarios proporcionados, pero deben compilarse para Linux en ARM64. Esto significa que quizás pueda utilizar el contenido de las ruedas de `aarch64``manylinux`. Para poder proporcionar las dependencias nativas en un formato compilado, vuelva a empaquetar una rueda según los estándares de Ray. Por lo general, esto significa eliminar las carpetas `dist-info` para que solo haya una carpeta en la raíz del archivo. 

No puede actualizar la versión de `ray` o `ray[data]` mediante este parámetro. Para usar una nueva versión de Ray, tendrá que cambiar el campo de tiempo de ejecución de su trabajo una vez que hayamos publicado el soporte para ello. Para obtener más información acerca de las versiones de Ray admitidas, consulte [AWS GlueVersiones de](release-notes.md#release-notes-versions).

## Incluir código Python en los trabajos de Ray
<a name="edit-script-ray-packaging"></a>

Python Software Foundation ofrece comportamientos estandarizados para empaquetar archivos de Python para su uso en diferentes entornos de ejecución. Ray introduce limitaciones en los estándares de empaquetado que debe conocer. AWS Glue no especifica estándares de empaquetado más allá de los especificados para Ray. Las siguientes instrucciones proporcionan una guía estándar sobre cómo empaquetar paquetes simples de Python.

Empaquete sus archivos en un archivo `.zip`. El directorio debe estar en la raíz del archivo. **No debe haber ningún otro archivo en el nivel raíz del archivo; de lo contrario, se producirá un comportamiento inesperado.** El directorio raíz es el paquete, y su nombre se utiliza para hacer referencia al código de Python al importarlo.

Si proporciona una distribución de esta forma a un trabajo de Ray con `--s3-py-modules`, podrá importar código de Python del paquete en el script de Ray.

Su paquete puede proporcionar un único módulo de Python con algunos archivos de Python o puede empaquetar varios módulos juntos. Al volver a empaquetar las dependencias, como las bibliotecas de PyPI, **compruebe si hay archivos ocultos y directorios de metadatos** dentro de esos paquetes. 

**aviso**  
 Determinados comportamientos del sistema operativo dificultan el seguimiento correcto de estas instrucciones de empaquetado.   
OSX puede agregar archivos ocultos, como `__MACOSX`, a su archivo zip en el nivel superior.
Windows puede agregar sus archivos a una carpeta dentro del zip automáticamente y crear involuntariamente una carpeta anidada.

En los siguientes procedimientos se supone que interactúa con los archivos en Amazon Linux 2 o en un sistema operativo similar que proporciona una distribución de las utilidades `zip` y `zipinfo` de Info-ZIP. Recomendamos utilizar estas herramientas para evitar comportamientos inesperados. 

Para empaquetar archivos de Python para usarlos en Ray

1. Cree un directorio temporal con el nombre de su paquete; a continuación, confirme que su directorio de trabajo es el directorio principal. Puede hacer esto con los siguientes comandos:

   ```
   cd parent_directory
   mkdir temp_dir
   ```

1. Copie los archivos en el directorio temporal; a continuación, confirme la estructura del directorio. Se accederá directamente al contenido de este directorio como módulo de Python. Puede hacer esto con el siguiente comando de la :

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

1. Use zip para comprimir la carpeta temporal. Puede hacer esto con los siguientes comandos:

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

1. Confirme que el archivo esté correctamente empaquetado. Ahora, `zip_file.zip` debería encontrarse en su directorio de trabajo. Puede inspeccionarlo con el siguiente comando:

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

Volver a empaquetar un paquete de Python para usarlo en Ray.

1. Cree un directorio temporal con el nombre de su paquete; a continuación, confirme que su directorio de trabajo es el directorio principal. Puede hacer esto con los siguientes comandos:

   ```
   cd parent_directory
   mkdir temp_dir
   ```

1. Descomprima el paquete y copie el contenido en el directorio temporal. Elimine los archivos relacionados con su estándar de empaquetado anterior y deje solo el contenido del módulo. Confirme que la estructura de archivos sea correcta con el siguiente comando:

   ```
   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. Use zip para comprimir la carpeta temporal. Puede hacer esto con los siguientes comandos:

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

1. Confirme que el archivo esté correctamente empaquetado. Ahora, `zip_file.zip` debería encontrarse en su directorio de trabajo. Puede inspeccionarlo con el siguiente comando:

   ```
   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
   ```

# Conexión a los datos de los trabajos de Ray
<a name="edit-script-ray-connections-formats"></a>

**importante**  
AWS Glue para Ray ya no estará disponible para nuevos clientes a partir del 30 de abril de 2026. Si desea utilizar AWS Glue para Ray, regístrese antes de esa fecha. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener capacidades similares a AWS Glue para Ray, explore Amazon EKS. Para obtener más información, consulte [Finalización del soporte de AWS Glue para Ray](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html).

Los trabajos de Ray de AWS Glue pueden usar una amplia matriz de paquetes de Python que están diseñados para que usted pueda integrar datos rápidamente. Proporcionamos un conjunto mínimo de dependencias para no saturar su entorno. Para obtener más información acerca de lo que se incluye de forma predeterminada, consulte [Módulos incluidos con los trabajos de Ray](edit-script-ray-env-dependencies.md#edit-script-ray-modules-provided).

**nota**  
Extracción, transformación y carga (ETL) de AWS Glue proporciona la abstracción de DynamicFrame para simplificar los flujos de trabajo de ETL en los que se resuelven las diferencias de esquema entre las filas en el conjunto de datos. AWS Glue ETL ofrece características adicionales: marcadores de trabajos y agrupación de archivos entrada. Por el momento, no proporcionamos las características correspondientes en los trabajos de Ray.  
AWS Glue para Spark ofrece asistencia directa para conectarse a determinados formatos, orígenes y receptores de datos. En Ray, AWS SDK para pandas y bibliotecas externas actuales cubren sustancialmente esa necesidad. Deberá consultar esas bibliotecas para conocer las capacidades disponibles.

La integración de AWS Glue para Ray con Amazon VPC no está disponible actualmente. No se podrá acceder a los recursos de Amazon VPC sin una ruta pública. Para obtener más información acerca del uso de AWS Glue con Amazon VPC, consulte [Configuración de puntos de conexión de la VPC de tipo interfaz (AWS PrivateLink) para AWS Glue (AWS PrivateLink)](vpc-interface-endpoints.md). 

## Bibliotecas comunes para trabajar con datos en Ray
<a name="edit-script-ray-etl-libraries"></a>

**Ray Data**: Ray Data proporciona métodos para gestionar formatos, orígenes y receptores de datos comunes. Para obtener más información sobre los formatos y orígenes compatibles con Ray Data, consulte [Input/Output](https://docs.ray.io/en/latest/data/api/input_output.html) en la documentación de Ray Data. Ray Data es una biblioteca obstinada, en lugar de una biblioteca de uso general, para gestionar conjuntos de datos. 

Ray proporciona cierta orientación sobre los casos de uso en los que Ray Data podría ser la mejor solución para su trabajo. Para obtener más información, consulte [Casos de uso de Ray](https://docs.ray.io/en/latest/ray-overview/use-cases.html) en la documentación de Ray. 

**AWS SDK para pandas (awswrangler)**: AWS SDK es un producto de AWS que ofrece soluciones limpias y probadas para leer y escribir en los servicios de AWS cuando las transformaciones administran datos con DataFrames de pandas. Para obtener más información sobre los formatos y orígenes compatibles con AWS SDK para pandas, consulte [API Reference](https://aws-sdk-pandas.readthedocs.io/en/stable/api.html) en la documentación de AWS SDK para pandas. 

Para ver ejemplos de cómo leer y escribir datos con AWS SDK para pandas, consulte [Quick Start](https://aws-sdk-pandas.readthedocs.io/en/stable/) en la documentación de AWS SDK para pandas. AWS SDK para pandas no proporciona transformaciones para sus datos. Solo proporciona asistencia para leer y escribir desde las orígenes. 

**Modin**: Modin es una biblioteca de Python que implementa operaciones comunes de pandas de forma distribuible. Para obtener más información sobre Modin, consulte [la documentación de Mondin](https://modin.readthedocs.io/en/stable/). Modin en sí no admite la lectura y la escritura a partir de orígenes. Proporciona implementaciones distribuidas de transformaciones comunes. AWS SDK para pandas admite Modin. 

Cuando ejecuta Modin y AWS SDK para pandas juntos en un entorno de Ray, puede realizar tareas ETL habituales con resultados de alto rendimiento. Para obtener más información sobre el uso de Modin con AWS SDK para pandas, consulte [At scale](https://aws-sdk-pandas.readthedocs.io/en/stable/scale.html) en la documentación de AWS SDK para pandas. 

**Otros esquemas**: para obtener más información sobre los esquemas compatibles con Ray, consulte [El ecosistema de Ray](https://docs.ray.io/en/latest/ray-overview/ray-libraries.html) en la documentación de Ray. No ofrecemos soporte para otros marcos en el caso AWS Glue para Ray.

## Conexión a los datos mediante el Catálogo de datos
<a name="edit-script-ray-gludc"></a>

AWS SDK para pandas admite la administración de los datos a través del Catálogo de datos junto con los trabajos de Ray. Para más información, consulte [Glue Catalog](https://aws-sdk-pandas.readthedocs.io/en/3.0.0rc2/tutorials/005%20-%20Glue%20Catalog.html) (Catálogo de Glue) en el sitio web de AWS SDK para pandas.