Éléments à prendre en compte avec Sqoop sur Amazon EMR
Tenez compte des éléments suivants lorsque vous exécutez Sqoop sur Amazon EMR.
Utilisation de Sqoop avec l'intégration HCatalog
Sqoop sur Amazon EMR prend en charge l'intégration Sqoop-HCatalogmapred.output.direct.NativeS3FileSystem
et mapred.output.direct.EmrFileSystem
sur false
. Pour de plus amples informations, veuillez consulter Utilisation de HCatalog. Vous pouvez utiliser les commandes Hadoop -D mapred.output.direct.NativeS3FileSystem=false
et -D
mapred.output.direct.EmrFileSystem=false
. Si vous ne désactivez pas l'écriture directe, aucune erreur ne se produit, mais la table est créée dans Amazon S3 et aucune donnée n'est écrite.
Prise en charge des bases de données et JDBC par Sqoop
Par défaut, Sqoop dispose d'un pilote MariaDB et PostgreSQL installé. Le pilote PostgreSQL installé pour Sqoop fonctionne uniquement pour PostgreSQL 8.4. Pour installer un autre jeu de connecteurs JDBC pour Sqoop, connectez-vous au nœud principal de cluster et installez-les dans /usr/lib/sqoop/lib
. Les liens suivants se rapportent à divers connecteurs JDBC :
-
MariaDB : A propos de MariaDB Connector/J
. -
PostgreSQL : Pilote JDBC PostgreSQL
. -
SQLServer : Télécharger le pilote Microsoft JDBC pour SQL Server
. -
MySQL : Télécharger le connecteur/J
-
Oracle : Obtenir les pilotes et UCP JBDC à partir du référentiel Oracle Maven
Les bases de données prises en charge par Sqoop sont répertoriées sur la page http://sqoop.apache.org/docs/version
/SqoopUserGuide.html#_supported_databases, où version
est la version de Sqoop que vous utilisez, par exemple 1.4.6. Si la chaîne de connexion JDBC ne correspond pas à celles figurant dans cette liste, vous devez spécifier un pilote.
Par exemple, vous pouvez exporter vers une table de base de données Amazon Redshift avec la commande suivante (pour JDBC 4.1) :
sqoop export --connect jdbc:redshift://$
MYREDSHIFTHOST
:5439/mydb
--tablemysqoopexport
--export-dir s3://mybucket/myinputfiles/
--driver com.amazon.redshift.jdbc41.Driver --usernamemaster
--passwordMymasterpass1
Vous pouvez utiliser les chaînes de connexion MariaDB et MySQL, mais si vous spécifiez la chaîne de connexion MariaDB, vous devez spécifier le pilote :
sqoop export --connect jdbc:mariadb://$
HOSTNAME
:3306/mydb
--tablemysqoopexport
--export-dir s3://mybucket/myinputfiles/
--driver org.mariadb.jdbc.Driver --usernamemaster
--passwordMymasterpass1
Si vous utilisez un chiffrement SSL (Secure Socket Layer) pour accéder à votre base de données, vous devez utiliser un URI JDBC comme dans l'exemple d'exportation Sqoop suivant :
sqoop export --connect jdbc:mariadb://$
HOSTNAME
:3306/mydb
?verifyServerCertificate=false&useSSL=true&requireSSL=true --tablemysqoopexport
--export-dir s3://mybucket/myinputfiles/
--driver org.mariadb.jdbc.Driver --usernamemaster
--passwordMymasterpass1
Pour plus d'informations sur le chiffrement SSL dans RDS, consultez la section Utilisation de SSL pour chiffrer une connexion à une instance de base de données dans le Guide de l'utilisateur Amazon RDS.
Pour plus d'informations, consultez la documentation Apache Sqoop