

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Carga de datos desde Amazon EMR
<a name="loading-data-from-emr"></a>

Puede utilizar el comando COPY para cargar datos en paralelo desde un clúster de Amazon EMR configurado para escribir archivos de texto en el sistema de archivos distribuido de Hadoop (HDFS) del clúster, como archivos de ancho fijo, archivos delimitados por caracteres, archivos CSV o archivos con formato JSON.

## Proceso para cargar datos desde Amazon EMR
<a name="load-from-emr-process"></a>

En esta sección, se detalla el proceso de carga de datos desde un clúster de Amazon EMR. En las siguientes secciones, se proporcionan los detalles que debe completar en cada paso.
+ **[Paso 1: Configurar los permisos de IAM](#load-from-emr-steps-configure-iam)**

  Los usuarios que crean el clúster de Amazon EMR y ejecutan el comando COPY de Amazon Redshift deben tener los permisos necesarios.
+ **[Paso 2: Crear un clúster de Amazon EMR](#load-from-emr-steps-create-cluster)**

  Configure el clúster para que produzca archivos de texto para Hadoop Distributed File System (HDFS). Necesitará el ID de clúster de Amazon EMR y el DNS público principal del clúster (el punto de conexión de la instancia de Amazon EC2 que aloja el clúster). 
+ **[Paso 3: Recuperar la clave pública del clúster de Amazon Redshift y las direcciones IP del nodo del clúster](#load-from-emr-steps-retrieve-key-and-ips)**

  La clave pública permite a los nodos del clúster de Amazon Redshift establecer conexiones SSH a los alojamientos. Usará la dirección IP para cada nodo del clúster con objeto de configurar los grupos de seguridad del alojamiento para que permitan obtener acceso desde su clúster de Amazon Redshift con esas direcciones IP. 
+ **[Paso 4: Agregar la clave pública del clúster de Amazon Redshift al archivo de claves autorizadas de cada alojamiento de Amazon EC2](#load-from-emr-steps-add-key-to-host)** 

  Debe agregar la clave pública del clúster de Amazon Redshift al archivo de claves autorizadas del alojamiento para que este último reconozca el clúster de Amazon Redshift y acepte la conexión SSH. 
+ **[Paso 5: Configurar los alojamientos para que acepten todas las direcciones IP del clúster de Amazon Redshift](#load-from-emr-steps-configure-security-groups)** 

  Modifique los grupos de seguridad de la instancia de Amazon EMR para agregar reglas de entrada que acepten las direcciones IP de Amazon Redshift.
+ **[Paso 6: Ejecutar el comando COPY para cargar los datos](#load-from-emr-steps-run-copy)**

  Ejecute el comando COPY desde una base de datos de Amazon Redshift para cargar los datos en una tabla de Amazon Redshift. 

## Paso 1: Configurar los permisos de IAM
<a name="load-from-emr-steps-configure-iam"></a>

Los usuarios que crean el clúster de Amazon EMR y ejecutan el comando COPY de Amazon Redshift deben tener los permisos necesarios.

**Pasos para configurar los permisos de IAM**

1. Agregue los siguientes permisos para el usuario que creará el clúster de Amazon EMR.

   ```
   ec2:DescribeSecurityGroups
   ec2:RevokeSecurityGroupIngress
   ec2:AuthorizeSecurityGroupIngress
   redshift:DescribeClusters
   ```

1. Agregue el siguiente permiso para el rol o usuario de IAM que ejecutará el comando COPY.

   ```
   elasticmapreduce:ListInstances
   ```

1. Agregue el siguiente permiso al rol de IAM del clúster de Amazon EMR.

   ```
   redshift:DescribeClusters
   ```

## Paso 2: Crear un clúster de Amazon EMR
<a name="load-from-emr-steps-create-cluster"></a>

El comando COPY carga datos de archivos en el Hadoop Distributed File System (HDFS) de Amazon EMR. Cuando cree el clúster de Amazon EMR, configúrelo para que genere archivos de datos para el HDFS del clúster.

**Para crear un clúster de Amazon EMR**

1. Cree un clúster de Amazon EMR en la misma región de AWS que el clúster de Amazon Redshift. 

   Si el clúster de Amazon Redshift se encuentra en una VPC, el clúster de Amazon EMR debe encontrarse en el mismo grupo de la VPC. Si el clúster de Amazon Redshift usa el modo EC2-Classic (es decir, no se encuentra en una VPC), el clúster de Amazon EMR también debe usar el modo EC2-Classic. Para obtener más información, consulte [Administración de clústeres en una nube privada virtual (VPC)](https://docs.aws.amazon.com/redshift/latest/mgmt/managing-clusters-vpc.html) en la *Guía de administración de Amazon Redshift*.

1. Configure el clúster para que genere archivos de datos para el HDFS del clúster. Los nombres de los archivos HDFS no deben incluir asteriscos (\$1) ni signos de interrogación (?).
**importante**  
Los nombres de los archivos no deben incluir asteriscos (\$1) ni signos de interrogación (?).

1. Especifique **No** en la opción **Auto-terminate** (Terminar automáticamente) de la configuración del clúster de Amazon EMR para que el clúster permanezca disponible mientras se ejecuta el comando COPY. 
**importante**  
Si se cambia o se elimina cualquiera de los archivos de datos antes de que se complete la operación COPY, se podrían obtener resultados inesperados o la operación COPY podría provocar un error. 

1. Tome nota del ID de clúster y del DNS público principal del clúster (el punto de conexión para la instancia de Amazon EC2 que aloja el clúster). Usará esa información en pasos posteriores. 

## Paso 3: Recuperar la clave pública del clúster de Amazon Redshift y las direcciones IP del nodo del clúster
<a name="load-from-emr-steps-retrieve-key-and-ips"></a>

Usará la dirección IP para cada nodo del clúster con objeto de configurar los grupos de seguridad del alojamiento para que permitan obtener acceso desde su clúster de Amazon Redshift con esas direcciones IP.

**Para recuperar la clave pública del clúster de Amazon Redshift y las direcciones IP del nodo del clúster para su clúster con la consola**

1. Acceda a la consola de administración de Amazon Redshift. 

1. Elija el enlace de **Clusters** (Clústeres) en el panel de navegación. 

1. Seleccione su clúster de la lista. 

1. Localice el grupo **SSH Ingestion Settings (Configuración de ingestión de SSH)**. 

   Tome nota de los valores de **Cluster Public Key (Clave pública del clúster)** y **Node IP addresses (Direcciones IP del nodo)**. Los usará en pasos posteriores.   
![\[Captura de pantalla del grupo de configuración de ingestión de SSH que muestra la clave pública del clúster y las direcciones IP del nodo.\]](http://docs.aws.amazon.com/es_es/redshift/latest/dg/images/copy-from-ssh-console-2.png)

   En el paso 3, usará las direcciones IP privadas para configurar el host de Amazon EC2 de forma que acepte la conexión de Amazon Redshift. 

Para recuperar la clave pública del clúster y las direcciones IP del nodo del clúster para su clúster mediante la CLI de Amazon Redshift, ejecute el comando describe-clusters. Por ejemplo:

```
aws redshift describe-clusters --cluster-identifier <cluster-identifier> 
```

La respuesta incluirá un valor ClusterPublicKey y la lista de direcciones IP públicas y privadas, similar a la siguiente:

```
{
    "Clusters": [
        {
            "VpcSecurityGroups": [], 
            "ClusterStatus": "available", 
            "ClusterNodes": [
                {
                    "PrivateIPAddress": "10.nnn.nnn.nnn", 
                    "NodeRole": "LEADER", 
                    "PublicIPAddress": "10.nnn.nnn.nnn"
                }, 
                {
                    "PrivateIPAddress": "10.nnn.nnn.nnn", 
                    "NodeRole": "COMPUTE-0", 
                    "PublicIPAddress": "10.nnn.nnn.nnn"
                }, 
                {
                    "PrivateIPAddress": "10.nnn.nnn.nnn", 
                    "NodeRole": "COMPUTE-1", 
                    "PublicIPAddress": "10.nnn.nnn.nnn"
                }
            ], 
            "AutomatedSnapshotRetentionPeriod": 1, 
            "PreferredMaintenanceWindow": "wed:05:30-wed:06:00", 
            "AvailabilityZone": "us-east-1a", 
            "NodeType": "dc2.large", 
            "ClusterPublicKey": "ssh-rsa AAAABexamplepublickey...Y3TAl Amazon-Redshift", 
             ...
             ...
}
```

Para recuperar la clave pública del clúster y las direcciones IP del nodo del clúster para su clúster mediante la API de Amazon Redshift, use la acción `DescribeClusters`. Para obtener más información, consulte [describe-clusters](https://docs.aws.amazon.com/cli/latest/reference/redshift/describe-clusters.html) en la *Guía de la CLI de Amazon Redshift* o [DescribeClusters](https://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusters.html) en la Guía de la API de Amazon Redshift. 

## Paso 4: Agregar la clave pública del clúster de Amazon Redshift al archivo de claves autorizadas de cada alojamiento de Amazon EC2
<a name="load-from-emr-steps-add-key-to-host"></a>

Debe agregar la clave pública del clúster al archivo de claves autorizadas de cada alojamiento en todos los nodos del clúster de Amazon EMR para que los alojamientos reconozcan a Amazon Redshift y acepten la conexión SSH. 

**Para agregar la clave pública del clúster de Amazon Redshift al archivo de claves autorizadas del alojamiento**

1. Obtenga acceso al host con una conexión Secure Shell (SSH, Shell seguro). 

   Para obtener información acerca de cómo conectarse a una instancia con SSH, consulte [Conexión con la instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-connect-to-instance-linux.html) en la *Guía del usuario de Amazon EC2*. 

1. Copie la clave pública de Amazon Redshift desde la consola o desde el texto de respuesta de la CLI. 

1. Copie y pegue el contenido de la clave pública en el archivo `/home/<ssh_username>/.ssh/authorized_keys` que se encuentra en el host. Incluya la cadena completa, incluso el prefijo "`ssh-rsa`" y el sufijo "`Amazon-Redshift`". Por ejemplo: 

   ```
   ssh-rsa AAAACTP3isxgGzVWoIWpbVvRCOzYdVifMrh… uA70BnMHCaMiRdmvsDOedZDOedZ Amazon-Redshift
   ```

## Paso 5: Configurar los alojamientos para que acepten todas las direcciones IP del clúster de Amazon Redshift
<a name="load-from-emr-steps-configure-security-groups"></a>

 Para permitir el tráfico de entrada a las instancias del alojamiento, edite el grupo de seguridad y agregue una regla de entrada por cada nodo del clúster de Amazon Redshift. En **Type (Tipo)**, seleccione SSH with TCP protocol on Port 22 (SSH con protocolo TCP en el puerto 22). En **Source** (Origen), ingrese las direcciones IP privadas de los nodos del clúster de Amazon Redshift que recuperó en [Paso 3: Recuperar la clave pública del clúster de Amazon Redshift y las direcciones IP del nodo del clúster](#load-from-emr-steps-retrieve-key-and-ips). Para obtener más información acerca de cómo se agregan las reglas a un grupo de seguridad de Amazon EC2, consulte [Autorización del tráfico de entrada para sus instancias](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/authorizing-access-to-an-instance.html) en la *Guía del usuario de Amazon EC2*. 

## Paso 6: Ejecutar el comando COPY para cargar los datos
<a name="load-from-emr-steps-run-copy"></a>

Ejecute un comando [COPY](r_COPY.md) para conectarse al clúster de Amazon EMR y cargar los datos en una tabla de Amazon Redshift. El clúster de Amazon EMR debe seguir ejecutándose hasta que se complete la ejecución del comando COPY. Por ejemplo, no configure el clúster para que se termine automáticamente. 

**importante**  
Si se cambia o se elimina cualquiera de los archivos de datos antes de que se complete la operación COPY, se podrían obtener resultados inesperados o la operación COPY podría provocar un error.

En el comando COPY, especifique el ID del clúster de Amazon EMR y el nombre y la ruta del archivo HDFS. 

```
COPY sales
FROM 'emr://myemrclusterid/myoutput/part*' CREDENTIALS 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Puede usar los caracteres comodín de asterisco (`*`) y de signo de interrogación (`?`) como parte del argumento de nombre del archivo. Por ejemplo, `part*` carga los archivos `part-0000`, `part-0001` y, así, sucesivamente. Si solo especifica el nombre de una carpeta, COPY prueba cargar todos los archivos que se encuentran en ella.

**importante**  
Si usa caracteres comodín o solo el nombre de la carpeta, controle que no se carguen archivos no deseados o el comando COPY provocará un error. Por ejemplo, algunos procesos podrían escribir un archivo de registro en la carpeta de salida.