Vous êtes sur la page 1sur 11

Questions et réponses avec Apache Sqoop

1. Introduction à Apache Sqoop


Sqoop - « SQL vers Hadoop et Hadoop vers SQL » Alors qu'il s'agit de transférer
des données entre Hadoop et les serveurs de bases de données relationnelles, Sqoop
est le meilleur outil. Pour être plus précis, nous l'utilisons pour importer des
données de bases de données relationnelles telles que MySQL, Oracle vers Hadoop
HDFS, et exporter du système de fichiers Hadoop vers des bases de données
relationnelles. Fondamentalement, il est fourni par Apache Software Foundation.
De plus, Sqoop utilise deux outils principaux. Comme:

1. Importation Sqoop (Copier les données du SGBDR vers HDFS)


2. Exportation Sqoop (Copier les données de HDFS vers RDBMS)

Maintenant, commençons à discuter des meilleures questions d'entretien Apache


Sqoop.

2. Questions fréquemment posées lors d'un entretien


avec Sqoop
Voici donc le top 50 des questions Sqoop :

Que 1. Mentionnez les meilleures fonctionnalités d'Apache Sqoop.

Rép.Apache Sqoop est un outil de l'écosystème Hadoop qui présente plusieurs


avantages. Comme

1. Importation/exportation parallèle
2. Connecteurs pour toutes les principales bases de données SGBDR
3. Importer les résultats de la requête SQL
4. Charge incrémentielle
5. Pleine charge
6. Intégration de la sécurité Kerberos
7. Charger les données directement dans Hive/HBase
8. Compression
9. Prise en charge d'Accumulo
Que 2. Qu'est-ce que l'importation Sqoop ? Expliquez son but.

Rép. Alors qu'il s'agit d'importer des tables de SGBDR vers HDFS, nous utilisons
l'outil d'importation Sqoop. Généralement, on peut considérer que chaque ligne
d'un tableau est un enregistrement dans HDFS. De plus, lorsque nous parlons de
fichiers texte, tous les enregistrements sont là sous forme de données texte.
Cependant, lorsque nous parlons d'Avro et de fichiers de séquence, tous les
enregistrements sont ici sous forme de données binaires. Pour être plus précis, il
importe des tables individuelles du SGBDR vers HDFS.

Que 3. Quel est le format de fichier par défaut pour importer des données à
l'aide d'Apache Sqoop ?

Rép. En utilisant deux formats de fichiers, Sqoop permet l'importation de données.


Tel que:

i) Format de fichier texte délimité

Fondamentalement, pour importer des données à l'aide de Sqoop, il s'agit du format


de fichier par défaut. De plus, pour la commande import dans Sqoop, ce format de
fichier peut être explicitement spécifié à l'aide de l'argument –as-textfile. De même,
le passage de cet argument produira la représentation sous forme de chaîne de tous
les enregistrements dans les fichiers de sortie avec les caractères délimités entre les
lignes et les colonnes.

ii) Format de fichier de séquence

Nous pouvons dire que le format de fichier de séquence est un format de fichier
binaire. Leurs enregistrements sont stockés dans des types de données spécifiques
aux enregistrements personnalisés qui sont affichés comme classes Java. De plus,
Sqoop crée automatiquement ces types de données et les manifeste sous forme de
classes Java.

Que 4. Comment importer des objets volumineux (objets BLOB et CLOB) dans Apache
Sqoop ?

Rép. Cependant, l'importation directe d'objets BLOB et CLOB volumineux n'est pas prise en
charge par la commande d'importation Apache Sqoop. Ainsi, afin d'importer des objets
volumineux comme I Sqoop, les importations basées sur JDBC doivent être utilisées sans
l'argument direct de l'utilitaire d'importation.

Que 5. Comment pouvez-vous exécuter une requête SQL de forme libre dans Sqoop
pour importer les lignes de manière séquentielle ?

