Tous les produits
Search
Centre de documentation

E-MapReduce:Sqoop user guide

Dernière mise à jour :Aug 09, 2026

Apache Sqoop transfère des volumes importants de données entre Apache Hadoop et des ensembles de données structurées, tels que les bases de données relationnelles. Utilisez cet outil pour déplacer des données entre MySQL, Hadoop Distributed File System (HDFS), Hive et Object Storage Service (OSS) sur des clusters EMR.

Exécutez toutes les commandes sur le nœud principal de votre cluster.

Scénarios pris en charge

Importer des données de MySQL vers HDFS

sqoop import --connect <dburi>/<dbname> --username <username> --password <password> \
  --table <tablename> --target-dir <hdfs-dir> \
  --split-by <split-column> \
  --check-column <col> --incremental <mode> --last-value <value>
Paramètre Obligatoire Description
dburi Oui URL d'accès à la base de données. Exemple : jdbc:mysql://192.168..:3306/
dbname Oui Nom de la base de données
username Oui Nom d'utilisateur pour se connecter à la base de données
password Oui Mot de passe pour se connecter à la base de données
tablename Oui Nom de la table MySQL
hdfs-dir Oui Répertoire HDFS dans lequel écrire les données. Exemple : /user/hive/result
split-column Non Colonne utilisée pour diviser les tâches parallèles. La valeur par défaut est la colonne de clé primaire.
col Non Colonne utilisée pour identifier les lignes lors d'une importation incrémentielle.
mode Non Mode d'importation incrémentielle. Valeurs valides : append et lastmodified.
value Non Valeur maximale de la colonne issue de la précédente importation incrémentielle.

Pour obtenir la référence complète des paramètres, consultez la section Syntax du guide d'utilisation de Sqoop.

Importer des données de HDFS vers MySQL

Avant d'exécuter cette commande, créez une table MySQL dont le schéma correspond à la structure des données HDFS.

sqoop export --connect <dburi>/<dbname> --username <username> --password <password> \
  --table <tablename> --export-dir <hdfs-dir>
Paramètre Obligatoire Description
dburi Oui URL d'accès à la base de données. Exemple : jdbc:mysql://192.168..:3306/
dbname Oui Nom de la base de données
username Oui Nom d'utilisateur pour se connecter à la base de données
password Oui Mot de passe pour se connecter à la base de données
tablename Oui Nom de la table MySQL
hdfs-dir Oui Répertoire source HDFS. Exemple : /user/hive/result

Pour obtenir la référence complète des paramètres, consultez la section Syntax du guide d'utilisation de Sqoop.

Importer des données de Hive vers MySQL

Les tables Hive sont stockées sous forme de fichiers dans HDFS. Pour exporter une table Hive vers MySQL, utilisez la même commande sqoop export que celle décrite dans la section Importer des données de HDFS vers MySQL, en spécifiant le répertoire HDFS de la table Hive comme paramètre --export-dir.

Importer des données de MySQL vers Hive

sqoop import --connect <dburi>/<dbname> --username <username> --password <password> \
  --table <tablename> \
  --check-column <col> --incremental <mode> --last-value <value> \
  --fields-terminated-by "\t" --lines-terminated-by "\n" \
  --hive-import --target-dir <hdfs-dir> --hive-table <hive-tablename>
Paramètre Obligatoire Description
dburi Oui URL d'accès à la base de données. Exemple : jdbc:mysql://192.168..:3306/
dbname Oui Nom de la base de données
username Oui Nom d'utilisateur pour se connecter à la base de données
password Oui Mot de passe pour se connecter à la base de données
tablename Oui Nom de la table MySQL
hdfs-dir Oui Répertoire intermédiaire de transit HDFS. Exemple : /user/hive/result
hive-tablename Oui Nom de la table Hive cible
col Non Colonne utilisée pour identifier les lignes lors d'une importation incrémentielle.
mode Non Mode d'importation incrémentielle. Valeurs valides : append et lastmodified.
value Non Valeur maximale de la colonne issue de la précédente importation incrémentielle.

