Sqoop – Introduction
Le système de gestion d’applications traditionnel , c’est-à-dire que l’interaction des applications avec la base de données relationnelle utilisant le SGBDR, est l’une des sources qui génèrent du Big Data. Ces Big Data, générés par SGBDR, sont stockés dans des serveurs de bases de données relationnelles dans la structure de la base de données relationnelle.
Lorsque des stockages et des analyseurs de Big Data tels que MapReduce, Hive, HBase, Cassandra, Pig, etc. de l’écosystème Hadoop sont entrés en scène, ils avaient besoin d’un outil pour interagir avec les serveurs de bases de données relationnelles pour importer et exporter le Big Data qui y résidait. Ici, Sqoop occupe une place dans l’écosystème Hadoop pour fournir une interaction réalisable entre le serveur de base de données relationnelle et le HDFS d’Hadoop.
Sqoop – «SQL vers Hadoop et Hadoop vers SQL»
Sqoop est un outil conçu pour transférer des données entre Hadoop et des serveurs de bases de données relationnelles. Il est utilisé pour importer des données à partir de bases de données relationnelles telles que MySQL, Oracle vers Hadoop HDFS et pour exporter du système de fichiers Hadoop vers des bases de données relationnelles. Il est fourni par Apache Software Foundation.
Comment fonctionne Sqoop?
L’image suivante décrit le flux de travail de Sqoop.
Sqoop Import
L’outil d’importation importe des tables individuelles du RDBMS vers HDFS. Chaque ligne d’une table est traitée comme un enregistrement dans HDFS. Tous les enregistrements sont stockés sous forme de données texte dans des fichiers texte ou sous forme de données binaires dans des fichiers Avro et Sequence.
Export Sqoop
L’outil d’exportation exporte un ensemble de fichiers de HDFS vers un SGBDR . Les fichiers fournis en entrée dans Sqoop contiennent des enregistrements, appelés sous forme de lignes dans la table. Ceux-ci sont lus et analysés dans un ensemble d’enregistrements et délimités par un délimiteur spécifié par l’utilisateur.
Sqoop – Installation
Comme Sqoop est un sous-projet de Hadoop, il ne peut fonctionner que sur Système d’exploitation Linux. Suivez les étapes indiquées ci-dessous pour installer Sqoop sur votre système.
Étape 1: Vérification de l’installation JAVA
Vous devez avoir Java installé sur votre système avant d’installer Sqoop. Vérifions l’installation de Java à l’aide de la commande suivante –
$ java –version
Si Java est déjà installé sur votre système, vous pouvez voir le réponse suivante –
version java « 1.7.0_71 » Java (TM) SE Runtime Environment (build 1.7.0_71-b13) Java HotSpot (TM) Client VM ( build 25.0-b02, mode mixte)
Si Java n’est pas installé sur votre système, suivez les étapes ci-dessous.
Installation de Java
Suivez la procédure simple étapes ci-dessous pour installer Java sur votre système.
Étape 1
Téléchargez Java (JDK <dernière version= » »>- X64.tar.gz) en visitant le site lien . </dernière>
Ensuite, jdk-7u71-linux-x64.tar.gz sera téléchargé sur votre système.
Étape 2
En général, vous pouvez trouver le fichier Java téléchargé dans les Téléchargements dossier. Vérifiez-le et extrayez le fichier jdk-7u71-linux-x64.gz à l’aide des commandes suivantes.
$ cd Downloads / $ ls jdk-7u71-linux-x64.gz $ tar zxf jdk-7u71-linux-x64.gz $ ls jdk1.7.0_71 jdk-7u71-linux-x64.gz
Étape 3
Rendre Java accessible à tous utilisateurs, vous devez le déplacer vers l’emplacement «/ usr / local /». Ouvrez root et tapez les commandes suivantes.
$ su mot de passe: # mv jdk1.7.0_71 / usr / local / java # exitStep IV:
Étape 4
Pour configurer les variables PATH et JAVA_HOME, ajoutez les commandes suivantes au fichier ~ / .bashrc.
export JAVA_HOME = / usr / local / java export PATH = $ PATH: $ JAVA_HOME / bin
Appliquez maintenant toutes les modifications dans le système en cours d’exécution.
$ source ~ / .bashrc
Étape 5
Utilisez les commandes suivantes pour configurer les alternatives Java –
# alternatives –install / usr / bin / java java usr / local / java / bin / java 2 # alternatives –install / usr / bin / javac javac usr / local / java / bin / javac 2 # alternatives –install / usr / bin / jar jar usr / local / java / bin / jar 2 # alternatives –set java usr / local / java / bin / java # alternatives –set javac usr / local / java / bin / javac # alternatives –set jar usr / local / java / bin / jar
Vérifiez maintenant l’installation en utilisant la commande java -version du terminal comme expliqué ci-dessus.
Étape 2: Vérification de l’installation de Hadoop
Hadoop doit être installé sur votre système avant d’installer Sqoop. Vérifions l’installation de Hadoop à l’aide de la commande suivante –
$ hadoop version
Si Hadoop est déjà installé sur votre système, vous obtiendrez le réponse suivante –
Hadoop 2.4.1 – Subversion https://svn.apache.org/repos/asf/hadoop/common » -r 1529768 Compilé par hortonmu en 2013 -10-07T06: 28Z Compilé avec protoc 2.5.0 Depuis la source avec la somme de contrôle 79e53ce7994d1628b240f09af91e1af4
Si Hadoop n’est pas installé sur votre système, procédez comme suit –
Téléchargement de Hadoop
Téléchargez et extrayez Hadoop 2.4.1 depuis Apache Software Foundation en utilisant les commandes suivantes.
$ su password: # cd / usr / local # wget http : //apache.claz.org/hadoop/common/hadoop-2.4.1/ hadoop-2.4.1.tar.gz # tar xzf hadoop-2.4.1.tar.gz # mv hadoop-2.4.1 / * à hadoop / # exit
Installation de Hadoop en mode pseudo distribué
Suivez les étapes gi ven ci-dessous pour installer Hadoop 2.4.1 en mode pseudo-distribué.
Étape 1: Configurer Hadoop
Vous pouvez définir les variables d’environnement Hadoop en ajoutant les commandes suivantes à ~ / .bashrc fichier.
export HADOOP_HOME = / usr / local / hadoop export HADOOP_ MAPRED_HOME = $ HADOOP_HOME exportation HADOOP_COMMON_HOME = $ HADOOP_HOME exportation HADOOP_HDFS_HOME = $ HADOOP_HOME exportation YARN_HOME = $ HADOOP_HOME exportation HADOOP_COMMON_LIB_NATIVE_HOME exportation HADOOP_HDFS_HOME = $ HADOOP_HOME exportation YARN_HOME = $ HADOOP_HOME exportation HADOOP_COMMON_LIB_NATIVE_DIRO> $ HADOOP_export = $ HADOIN_PATHOP Maintenant, appliquez toutes les modifications dans le système en cours d’exécution.
$ source ~ / .bashrc
Étape 2: Configuration Hadoop
Vous pouvez trouver tous les fichiers de configuration Hadoop à l’emplacement «$ HADOOP_HOME / etc / hadoop». Vous devez apporter les modifications appropriées à ces fichiers de configuration en fonction de votre infrastructure Hadoop.
$ cd $ HADOOP_HOME / etc / hadoop
Afin de développer Programmes Hadoop utilisant java, vous devez réinitialiser les variables d’environnement java dans le fichier hadoop-env.sh en remplaçant la valeur JAVA_HOME par l’emplacement de java dans votre système.
export JAVA_HOME = / usr / local / java
Vous trouverez ci-dessous la liste des fichiers que vous devez modifier pour configurer Hadoop.
core-site .
Le fichier core-site.
Ouvrez le fichier core-site.
et .
fs.default.name hdfs: // localhost: 9000
hdfs-site.<p< b= » »></p<>
Le hdfs- Le fichier site.
Supposons les données suivantes.
dfs.replication (valeur de réplication des données) = 1 (Dans le chemin suivant / hadoop / se trouve le nom d’utilisateur. hadoopinfra / hdfs / namenode est le répertoire créé par le système de fichiers hdfs.) namenode path = // home / hadoop / hadoopinfra / hdfs / namenode (hadoopinfra / hdfs / datanode est le répertoire créé par le système de fichiers hdfs.) datanode path = // home / hadoop / hadoopinfra / hdfs / datanode
Ouvrez ce fichier et ajoutez les propriétés suivantes entre les balises , de ce fichier.
dfs.replication1 dfs.name.dir fichier: /// home / hadoop / hadoopinfra / hdfs / namenode dfs.data.dir file: /// home / hadoop / hadoopinfra / hdfs / datanode
Remarque – Dans le fichier ci-dessus, toutes les valeurs de propriété sont définies par l’utilisateur et vous pouvez faire change en fonction de votre infrastructure Hadoop.
yarn-site.
Ce fichier est utilisé pour configurer yarn dans Hadoop. Ouvrez le fichier yarn-site.
, de ce fichier.
yarn.nodemanager.aux-servicesmapreduce_shuffle
mapred-site.
Ce fichier est utilisé pour spécifier le framework MapReduce que nous utilisons. Par défaut, Hadoop contient un modèle de yarn-site.
$ cp mapred-site .
Ouvrez le fichier mapred-site.
, de ce fichier.
mapreduce.framework.nameyarn
Vérification de l’installation de Hadoop
Les éléments suivants teps sont utilisés pour vérifier l’installation de Hadoop.
Étape 1: Configuration du nœud de nom
Configurez le namenode en utilisant la commande « hdfs namenode -format » comme suit.
$ cd ~ $ hdfs namenode -format
Le résultat attendu est le suivant.
10/24 / 14 21:30:55 INFO namenode.NameNode: STARTUP_MSG: / *********************************** ************************* STARTUP_MSG: Nœud de nom de départ STARTUP_MSG: host = localhost / 192.168.1.11 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 2.4.1 … … 24/10/14 21:30:56 INFO common.Storage: Le répertoire de stockage / home / hadoop / hadoopinfra / hdfs / namenode a été formaté avec succès. 10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: va conserver 1 images avec txid> = 0 10/24/14 21:30:56 INFO util.ExitUtil: Sortie avec le statut 0 24/10/14 21 : 30: 56 INFO namenode.NameNode: SHUTDOWN_MSG: / ************************************** ********************** SHUTDOWN_MSG: Arrêt de NameNode sur localhost / 192.168.1.11 ***************** ******************************************* /
Étape 2: vérification de Hadoop dfs
La commande suivante est utilisée pour démarrer dfs. L’exécution de cette commande démarrera votre système de fichiers Hadoop.
$ start-dfs.sh
Le résultat attendu est le suivant –
24/10/14 21:37:56 Démarrage de namenodes sur [localhost] localhost: démarrage de namenode, connexion à / home / hadoop / hadoop- 2.4.1 / logs / hadoop-hadoop- namenode-localhost.out localhost: démarrage du datanode, connexion à / home / hadoop / hadoop- 2.4.1 / logs / hadoop-hadoop-datanode-localhost.out Démarrage des namenodes secondaires [0.0.0.0]
Étape 3: Vérification du de fil
La commande suivante est utilisée pour démarrer le de fil. L’exécution de cette commande lancera vos démons yarn.
$ start-yarn.sh
Le résultat attendu est le suivant –
démarrage des démons yarn démarrant resourcemanager, connexion à / home / hadoop / hadoop- 2.4.1 / logs / yarn-hadoop-resourcemanager-localhost.out localhost: démarrage du gestionnaire de nœuds, connexion à / home / hadoop / hadoop- 2.4 .1 / logs / yarn-hadoop-nodemanager-localhost.out
Étape 4: Accéder à Hadoop sur le navigateur
Le numéro de port par défaut pour accéder à Hadoop est 50070. Utilisez l’URL suivante pour obtenez les services Hadoop sur votre navigateur.
http://localhost: » » » 50070 /
L’image suivante représente un navigateur Hadoop.
Étape 5: Vérifiez toutes les applications pour le cluster
Le numéro de port par défaut pour accéder à toutes les applications du cluster est 8088. Utilisez l’url suivante pour visiter ce service.
http://localhost: » » » 8088 /
L’image suivante représente le navigateur de cluster Hadoop.
Étape 3: Téléchargement de Sqoop
Nous pouvons télécharger la dernière version de Sqoop à partir du lien Pour ce tutoriel, nous utilisons la version 1.4.5, c’est-à-dire sqoop-1.4.5.bin__hadoop-2.0.4-alpha.tar.gz.
Étape 4: Installation de Sqoop
Les commandes suivantes sont utilisées pour extraire la balle tar de Sqoop et la déplacer vers le répertoire «/ usr / lib / sqoop».
$ tar -xvf sqoop-1.4.4.bin__hadoop-2.0.4-alpha.tar.gz $ su mot de passe: # mv sqoop-1.4.4.bin__hadoop-2.0.4-alpha / usr / lib / sqoop #exit
Étape 5: Configuration de bashrc
Vous devez configurer l’environnement Sqoop en ajoutant les lignes suivantes au fichier ~ / .bashrc –
#Sqoop export SQOOP_HOME = / usr / lib / sqoop export PATH = $ PATH: $ SQOOP_HOME / bin
Le La commande suivante est utilisée pour exécuter le fichier ~ / .bashrc .
$ source ~ / .bashrc
Étape 6: Configurer Sqoop
Pour configurer Sqoop avec Hadoop, vous devez éditer le fichier sqoop-env.sh , qui est placé dans le $ SQOOP_HOME / conf annuaire. Tout d’abord, redirigez vers le répertoire de configuration de Sqoop et copiez le fichier modèle à l’aide de la commande suivante –
$ cd $ SQOOP_HOME / conf $ mv sqoop-env-template.sh sqoop -env.sh
Ouvrez sqoop-env.sh et modifiez les lignes suivantes –
export HADOOP_COMMON_HOME = / usr / local / hadoop export HADOOP_MAPRED_HOME = / usr / local / hadoop
Étape 7: Téléchargez et configurez mysql-connector-java
Nous pouvons télécharger mysql-connector-java- 5.1.30.tar.gz fichier à partir du .
Les commandes suivantes sont utilisées pour extraire l’archive tar mysql-connector-java et déplacer mysql-connector-java-5.1.30- bin.jar dans le répertoire / usr / lib / sqoop / lib.
$ tar -zxf mysql-connector-java-5.1.30.tar.gz $ su mot de passe: # cd mysql-connector-java-5.1.30 # mv mysql-connector-java-5.1.30 -bin.jar / usr / lib / sqoop / lib
Étape 8: Vérification de Sqoop
La commande suivante est utilisée pour vérifier la version de Sqoop.
$ cd $ SQOOP_HOME / bin $ sqoop-version
Résultat attendu –
14/12/17 14:52 : 32 INFO sqoop.Sqoop: Exécution de la version Sqoop: 1.4.5 Sqoop 1.4.5 git commit id 5b34accaca7de251fc91161733f906af2eddbe83 Compilé par abe le vendredi 1er août 11:19:26 PDT 2014
L’installation de Sqoop est terminée.
Sqoop – Importer
Ce chapitre décrit comment importer des données de la base de données MySQL vers Hadoop HDFS. L ’« outil d’importation »importe des tables individuelles du SGBDR vers HDFS. Chaque ligne d’un tableau est traitée comme un enregistrement en HDFS. Tous les enregistrements sont stockés sous forme de données texte dans les fichiers texte ou sous forme de données binaires dans les fichiers Avro et Sequence.
Syntaxe
La syntaxe suivante est utilisée pour importer des données dans HDFS.
$ sqoop import (generic-args) (import-args) $ sqoop-import (generic-args) (import-args)
Exemple
Prenons un exemple de trois tables nommées emp , emp_add et emp_contact , qui se trouvent dans une base de données appelée userdb dans un serveur de base de données MySQL.
Les trois tables et leurs données sont les suivantes.
emp:
id |
nom |
deg |
salaire |
service |
1201 |
gopal |
manager |
50 000 |
TP |
1202 |
manisha |
Lecteur d’épreuves |
50 000 |
TP |
1203 |
khalil |
php dev |
30 000 |
AC |
1204 |
prasanth |
php dev |
30 000 |
AC |
1204 |
kranthi |
admin |
20 000 |
TP |
emp_add:
id |
hno |
rue |
ville |
1201 |
288A |
vgiri |
jublee |
1202 |
108I |
aoc |
sec-bad |
1203 |
144Z |
pgutta |
hyd |
1204 |
78B |
vieille ville |
sec-mauvais |
1205 |
720X |
hitec |
sec-mauvais |
emp_contact:
id |
phno |
email |
1201 |
2356742 |
gopal@tp.com |
1202 |
1661663 |
manisha@tp.com |
1203 |
8887776 |
khalil @ ac. com |
1204 |
9988774 |
prasanth@ac.com |
1205 |
1231231 |
kranthi@tp.com |
Importation d’un tableau
Importation de l’outil Sqoop ‘est utilisé pour importer les données de table de la table vers le système de fichiers Hadoop sous forme de fichier texte ou de fichier binaire.
La commande suivante est utilisée pour importer la table emp depuis MySQL serveur de base de données vers HDFS.
$ sqoop import –connect jdbc: mysql: // localhost / userdb –username root –table emp – -m 1
S’il est exécuté avec succès, vous obtenez la sortie suivante.
14/12/22 15:24:54 INFO sqoop .Sqoop: Exécution de la version Sqoop: 1.4.5 14/12/22 15:24:56 INFO manager.MySQLManager: Préparation à l’utilisation d’un jeu de résultats de streaming MySQL. 14/12/22 15:24:56 INFO tool.CodeGenTool: Début de la génération de code 14/12/22 15:24:58 INFO manager.SqlManager: Exécution de l’instruction SQL: SELECT t. * FROM `emp` AS t LIMIT 1 14 / 12/22 15:24:58 INFO manager.SqlManager: Exécution de l’instruction SQL: SELECT t. * FROM `emp` AS t LIMIT 1 14/12/22 15:24:58 INFO orm.CompilationManager: HADOOP_MAPRED_HOME est / usr / local / hadoop 14/12/22 15:25:11 INFO orm.CompilationManager: Ecriture du fichier jar: /tmp/sqoop-hadoop/compile/cebe706d23ebb1fd99c1f063ad51ebd7/emp.jar ————– ————————————— ———– —————————————— 14/12/22 15:25 : 40 INFO mapreduce.Job: L’url pour suivre le travail: http://localhost: » » » 8088 / proxy / application_1419242001831_0001 / 14/12/22 15:26:45 INFO mapreduce.Job: Job job_1419242001831_0001 s’exécutant en mode uber: false 14 / 12/22 15:26:45 INFO mapreduce.Job: map 0% reduction 0% 14/12/22 15:28:08 INFO mapreduce.Job: map 10 0% réduire 0% 14/12/22 15:28:16 INFO mapreduce.Job: Job job_1419242001831_0001 terminé avec succès ————————– ————————— ———————– —————————— 14/12/22 15:28:17 INFO mapreduce.ImportJobBase: Transféré 145 octets dans 177.5849 secondes (0,8165 octets / s) 14/12/22 15:28:17 INFO mapreduce.ImportJobBase: Récupération de 5 enregistrements.
Pour vérifier les données importées dans HDFS, utilisez la commande suivante.
$ $ HADOOP_HOME / bin / hadoop fs -cat / emp / part- m- *
Il vous montre les données de la table emp et les champs sont séparés par des virgules (,).
1201 , gopal, manager, 50000, TP 1202, manisha, preader, 50000, TP 1203, kalil, php dev, 30000, AC 1204, prasanth, php dev, 30000, AC 1205, kranthi, admin, 20000, TP
Importation dans le répertoire cible
Nous pouvons spécifier le répertoire cible lors de l’importation des données de table dans HDFS à l’aide de l’outil d’importation Sqoop.
Voici la syntaxe pour spécifier le répertoire cible en option à la commande d’importation Sqoop.
— target-dir <répertoire nouveau= » » ou= » » existant= » » dans= » » hdfs= » »></répertoire>
La commande suivante est utilisée pour importer emp_add les données de la table dans le répertoire ‘/ queryresult’.
$ sqoop import –connect jdbc: mysql: // loc alhost / userdb –username root –table emp_add –m 1 — target-dir / queryresult
La commande suivante est utilisée pour vérifier les données importées dans / queryresult répertoire de la table emp_add .
$ $ HADOOP_HOME / bin / hadoop fs -cat / queryresult / part-m- *
Il vous montrera les données de la table emp_add avec des champs séparés par des virgules (,).
1201, 288A, vgiri, jublee 1202, 108I, aoc, sec-bad 1203 , 144Z, pgutta, hyd 1204, 78B, oldcity, sec-bad 1205, 720C, hitech, sec-bad
Importer un sous-ensemble de données de table
Nous pouvons importer un sous-ensemble d’une table en utilisant la clause ‘where’ de l’outil d’importation Sqoop. Il exécute la requête SQL correspondante dans le serveur de base de données respectif et stocke le résultat dans un répertoire cible dans HDFS.
La syntaxe de la clause where est la suivante.
–where
La commande suivante est utilisée pour importer un sous-ensemble de données de table emp_add . La requête du sous-ensemble consiste à récupérer l’identifiant et l’adresse de l’employé, qui vit dans la ville de Secunderabad.
$ sqoop import –connect jdbc: mysql: // localhost / userdb –username root –table emp_add –m 1 –where “city = ‘sec-bad’” — target-dir / wherequery
Ce qui suit La commande est utilisée pour vérifier les données importées dans le répertoire / wherequery de la table emp_add .
$ $ HADOOP_HOME / bin / hadoop fs -cat / wherequery / part-m- *
Il vous montrera les données de la table emp_add avec des champs séparés par des virgules (,).
1202, 108I, aoc, sec-bad 1204, 78B, oldcity, sec-bad 1205, 720C, hitech, sec-bad
Importation incrémentielle
L’importation incrémentielle est une technique qui importe uniquement les lignes nouvellement ajoutées dans une table. Il est nécessaire d’ajouter les options ‘incrémental’, ‘check-column’ et ‘last-value’ pour effectuer l’importation incrémentielle.
La syntaxe suivante est utilisée pour l’option incrémentielle dans la commande d’importation Sqoop.
–incremental –check-column – dernière valeur <dernière valeur= » » de= » » la= » » colonne= » » vérification= » »></dernière>
Supposons que les données nouvellement ajoutées dans la table emp sont les suivantes –
1206, satish p, grp des, 20000, GR
La commande suivante est utilisée pour effectuer l’importation incrémentielle dans la table emp .
$ sqoop import –connect jdbc: mysql: / / localhost / userdb –username root –table emp –m 1 –inc remental append –check-column id -last value 1205
La commande suivante est utilisée pour vérifier les données importées de la table emp vers le répertoire HDFS emp /.
$ $ HADOOP_HOME / bin / hadoop fs -cat / emp / part-m- *
Il vous montre le emp données de table avec des champs séparés par des virgules (,).
1201, gopal, manager, 50000, TP 1202, manisha, preader, 50000, TP 1203, kalil, php dev , 30000, AC 1204, prasanth, php dev, 30000, AC 1205, kranthi, admin, 20000, TP 1206, satish p, grp des, 20000, GR
La commande suivante permet de voir les modifications ou des lignes nouvellement ajoutées de la table emp .
$ $ HADOOP_HOME / bin / hadoop fs -cat / emp / part-m- * 1
Il vous montre les lignes nouvellement ajoutées à la table emp avec des champs séparés par des virgules (,).
1206, satish p, grp des, 20000, GR
Sqoop – Importer toutes les tables
Ce chapitre décrit comment importer toutes les tables du serveur de base de données SGBDR vers le HDFS. Chaque donnée de table est stockée dans un répertoire séparé et le nom du répertoire est le même que le nom de la table.
Syntaxe
La syntaxe suivante est utilisée pour importer toutes les tables.
$ sqoop import-all-tables (generic-args) (import-args) $ sqoop-import-all-tables (generic-args) (import-args)
Exemple
Prenons un exemple d’import de toutes les tables de la base de données userdb . La liste des tables que la base de données userdb contient est la suivante.
+ ————– —— + | Tables | + ——————– + | emp | | emp_add | | emp_contact | + ——————– +
La commande suivante permet d’importer toutes les tables de la base de données userdb .
$ sqoop import-all-tables –connect jdbc: mysql: // loca lhost / userdb –username root
Remarque – Si vous utilisez import-all-tables, il est obligatoire que chaque table de cette base de données ait une clé primaire field.
La commande suivante est utilisée pour vérifier toutes les données de la table dans la base de données userdb dans HDFS.
$ $ HADOOP_HOME / bin / hadoop fs -ls
Il vous montrera la liste des noms de table dans la base de données userdb sous forme de répertoires.
Sortie
drwxr-xr -x – supergroupe hadoop 0 2014-12-22 22:50 _sqoop drwxr-xr-x – supergroupe hadoop 0 23/12/2014 01:46 emp drwxr-xr-x – supergroupe hadoop 0 23/12/2014 01:50 emp_add drwxr-xr-x – hadoop supergroup 0 2014-12-23 01:52 emp_contact
Sqoop – Export
Ce chapitre décrit comment exporter des données depuis le HDFS vers le SGBDR base de données. La table cible doit exister dans la base de données cible. Les fichiers qui sont donnés en entrée dans le Sqoop contiennent des enregistrements, appelés lignes dans la table. Ceux-ci sont lus et analysés dans un ensemble d’enregistrements et délimités par un délimiteur spécifié par l’utilisateur.
L’opération par défaut est d’insérer tous les enregistrements des fichiers d’entrée dans la table de base de données en utilisant l’instruction INSERT. En mode mise à jour, Sqoop génère l’instruction UPDATE qui remplace l’enregistrement existant dans la base de données.
Syntaxe
Voici la syntaxe de la commande d’exportation.
$ sqoop export (generic-args) (export-args) $ sqoop-export (generic-args) (export-args)
Example
Prenons un exemple des données des employés dans le fichier, en HDFS. Les données des employés sont disponibles dans le fichier emp_data du répertoire «emp /» dans HDFS. Le emp_data est le suivant.
1201, gopal, manager, 50000, TP 1202, manisha, preader, 50000, TP 1203, kalil, php dev, 30000, AC 1204, prasanth, php dev, 30000, AC 1205, kranthi, admin, 20000, TP 1206, satish p, grp des, 20000, GR
Il est obligatoire e à la table à exporter est créée manuellement et est présente dans la base de données d’où elle doit être exportée.
La requête suivante est utilisée pour créer la table «employé» dans la ligne de commande mysql.
$ mysql mysql> USE db; mysql> CREATE TABLE employé (id INT NOT NULL PRIMARY KEY, nom VARCHAR (20), deg VARCHAR (20), salaire INT, dept VARCHAR (10));
La commande suivante est utilisée pour exporter les données de la table (qui se trouvent dans le fichier emp_data sur HDFS) vers la table des employés dans la base de données db du serveur de base de données Mysql.
$ sqoop export –connect jdbc: mysql: // localhost / db –username root –table employee –export-dir / emp / emp_data
La commande suivante est utilisée pour vérifier la table dans la ligne de commande mysql.
mysql> select * from employee;
Si les données données sont stockées avec succès, vous pouvez trouver le tableau suivant des données d’employés données.
+ —— + ————– + ————- + ——————- + – ——- + | Id | Nom | Désignation | Salaire | Dept | + —— + ————– + ————- + ————- —— + ——– + | 1201 | gopal | directeur | 50000 | TP | | 1202 | manisha | preader | 50000 | TP | | 1203 | kalil | php dev | 30000 | AC | | 1204 | prasanth | php dev | 30000 | AC | | 1205 | kranthi | admin | 20000 | TP | | 1206 | satish p | grp des | 20000 | GR | + —— + ————– + ————- + ————- —— + ——– +
Sqoop – Job
Ce chapitre décrit comment créer et maintenir les jobs Sqoop. Le travail Sqoop crée et enregistre les commandes d’importation et d’exportation. Il spécifie des paramètres pour identifier et rappeler le travail enregistré. Cette ré-appel ou ré-exécution est utilisée dans l’importation incrémentielle, qui peut i mportez les lignes mises à jour de la table RDBMS vers HDFS.
Syntaxe
Voici la syntaxe pour créer un travail Sqoop.
$ sqoop job (generic-args) (job-args) [- [subtool-name] (subtool-args)] $ sqoop-job (generic-args) (job-args) [- [subtool-name] (subtool-args)]
Create Job (–create)
Ici, nous créons un job avec le nom myjob , qui peut importer la table données de la table RDBMS vers HDFS. La commande suivante est utilisée pour créer une tâche qui importe des données de la table employee de la base de données db vers le fichier HDFS.
$ sqoop job –create myjob – import –connect jdbc: mysql: // localhost / db –username root –table employee –m 1
Vérifier le travail (–list)
L’argument ‘–list’ est utilisé pour vérifier les travaux enregistrés. La commande suivante est utilisée pour vérifier la liste des jobs Sqoop enregistrés.
$ sqoop job –list
Il montre la liste des jobs enregistrés.
Emplois disponibles: mon travail
Inspecter le travail (–show)
‘–show’ est utilisé pour inspecter ou vérifier des travaux particuliers et leurs détails. La commande et l’exemple de sortie suivants sont utilisés pour vérifier un travail appelé mon travail .
$ sqoop job –show myjob
Il montre les outils et leurs options, qui sont utilisés dans myjob .
Job: myjob Tool: import Options: —– ———————– direct.import = vrai codegen.input.delimiters.record = 0 hdfs.append.dir = faux db.table = employé. .. incremental.last.value = 1206 …
Exécuter la tâche (–exec)
L’option ‘–exec’ est utilisée pour exécuter un travail enregistré. La commande suivante est utilisée pour exécuter une tâche sauvegardée appelée myjob .
$ sqoop job –exec myjob
Il vous montre la sortie suivante.
10/08/19 13:08:45 INFO tool.CodeGenTool: Début de la génération de code …
Sqoop – Codegen
Ce chapitre décrit l’importance de ‘ codegen ‘. Du point de vue de l’application orientée objet, chaque table de base de données a une classe DAO qui contient les méthodes’ getter ‘et’ setter ‘pour initialiser les objets. Cet outil (-codegen) génère automatiquement la classe DAO.
Il génère une classe DAO en Java, basée sur la structure du schéma de table. La définition Java est instanciée dans le cadre du processus d’importation. L’utilisation principale de cet outil est de vérifier si Java a perdu le code Java. Si tel est le cas, il va créer une nouvelle version de Java avec le délimiteur par défaut entre les champs.
Syntaxe
Voici la syntaxe de la commande Sqoop codegen.
$ sqoop codegen (generic-args) (codegen-args) $ sqoop-codegen (generic-args) (codegen-args)
Example
Prenons un exemple qui génère du code Java pour emp table dans la base de données userdb .
La commande suivante est utilisée pour exécuter l’exemple donné.
$ sqoop codegen –connect jdbc: mysql: // localhost / userdb –username root –table emp
Si la commande s’exécute avec succès, alors elle produira la sortie suivante sur le terminal.
14/12/23 02:34:40 INFO sqoop.Sqoop: Exécution de la version Sqoop: 1.4.5 14/12/23 02:34:41 INFO tool.CodeGenTool : Début de la génération du code ………………. 14/12/23 02:34:42 INFO orm.CompilationManager: HADOOP_MAPRED_HOME est / usr / local / hadoop Remarque: /tmp/sqoop-hadoop/compile/9a300a1f94899df4a9b10f9935ed9f91/emp.java utilise ou remplace une API obsolète. Remarque: Recompilez avec -Xlint: obsolescence pour plus de détails. 14/12/23 02:34:47 INFO orm.CompilationManager: Ecriture du fichier jar: /tmp/sqoop-hadoop/compile/9a300a1f94899df4a9b10f9935ed9f91/emp.jar
Vérification
Laissez-nous jetez un œil à la sortie. Le chemin, qui est en gras, est l’emplacement que le code Java de la table emp génère et stocke. Vérifions les fichiers à cet emplacement en utilisant les commandes suivantes.
$ cd / tmp / sqoop-hadoop / compile / 9a300a1f94899df4a9b10f9935ed9f91 / $ ls emp.class emp.jar emp .java
Si vous souhaitez vérifier en profondeur, comparez la table emp dans la base de données userdb et emp.java dans le répertoire suivant
/ tmp / sqoop-hadoop / compile / 9a300a1f94899df4a9b10f9935ed9f91 /.
Sqoop – Eval
Ce chapitre décrit comment utiliser l’évaluation de Sqoop ‘ outil. Il permet aux utilisateurs d’exécuter des requêtes définies par l’utilisateur sur les serveurs de base de données respectifs et de prévisualiser le résultat dans la console. Ainsi, l’utilisateur peut s’attendre à ce que les données de table résultantes soient importées. En utilisant eval, nous pouvons évaluer tout type de requête SQL qui peut être une instruction DDL ou DML.
Syntaxe
La syntaxe suivante est utilisée pour la commande Sqoop eval.
$ sqoop eval (generic-args) (eval-args) $ sqoop-eval (generic-args) (eval-args)
Select Query Evaluation
En utilisant l’outil eval, nous pouvons évaluer tout type de requête SQL. Prenons un exemple de sélection de lignes limitées dans la table employee de la base de données db . La commande suivante est utilisée pour évaluer l’exemple donné à l’aide d’une requête SQL.
$ sqoop eval –connect jdbc: mysql: // localhost / db – username root –query « SELECT * FROM Employee LIMIT 3
Si la commande s’exécute avec succès, elle produira la sortie suivante sur le terminal.
+ —— + ————– + ————- + ——— ———- + ——– + | Id | Nom | Désignation | Salaire | Dept | + —— + ————– + ————- + ————- —— + ——– + | 1201 | gopal | directeur | 50000 | TP | | 1202 | manisha | preader | 50000 | TP | | 1203 | khalil | php d ev | 30000 | AC | + —— + ————– + ————- + ————- —— + ——– +
Évaluation des requêtes d’insertion
L’outil Sqoop eval peut être applicable à la fois pour la modélisation et la définition des instructions SQL. Cela signifie que nous pouvons également utiliser eval pour insérer des instructions. La commande suivante est utilisée pour insérer une nouvelle ligne dans la table employee de la base de données db .
$ sqoop eval –connect jdbc: mysql: // localhost / db –username root -e « INSERT INTO employee VALUES (1207, ‘Raju’, ‘UI dev’, 15000, ‘TP’)
Si la commande s’exécute avec succès, alors elle affichera l’état des lignes mises à jour sur la console.
Sinon, vous pouvez vérifier la table des employés sur la console MySQL. La commande suivante est utilisée pour vérifier les lignes de la table employee de la base de données db en utilisant select ‘query.
mysql > mysql> utiliser db; mysql> SELECT * FROM employé; + —— + ————– + ————- + ————- —— + ——– + | Id | Nom | Désignation | Salaire | Dept | + —— + ————– + ————- + ————- —— + ——– + | 1201 | gopal | directeur | 50000 | TP | | 1202 | manisha | preader | 50000 | TP | | 1203 | khalil | php dev | 30000 | AC | | 1204 | prasanth | php dev | 30000 | AC | | 1205 | kranthi | admin | 20000 | TP | | 1206 | satish p | grp des | 20000 | GR | | 1207 | Raju | UI dev | 15000 | TP | + —— + ————– + ————- + ————- —— + ——– +
Sqoop – Lister les bases de données
Ce chapitre décrit comment lister les bases de données en utilisant Sqoop. L’outil Sqoop list-databases analyse et exécute la requête «SHOW DATABASES» sur le serveur de base de données. Par la suite, il répertorie les bases de données présentes sur le serveur.
Syntaxe
La suite La syntaxe ng est utilisée pour la commande Sqoop list-databases.
$ sqoop list-databases (generic-args) (list-databases-args) $ sqoop-list-databases ( generic-args) (list-databases-args)
Exemple de requête
La commande suivante est utilisée pour lister toutes les bases de données du serveur de base de données MySQL.
$ sqoop list-databases –connect jdbc: mysql: // localhost / –username root
Si la commande s’exécute avec succès, alors il affichera le liste des bases de données de votre serveur de base de données MySQL comme suit.
… 13/05/31 16:45:58 INFO manager.MySQLManager: Préparation à l’utilisation d’un streaming MySQL resultset. mysql test userdb db
Ce chapitre décrit comment lister les tables d’une base de données particulière dans le serveur de base de données MySQL en utilisant Sqoop. L’outil Sqoop list-tables analyse et exécute la requête «SHOW TABLES» sur une base de données particulière. Par la suite, il répertorie les tables présentes dans une base de données.
Syntaxe
La syntaxe suivante est utilisée pour la commande Sqoop list-tables.
$ sqoop list-tables (generic-args) (list-tables-args) $ sqoop-list-tables (generic-args) (list-tables-args)
Exemple de requête
La commande suivante est utilisée pour lister toutes les tables de la base de données userdb du serveur de base de données MySQL.
$ sqoop list- tables –connect jdbc: mysql: // localhost / userdb –username root
Si la commande s’exécute avec succès, alors elle affichera la liste des tables dans userdb base de données comme suit.
… 13/05/31 16:45:58 INFO manager.MySQLManager: Préparation à l’utilisation d’un jeu de résultats de streaming MySQL. emp emp_add emp_contact
Sqoop – Lister les tables
Ce chapitre décrit comment lister les tables d’une base de données particulière dans le serveur de base de données MySQL en utilisant Sqoop. L’outil Sqoop list-tables analyse et exécute le Requête «SHOW TABLES» sur une base de données particulière. Par la suite, il répertorie les tables présentes dans une base de données.
Syntaxe
La syntaxe suivante est utilisée pour la commande Sqoop list-tables.
$ sqoop list-tables (generic-args) (list-tables-args) $ sqoop-list-tables (generic-args) (list-tables-args)
Exemple de requête
La commande suivante est utilisée pour lister toutes les tables de la base de données userdb du serveur de base de données MySQL.
$ sqoop list- tables –connect jdbc: mysql: // localhost / userdb –username root
Si la commande s’exécute avec succès, alors elle affichera la liste des tables dans userdb base de données comme suit.
… 13/05/31 16:45:58 INFO manager.MySQLManager: Préparation à l’utilisation d’un jeu de résultats de streaming MySQL. emp emp_add emp_contact