Rép.En utilisant l'option -m 1 dans la commande d'importation Sqoop, nous pouvons le faire.
Fondamentalement, il ne créera qu'un seul tâche MAPREDUCE qui importera ensuite les
lignes en série.
Que 6. Apache Sqoop a-t-il une base de données par défaut ?

Rép. Oui, MySQL est la base de données par défaut.

Que 7. Comment allez-vous lister toutes les colonnes d'une table à l'aide d'Apache
Sqoop ?

Rép.Puisque pour lister toutes les colonnes, nous n'avons aucune commande directe comme
sqoop-list-columns. Donc, indirectement, nous pouvons y parvenir en récupérant les colonnes
des tables souhaitées et en les redirigeant vers un fichier pouvant être consulté manuellement
contenant les noms de colonnes d'une table particulière.

Sqoop import –m 1 –connect ‘jdbc: sqlserver: //nameofmyserver;


database=nameofmydatabase; username=DeZyre; password=mypassword’ –query
“SELECT column_name, DATA_TYPE FROM INFORMATION_SCHEMA.Columns WHERE
table_name=’mytableofinterest’ AND \$CONDITIONS” –target-dir
‘mytableofinterest_column_name’

Que 8. Si les données sources sont mises à jour de temps en temps, comment
synchroniserez-vous les données importées par Sqoop dans HDFS?

Rép. En utilisant le paramètre incrémental avec l'importation de données, nous pouvons


synchroniser les données––Cependant, avec l'une des deux options, nous pouvons utiliser le
paramètre incrémental

i) append

Basiquement, nous devrions utiliser l'importation incrémentielle avec l'option append. Même
si la table est mise à jour en continu avec de nouvelles lignes et des valeurs d'ID de ligne
croissantes. En particulier, lorsque les valeurs de certaines colonnes sont vérifiées (les
colonnes à vérifier sont spécifiées à l'aide de –check-column) et s'il découvre une valeur
modifiée pour ces colonnes, seule une nouvelle ligne sera insérée.

ii) lastmodified

Cependant, dans ce type d'importation incrémentielle, la source a une colonne de date qui est
vérifiée. Tous les enregistrements qui ont été mis à jour après la dernière importation en
fonction de la dernière colonne modifiée dans la source, les valeurs seraient mises à jour.

Que 9. Nommez quelques commandes de contrôle d'importation. Comment Sqoop peut-


il gérer de gros objets ?

Rép. Pour importer des données SGBDR, nous utilisons des commandes de contrôle
d'importation

Append : ajoutez des données à un ensemble de données existant dans HDFS.


–append

Columns : colonnes à importer de la table.

–columns<col,col……>

Where : clause where à utiliser lors de l'import.

Que 10. Comment pouvons-nous importer des données à partir d'une ligne ou d'une
colonne particulière ? Quels sont les types de destination autorisés dans la commande
d'importation Sqoop ?

Rép.Fondamentalement, sur la base de la clause where, Sqoop permet d'exporter et d'importer


les données de la table de données. Ainsi, la syntaxe est

–columns<col1,col2……>

–where

–query

Par example:
sqoop import –connect jdbc:mysql://db.one.com/corp –table INTELLIPAAT_EMP –where
“start_date> ’2016-07-20’ ”
sqoopeval –connect jdbc:mysql://db.test.com/corp –query “SELECT * FROM
intellipaat_emp LIMIT 20”
sqoop import –connect jdbc:mysql://localhost/database –username root –password aaaaa –
columns “name,emp_id,jobtitle”

Cependant, dans les services suivants, Sqoop prend en charge les données importées :

1. HDFS
2. Hive
3. Hbase
4. Hcatalog
5. Accumulo

Que 11. Quand utiliser –target-dir et quand utiliser –warehouse-dir lors de


l'importation de données ?

Rép. Fondamentalement, nous utilisons –target-dir pour spécifier un répertoire particulier


