

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Consideraciones relacionadas con el uso de Sqoop en Amazon EMR
<a name="emr-sqoop-considerations"></a>

Tenga en cuenta los siguientes elementos al ejecutar Sqoop en Amazon EMR.

## Uso de Sqoop con integración HCatalog
<a name="emr-sqoop-hcatalog"></a>

[Sqoop en Amazon EMR admite la integración de Sqoop. HCatalog ](https://sqoop.apache.org/docs/1.4.4/SqoopUserGuide.html#_sqoop_hcatalog_integration) Cuando utilice Sqoop para escribir el resultado en una HCatalog tabla de Amazon S3, deshabilite la escritura directa de Amazon EMR estableciendo las `mapred.output.direct.NativeS3FileSystem` propiedades y en. `mapred.output.direct.EmrFileSystem` `false` Para obtener más información, consulte [Usando HCatalog](emr-hcatalog-using.md). Puede utilizar los comandos `-D mapred.output.direct.NativeS3FileSystem=false` y `-D mapred.output.direct.EmrFileSystem=false` de Hadoop. Si no se desactiva la escritura directa, no se produce ningún error, pero la tabla se crea en Amazon S3 y no se escriben datos.

## Compatibilidad con JDBC y bases de datos de Sqoop
<a name="sqoop-supported-drivers-databases"></a>

De forma predeterminada, Sqoop tiene instalado un controlador de MariaDB y PostgresSQL. El controlador de PostgresSQL instalado para Sqoop solo funciona en PostgreSQL 8.4. Para instalar un conjunto alternativo de conectores JDBC para Sqoop, conéctese al nodo principal del clúster e instálelos en `/usr/lib/sqoop/lib`. A continuación se indican los enlaces para diversos conectores JDBC:
+ MariaDB: [About MariaDB Connector/J](https://mariadb.com/kb/en/mariadb/about-mariadb-connector-j/).
+ PostgreSQL: [controlador de JDBC PostgreSQL](https://jdbc.postgresql.org/).
+ SQLServer: [Descargue el controlador JDBC de Microsoft para SQL Server](https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server).
+ MySQL: [Download Connector/J](https://dev.mysql.com/downloads/connector/j/)
+ Oracle: [Obtener controladores de JDBC de Oracle y UCP del repositorio de Oracle Maven](http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html)

Las bases de datos compatibles con Sqoop se muestran en la siguiente URL, http://sqoop.apache.org/docs/*version*/SqoopUserGuide.html \$1\$1supported\$1databases, donde *version* está la versión de Sqoop que está utilizando, por ejemplo, la 1.4.6. Si la cadena de conexión de JDBC no coincide con ninguna de las cadenas de esta lista, debe especificar un controlador. 

Por ejemplo, puede exportar a una tabla de base de datos de Amazon Redshift con el siguiente comando (para JDBC 4.1):

```
sqoop export --connect jdbc:redshift://$MYREDSHIFTHOST:5439/mydb --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver com.amazon.redshift.jdbc41.Driver --username master --password Mymasterpass1
```

Puede utilizar las cadenas de conexión de MariaDB y MySQL, pero si especifica la cadena de conexión de MariaDB, tiene que especificar el controlador:

```
sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password Mymasterpass1
```

Si utiliza el cifrado de Capa de conexión segura para acceder a la base de datos, tiene que utilizar un URI de JDBC como en el siguiente ejemplo de exportación de Sqoop:

```
sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb?verifyServerCertificate=false&useSSL=true&requireSSL=true --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password Mymasterpass1
```

Para más información sobre el cifrado SSL en RDS, consulte [Uso de SSL para cifrar una conexión a una instancia de base de datos](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html) en la Guía del usuario de Amazon RDS.

Para obtener más información, consulte la documentación de [Apache Sqoop](http://sqoop.apache.org).

## Cómo proteger la contraseña
<a name="emr-sqoop-password"></a>

Hay varios métodos entre los cuales podría elegir para asegurarse de transferir su contraseña de forma segura:

------
#### [ Java KeyStore ]

El método preferido cifra la contraseña con un código Java KeyStore (JKS), lo que elimina la necesidad de almacenar la contraseña en un formato legible. 

1. Cree un alias de contraseña. Cuando aparezca el mensaje, ingrese su contraseña para acceder a la base de datos. 

   ```
   hadoop credential create mydb.password.alias -provider jceks://hdfs/user/root/mysql.password.jceks
   ```

1. Utilice el alias de contraseña para iniciar el trabajo de Sqoop:

   ```
   sqoop export -Dhadoop.security.credential.provider.path=jceks://hdfs/user/root/mysql.password.jceks --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password-alias mydb.password.alias
   ```

------
#### [ --password-file ]

También puede usar el comando `--password-file` para transferir la contraseña a través de un archivo, como se muestra en el siguiente ejemplo:

1. Cree un nuevo archivo que contenga la contraseña:

   ```
   echo -n 'Mymasterpass1' > /home/hadoop/mysql-pass.password
   ```

1. Utilice el archivo para iniciar el trabajo de Sqoop:

   ```
   sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password-file /home/hadoop/mysql-pass.password
   ```

------
#### [ -P ]

También puede usar el comando `-P` para escribir la contraseña, como se muestra en el siguiente ejemplo:

```
sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master -P
```

------