Cette rubrique explique comment utiliser Apache Sqoop sur un cluster E-MapReduce (EMR) pour lire et écrire des données stockées dans OSS-HDFS.
Prérequis
Vous avez créé un cluster EMR exécutant EMR V3.42.0 ou version ultérieure, ou EMR V5.8.0 ou version ultérieure, en sélectionnant le composant Sqoop. Pour plus d'informations, consultez la section Créer un cluster.
Vous avez activé OSS-HDFS et accordé les autorisations d'accès requises. Pour plus d'informations, consultez la section Activer OSS-HDFS.
Procédure
-
Connectez-vous au cluster EMR.
Connectez-vous à la console EMR. Dans le volet de navigation de gauche, cliquez sur EMR on ECS.
Cliquez sur le cluster EMR que vous avez créé.
Cliquez sur l'onglet Nodes puis sur l'icône
située à gauche du groupe de nœuds.Cliquez sur l'ID ECS. Sur la page Instances, cliquez sur Connect à côté de l'ID de l'instance.
Pour vous connecter au cluster depuis un environnement Windows ou Linux à l'aide d'une paire de clés SSH ou d'un mot de passe, consultez la section Se connecter à un cluster.
-
Importez des données depuis OSS-HDFS vers MySQL.
sudo 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> --as-<format> -m <count>-
Le tableau suivant décrit les paramètres de la commande.
Paramètre
Obligatoire
Description
dburi
Oui
L'URI de connexion à la base de données. Exemple :
jdbc:mysql://192.168.xxx.xxx:3306/.dbname
Oui
Le nom de la base de données.
username
Oui
Le nom d'utilisateur pour se connecter à la base de données.
password
Oui
Le mot de passe de l'utilisateur de la base de données.
tablename
Oui
Le nom de la table MySQL.
oss-dir
Oui
Le répertoire de destination dans OSS-HDFS pour les données importées. Exemple :
oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/.oss-tmpdir
Non
Le répertoire temporaire pour la tâche d'importation. Ce paramètre est requis pour le mode d'importation incrémentielle « append ».
Si vous définissez le paramètre mode sur append, Apache Sqoop importe les données dans un répertoire temporaire, puis renomme et stocke les fichiers dans le répertoire de destination. Si le répertoire de destination existe déjà dans OSS-HDFS, Apache Sqoop n'importe pas les données dans ce répertoire et n'écrase pas les données qu'il contient.
col
Non
La colonne de vérification pour une importation incrémentielle.
mode
Non
Le mode d'importation incrémentielle. Valeurs valides :
appendetlastmodified.-
append: Importe les données de manière incrémentielle en fonction d'une colonne à incrémentation automatique. -
lastmodified: Importe les données de manière incrémentielle en fonction d'une colonne d'horodatage.
value
Non
La valeur maximale de la colonne de vérification lors de la précédente importation incrémentielle.
format
Non
Le format du fichier de sortie. Valeurs valides :
avrodatafile,sequencefile,textfile(par défaut) etparquetfile.count
Non
Le nombre de tâches MapReduce.
-
-
Exemple
L'exemple de code suivant montre comment importer des données situées dans un répertoire spécifique du bucket examplebucket vers la table src_kv dans MySQL :
sqoop import --connect jdbc:mysql://master-1-1/sqoop_test --username root --password password1 --table src_kv -m 1 --target-dir oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/tmp/sqoop_kv --as-parquetfile
-