dans HDFS. Alors que nous utilisons –warehouse-dir pour spécifier le répertoire parent de
toutes les tâches sqoop. Ainsi, dans ce cas, sous le répertoire parent, sqoop créera un
répertoire portant le même nom que la table.
Que 12. Quel est le processus pour effectuer un chargement de données incrémentiel
dans Sqoop ?

Rép. Dans Sqoop, le processus pour effectuer un chargement de données incrémentiel


consiste à synchroniser les données modifiées ou mises à jour (souvent appelées données
delta) du SGBDR vers Hadoop. De plus, dans Sqoop, les données delta peuvent être facilitées
grâce à la commande de chargement incrémentiel. De plus, en utilisant la commande
d'importation Sqoop, nous pouvons effectuer un chargement incrémentiel. Aussi, en chargeant
les données dans Hive sans les écraser. Cependant, dans Sqoop, les différents attributs qui
doivent être spécifiés lors du chargement incrémentiel sont

1) Mode (incrémental) Il montre comment Sqoop déterminera quelles sont les nouvelles
lignes. En outre, il a la valeur Append ou Last Modified.

2) Col (Check-column) Fondamentalement, il spécifie la colonne qui doit être examinée pour
trouver les lignes à importer.

3) Value (last-value) Elle indique le maximum valeur de la colonne de contrôle de l'opération


d'importation précédente.

Que 13. Quelle est l'importance d'utiliser le paramètre –compress-codec ?

Rép. Cependant, nous utilisons le paramètre -compress -code pour obtenir le fichier de sortie
d'une importation sqoop dans des formats autres que .gz comme .bz2.

Que 14. Les requêtes SQL de forme libre peuvent-elles être utilisées avec la commande
d'importation Sqoop ? Si oui, comment peuvent-ils être utilisés ?

Rép. Dans Sqoop, nous pouvons utiliser des requêtes SQL avec la commande import.
Fondamentalement, nous devons utiliser la commande import avec les options de requête -e et
- pour exécuter des requêtes SQL de forme libre. Mais notez que la valeur –target dir doit être
spécifiée lors de l'utilisation des options –e et –query avec la commande import.

Que 15. Quelle est l'importance de l'outil d'évaluation de sqoop ?

Rép.Essentiellement, Sqoop Éval permet d'exécuter des exemples de requêtes SQL sur la
base de données et de prévisualiser les résultats sur la console. De plus, il est utile de savoir
quelles données nous pouvons importer ou si les données souhaitées sont importées ou non.

Que 16. Comment pouvez-vous importer uniquement un sous-ensemble de lignes d'une


table ?

Rép. Dans l'instruction d'importation sqoop, en utilisant la clause WHERE, nous ne pouvons
importer qu'un sous-ensemble de lignes.

Que 17. Quelles sont les limites de l'importation directe de tables SGBDR dans
Hcatalog ?

Rép.En utilisant l'option –hcatalog –database avec la –hcatalog –table, nous pouvons importer
directement des tables SGBDR dans Hcatalog. Cependant, il y a une limitation à cela, c'est
qu'il ne prend pas en charge plusieurs arguments comme -as-Avro file, -direct, -as-
sequencefile, -target-dir , -export-dir.

Que 18. Quel est l'avantage d'utiliser l'option –password-file plutôt que l'option -P tout
en empêchant l'affichage du mot de passe dans l'instruction d'importation sqoop ?

Rép. Dans un script sqoop, nous pouvons utiliser l'option –password-file. Alors que l'option
-P lit à partir de l'entrée standard, empêchant l'automatisation.

Que 19. Qu'entendez-vous par Free Form Import dans Sqoop ?

Rép. En utilisant n'importe quel SQL, Sqoop peut importer des données à partir d'une requête
de base de données relationnelle plutôt que d'utiliser uniquement des paramètres de nom de
table et de colonne.

Que 20. Quel est le rôle du pilote JDBC dans Sqoop ?

Rép. Fondamentalement, sqoop a besoin d'un connecteur pour se connecter à différentes


