Importation de données dans HBase avec Sqoop

Sqoop peut être utilisé pour transformer un schéma de base de données relationnelle dans un schéma HBase. Bien sûr, l'objectif principal ici est de démontrer comment Sqoop peut importer des données à partir d'un SGBDR ou entrepôt de données directement dans HBase, mais il est toujours mieux de voir comment un outil est utilisé dans le contexte par rapport à la façon dont il est utilisé dans l'abstrait.

La figure montre comment la base de données Ordre de service pourrait ressembler après avoir été transformé en un schéma HBase.

image0.jpg

Pour cet exemple à l'importation particulière, vous souhaitez importer le customercontactinfo tableau directement dans une table HBase en préparation pour la construction de la base de données HBase schéma ordre de service. Pour compléter le schéma HBase, vous auriez à exécuter les mêmes étapes pour importer le productinfo table, puis le serviceorders tableau pourrait être construit avec une application Java MapReduce.

Sqoop ne permet pas aujourd'hui d'importer, tout à la fois, une table relationnelle directement dans une table HBase ayant plusieurs familles de colonne. Pour contourner cette limitation, vous créez la table HBase d'abord, puis d'exécuter trois opérations Sqoop d'importation pour terminer la tâche. La liste montre la tâche de créer la table.




HBase (principal): 017: 0> créer 'customercontactinfo', 'CustomerName ", HBase (principal): 018: 0 *' ContactInfo», «ligne (s) dans 1.0680 secondes ProductNums'0

Dans la liste suivante, pour chaque commande d'importation Sqoop, noter que le HBase famille de la colonne cible spécifié par le --colonne-famille CLA et les colonnes MySQL correspondants spécifiés par le -colonnes CLA sont en gras. La NumClient clé primaire devient aussi la clé de ligne HBase, comme spécifié par le --HBase-row-clé CLA.

Sqoop $ import - connecter jdbc: mysql: // localhost / serviceorderdb - nom d'utilisateur root -P - Table customercontactinfo   --colonnes "NumClient, CustomerName" --HBase table customercontactinfo  --colonne CustomerName famille --1Entrez mot de passe de NumClient HBase-row-clé: ... 13/08/17 16:53:01 INFO mapreduce.ImportJobBase:. Récupérée 5 fiches Sqoop $ import - connecter jdbc: mysql: // localhost / serviceorderdb --username -P racine - Table customercontactinfo  --colonnes "NumClient, contactinfo" --HBase table customercontactinfo  --colonne-famille ContactInfo --1Entrez mot de passe de NumClient HBase-row-clé: ... 13/08/17 17:00:59 INFO mapreduce.ImportJobBase:. Récupérée 5 fiches Sqoop $ import - connecter jdbc: mysql: // localhost / serviceorderdb root --username -P - Table customercontactinfo -colonnes "NumClient, productnums" - HBase table customercontactinfo -ProductNums colonne-famille - HBase-row-clé NumClient -m 1Entrez mot de passe: ... 13/08/17 17:05:54 INFO mapreduce.ImportJobBase: Récupérée 5 enregistrements.

Si vous deviez effectuer un scan HBase de votre nouvelle table, vous verriez que l'importation et la traduction à partir d'une table de base de données relationnelle sur MySQL directement dans HBase a été un succès.

La customercontactinfo tableau dans cet exemple est assez petite, mais imaginez le pouvoir que vous avez maintenant, en utilisant Sqoop et HBase, de se déplacer rapidement des tables relationnelles qui peuvent être dépassement de la capacité de votre SGBDR ou de l'entrepôt de données dans HBase, où la capacité est pratiquement illimitée et l'évolutivité est automatique.

HBase (principal): 033: 0> balayage 'customercontactinfo'ROWCOLUMN + CELL10000column = ContactInfo: contactinfo, timestamp = 1376773256317, valeur = 1 Hadoop Lane, NY, 11111, [email protected]=CustomerName: CustomerName, timestamp = 1376772776684 , valeur = John Timothy Smith10000column = ProductNums: productnums, timestamp = 1376773551221, valeur = B50010001column = ContactInfo: contactinfo, timestamp = 1376773256317, valeur = 2 HBase Ave, CA, 2222210001column = CustomerName: CustomerName, timestamp = 1376772776684, valeur = Bill Jones10001column = ProductNums: productnums, timestamp = 1376773551221, valeur = A100, A200, A300, B400, B500, C500, C600, D70020000column = ContactInfo: contactinfo, timestamp = 1376773256317, valeur = 1 HBase Expert Ave, CA, 2222220000column = CustomerName: CustomerName, timestamp = 1376772776684, valeur = Jane Ann Doe20000column = ProductNums: productnums, timestamp = 1376773551221, valeur = A100, A200, A30020001column = ContactInfo: contactinfo, timestamp = 1376773256317, valeur = 1 Piglatin Ave, CO, 3333320001column = CustomerName: CustomerName, timestamp = 1376772776684 , valeur = Joe Developer20001column = ProductNums: productnums, timestamp = 1376773551221, valeur = D70030000column = ContactInfo: contactinfo, timestamp = 1376773256317, valeur = 1 Statistique Lane, MA, 3333330000column = CustomerName: CustomerName, timestamp = 1376772776684, valeur = données Scientist30000column = ProductNums : productnums, timestamp = 1376773551221, valeur = C5005 rangée (s) dans 0.1120 secondes

Importation de données relationnelles existantes via Sqoop dans les tables de la ruche et Hbase peut potentiellement permettre à un large éventail de nouvelles et passionnantes workflows d'analyse de données. Si cette fonctionnalité est d'intérêt pour vous, consultez la documentation Apache Sqoop des arguments supplémentaires en ligne de commande ruche et Hbase et caractéristiques.


» » » » Importation de données dans HBase avec Sqoop