Pour obtenir la référence complète des paramètres, consultez la section Syntax du guide d'utilisation de Sqoop.

Importer des données de MySQL vers OSS

sqoop import --connect <dburi>/<dbname> --username <username> --password <password> \
  --table <tablename> --target-dir <oss-dir> --temporary-rootdir <oss-tmpdir> \
  --check-column <col> --incremental <mode> --last-value <value>
Paramètre Obligatoire Description
dburi Oui URL d'accès à la base de données. Exemple : jdbc:mysql://192.168..:3306/
dbname Oui Nom de la base de données
username Oui Nom d'utilisateur pour se connecter à la base de données
password Oui Mot de passe pour se connecter à la base de données
tablename Oui Nom de la table MySQL
oss-dir Oui Répertoire de destination OSS. Exemple : oss://<AccessKeyId>:<AccessKeySecret>@<BucketName>.oss-cn-hangzhou-internal.aliyuncs.com/result
oss-tmpdir Obligatoire si mode=append Répertoire temporaire OSS. Lorsque le paramètre mode est défini sur append, Sqoop écrit d'abord les données dans ce répertoire, puis renomme les fichiers vers la destination. Si le répertoire de destination existe déjà dans HDFS, Sqoop n'importe ni n'écrase les données.
col Non Colonne utilisée pour identifier les lignes lors d'une importation incrémentielle.
mode Non Mode d'importation incrémentielle. Valeurs valides : append et lastmodified.
value Non Valeur maximale de la colonne issue de la précédente importation incrémentielle.

Pour obtenir la référence complète des paramètres, consultez la section Syntax du guide d'utilisation de Sqoop.

Importer des données de OSS vers MySQL

Avant d'exécuter cette commande, créez une table MySQL dont le schéma correspond à la structure des données OSS.

sqoop export --connect <dburi>/<dbname> --username <username> --password <password> \
  --table <tablename> --export-dir <oss-dir>
Paramètre Obligatoire Description
dburi Oui URL d'accès à la base de données. Exemple : jdbc:mysql://192.168..:3306/
dbname Oui Nom de la base de données
username Oui Nom d'utilisateur pour se connecter à la base de données
password Oui Mot de passe pour se connecter à la base de données
tablename Oui Nom de la table MySQL
oss-dir Oui Répertoire source OSS. Exemple : oss://<AccessKeyId>:<AccessKeySecret>@<BucketName>.oss-cn-hangzhou-internal.aliyuncs.com/result

Pour obtenir la référence complète des paramètres, consultez la section Syntax du guide d'utilisation de Sqoop.

Utiliser une instruction SQL pour importer des données

Utilisez l'option --query pour filtrer les lignes avec une instruction SQL personnalisée au lieu d'importer une table entière.

sqoop import --connect <dburi>/<dbname> --username <username> --password <password> \
  --query <query-sql> --split-by <sp-column> \
  --hive-import --hive-table <hive-tablename> --target-dir <hdfs-dir>
Paramètre Obligatoire Description
dburi Oui URL d'accès à la base de données. Exemple : jdbc:mysql://192.168..:3306/
dbname Oui Nom de la base de données
username Oui Nom d'utilisateur pour se connecter à la base de données
password Oui Mot de passe pour se connecter à la base de données
query-sql Oui Instruction SQL permettant de sélectionner les données à importer. Doit inclure $CONDITIONS. Exemple : SELECT * FROM profile WHERE id>1 AND \$CONDITIONS
sp-column Oui Colonne utilisée pour diviser les tâches parallèles. Il s'agit généralement de la clé primaire de la table MySQL.
hdfs-dir Oui Répertoire intermédiaire de transit HDFS. Exemple : /user/hive/result
hive-tablename Oui Nom de la table Hive cible

Pour obtenir la référence complète des paramètres, consultez la section Syntax du guide d'utilisation de Sqoop.