bases de données relationnelles. Étant donné que, en tant que pilote JDBC, chaque fournisseur
de base de données met à disposition ce connecteur spécifique à cette base de données. Par
conséquent, pour interagir avec Sqoop, il faut le pilote JDBC de chacune des bases de
données dont il a besoin.

Que 21. Le pilote JDBC est-il suffisant pour connecter sqoop aux bases de données ?

Rép. Non. pour se connecter à une base de données, Sqoop a besoin à la fois de JDBC et d'un
connecteur.

Que 22. Qu'est-ce que InputSplit dans Hadoop ?

Rép. La division d'entrée est définie pendant l'exécution d'une tâche Hadoop, elle divise les
fichiers d'entrée en morceaux et attribue également chaque division à un mappeur à traiter.

Que 23. Quel est le travail d'Export dans Hadoop sqoop ?

Rép. L'outil d'exportation transfère les données de HDFS vers RDBMS.

Que 24. Utilisation de la commande Codegen dans Hadoop sqoop ?

Rép. Fondamentalement, la commande Codegen génère du code pour interagir avec les
enregistrements de la base de données.

Que 25. Utilisation de la commande Help dans Hadoop sqoop ?

Rép. La commande d'aide dans Hadoop sqoop répertorie généralement les commandes
disponibles

Que 26. Comment pouvez-vous planifier un travail sqoop en utilisant Oozie ?


Rép. Cependant, Oozie a des actions sqoop intégrées à l'intérieur desquelles nous pouvons
mentionner les commandes sqoop à exécuter.

Que 27. Quelle est l'importance de la clause split-by dans l'exécution de tâches
d'importation parallèles dans sqoop ?

Rép.Dans Sqoop, il mentionne le nom de la colonne en fonction de la valeur de laquelle les


données seront divisées en groupes d'enregistrements. De plus, par la tache MAPRREDUCE
, ces groupes d'enregistrements seront lus en parallèle.

Que 28. Qu'est-ce qu'un metastore sqoop ?

Rép.Un outil que Sqoop héberge un référentiel de métadonnées partagé est ce que nous
appelons sqoop metastore. De plus, plusieurs utilisateurs et/ou utilisateurs distants peuvent
définir et exécuter des jobs enregistrés (créés avec le job sqoop) définis dans ce métastore. De
plus, avec l'argument –meta-connect, les clients doivent être configurés pour se connecter au
métastore dans sqoop-site.xml.

Que 29. Quel est le but de sqoop-merge ?

Rép. L'outil de fusion combine deux ensembles de données où les entrées d'un ensemble de
données doivent écraser les entrées d'un ensemble de données plus ancien en préservant
uniquement la version la plus récente des enregistrements entre les deux ensembles de
données.

Que 30. Comment pouvez-vous voir la liste des tâches stockées dans le métastore sqoop ?

Rép. sqoop job --list

Que 31. Sur quelle base de données le métastore sqoop s'exécute-t-il ?

Rép. Fondamentalement, sur la machine actuelle exécutant sqoop-metastore, une instance de


base de données HSQLDB partagée.

Que 32. Où la base de données metastore peut-elle être hébergée ?

Rép. N'importe où, cela signifie que nous pouvons héberger une base de données de
métastore à l'intérieur ou à l'extérieur du cluster Hadoop.

Que 33. Donnez la commande sqoop pour voir le contenu du travail nommé myjob?

Rép. Sqoop job –show myjob

Que 34. Comment pouvez-vous contrôler le mappage entre les types de données SQL et
les types Java ?

Rép. nous pouvons configurer le mappage entre en utilisant la propriété –map-column-java.


Par exemple :
$ sqoop import … –map-column-java id = String, value = Integer

Que 35. Est-il possible d'ajouter un paramètre lors de l'exécution d'un travail
enregistré ?

Rép. Oui, en utilisant l'option –exec, nous pouvons ajouter un argument à un travail enregistré
à runtime.sqoop job –exec jobname — — newparameter

Que 36. Quelle est l'utilité du fichier d'options dans sqoop.

Rép. Pour spécifier les valeurs de ligne de commande dans un fichier et les utiliser dans les
commandes sqoop, nous utilisons le fichier d'options dans sqoop. Par exemple, la valeur du
paramètre -connect et la valeur du nom d'utilisateur doivent être stockées dans un fichier et
utilisées encore et encore avec différentes commandes sqoop. .

Que 37. Comment éviter d'importer des tables une par une lors de l'importation d'un
grand nombre de tables à partir d'une base de données ?

Rép. En utilisant les commandesqoop import-all-tables–connect–usrename–password–


exclude-tables table1,table2 ..Fondamentalement, cela importera toutes les tables sauf celles
mentionnées dans la clause d'exclusion-tables.

Que 38. Comment pouvez-vous contrôler le nombre de mappeurs utilisés par la


commande sqoop ?

Rép. Pour contrôler le nombre de mappeurs exécutés par une commande sqoop, nous utilisons
le paramètre –num-mappers. De plus, nous devrions commencer par choisir un petit nombre
de tâches de carte, puis augmenter progressivement, car le choix d'un nombre élevé de
mappeurs au départ peut ralentir les performances du côté de la base de données.

Que 39. Quelle est l'extension par défaut des fichiers produits à partir d'une importation
sqoop à l'aide du paramètre –compress ?

Rép. .gz

Que 40. Quelle est l'importance de l'utilisation du paramètre –compress-codec ?

Rép. Nous utilisons le paramètre -compress -code pour obtenir le fichier de sortie d'une
importation sqoop dans des formats autres que .gz comme .bz2.

Que 41. Quel est l'inconvénient d'utiliser le paramètre –direct pour un chargement plus
rapide des données par sqoop ?

Rép. Les utilitaires natifs utilisés par les bases de données pour prendre en charge une charge
plus rapide ne fonctionnent pas pour les formats de données binaires comme SequenceFile.

Que 42. Comment allez-vous mettre à jour les lignes déjà exportées ?
Rép.Fondamentalement, pour mettre à jour les lignes existantes, nous pouvons utiliser le
paramètre –update-key. De plus, une liste de colonnes séparées par des virgules est utilisée
qui identifie de manière unique une ligne. Toutes ces colonnes sont utilisées dans la clause
WHERE de la requête UPDATE générée. Toutes les autres colonnes du tableau seront
utilisées dans la partie SET de la requête.

Que 43. Quelles sont les commandes de base dans Apache Sqoop et ses utilisations ?

Rép. Les commandes de base d'Apache Sqoop sont :


Codegen, Créer-ruche-table, Éval, Exportation, Aider, Importer, Importer toutes les
tables, Liste-bases de données, Tables-listes, Versions.
De plus, les utilisations des commandes de base d'Apache Sqoop sont :

1. Codegen- Il aide à générer du code pour interagir avec les enregistrements de la base
de données.
2. Créer-hive-table- Il est utile d'importer une définition de table dans une ruche
3. Eval- Il aide à évaluer l'instruction SQL et à afficher les résultats
4. Exporter - Il est utile d'exporter un répertoire HDFS dans une table de base de données
5. Aide - Il est utile de lister les commandes disponibles
6. Importer - Il est utile d'importer une table d'une base de données vers HDFS
7. Import-all-tables - Il permet d'importer des tables d'une base de données vers HDFS
8. List-databases- Cela aide à répertorier les bases de données disponibles sur un serveur
9. List-tables - Il est utile de répertorier les tables dans une base de données
10. Version- Il aide à afficher les informations de version

Que 44. Comment le mot Sqoop est-il venu? Sqoop est quel type d'outil et l'utilisation
principale de sqoop ?

Rép.Le mot Sqoop provient de SQL+HADOOP=SQOOP. Fondamentalement, c'est un outil


de transfert de données. Nous utilisons Sqoop pour importer et exporter une grande quantité
de données du SGBDR vers HDFS et vice versa.

Que 45. Qu'est-ce que la validation Sqoop ?

Rép.Cela signifie valider les données copiées. Importez ou exportez en comparant le nombre
de lignes de la source ainsi que la copie de publication cible. De même, nous utilisons cette
option pour comparer le nombre de lignes entre la source et la cible juste après l'importation
des données dans HDFS. De plus, alors que lors des importations, toutes les lignes sont
supprimées ou ajoutées, Sqoop suit ce changement. Met également à jour le fichier journal.

Que 46. Quel est le but de valider dans Sqoop ?

Rép.Dans Sqoop, valider les données copiées est l'objectif principal de la validation.
Fondamentalement, importez ou exportez Sqoop en comparant le nombre de lignes de la
source ainsi que la copie de publication cible.

Que 47. Qu'est-ce que Sqoop Job?


Rép.Pour effectuer une importation incrémentielle si un travail enregistré est configuré, l'état
concernant les lignes les plus récemment importées est mis à jour dans le travail enregistré.
Fondamentalement, cela permet au travail d'importer en continu uniquement les lignes les
plus récentes.

Que 48. Qu'est-ce que Sqoop Import Mainframe Tool et son objectif ?

Rép.Fondamentalement, un outil que nous utilisons pour importer tous les ensembles de
données séquentiels dans un ensemble de données partitionné (PDS) sur un mainframe vers
HDFS est Sqoop Import Mainframe. Cet outil est ce que nous appelons l'outil d'importation
mainframe. De plus, un PDS s'apparente à un répertoire sur les systèmes ouverts. De même,
dans un jeu de données, les enregistrements ne peuvent contenir que des données de
caractères. De plus, ici, les enregistrements seront stockés sous forme de champ de texte
unique avec l'intégralité de l'enregistrement.

Que 49. Quel est le but des tableaux de liste Sqoop?

Rép. Fondamentalement, l'objectif principal de sqoop-list-tables est de lister les tables


présentes dans une base de données.

Que 50. Différence entre Apache Sqoop et Flume.

Rép. Discutons donc de toutes les différences sur la base des fonctionnalités.

une. Flux de données


Apache Sqoop – Fondamentalement, Sqoopfonctionne avec tout type de système de base de
données relationnelle (SGBDR) doté de la connectivité JDBC de base. En outre, Sqoop peut
importer des données à partir de bases de données NoSQL telles que MongoDB, Cassandra et
avec elle. De plus, il permet le transfert de données vers Apache Hive ou HDFS.
Canal Apache–De même, Flume fonctionne avec des sources de données en streaming qui
sont générées en continu dans les environnements Hadoop. Comme les fichiers journaux.

b. Type de chargement
Apache Sqoop – Fondamentalement, la charge Sqoop n'est pas pilotée par des événements.
Apache Flume – Ici, le chargement des données est entièrement piloté par les événements.

c. Quand utiliser
Apache Sqoop - Cependant, si les données sont disponibles dans Teradata, Oracle, MySQL,
PostreSQL ou toute autre base de données compatible JDBC, cela est considéré comme un
ajustement idéal. Apache Flume - Alors que nous déplaçons la majeure partie des données en
streaming à partir de sources comme JMS ou les répertoires de spooling, c'est le meilleur
choix.

ré. Lien vers HDFS


Apache Sqoop - Fondamentalement, pour importer des données dans Apache Sqoop, HDFS
est la destination Apache Flume - Dans Apache Flume, les données sont généralement
acheminées vers HDFS via des canaux

e. Architecture
Apache Sqoop – Fondamentalement, il a une architecture basée sur des connecteurs.
Cependant, cela signifie que les connecteurs savent très bien se connecter aux différentes
sources de données. Aussi pour récupérer les données en conséquence. Apache Flume -
Cependant, il a une architecture basée sur des agents. Fondamentalement, cela signifie que le
code écrit dans Flume est que nous appelons un agent qui peut être responsable de la
récupération des données.

Vous aimerez peut-être aussi