Importación de datos en hdfs con sqoop

Video: Ingesta de datos con Sqoop

Imagine una base de datos relacional utilizado por una empresa de servicios de ficción que ha tenido (lo has adivinado) las llamadas de servicio de Apache Hadoop y ahora quiere mover algunos de sus datos en Hadoop para ejecutar consultas colmena, el apalancamiento HBase escalabilidad y el rendimiento, y ejecutar análisis de texto en descripciones de los problemas de sus clientes.

Sqoop es la herramienta que desea utilizar para importar datos de tablas relacionales en tablas HBase en Hadoop.

En el siguiente listado, se puede ver los comandos de MySQL utilizados para construir la base de datos de órdenes de servicio que se ve en la figura. Instalado es un RDBMS MySQL que se puede importar y exportar utilizando Sqoop.

/ * Crear la Contratación de Servicios de base de datos * / Crear base de datos serviceorderdb-USO serviceorderdb - / * Crear la tabla de información de producto * / CREAR productinfo TABLA (productnum CHAR (4) PRIMARY KEY, productdesc VARCHAR (100)) - / * Crear el cliente Contacto Tabla de información * / CREATE TABLE customercontactinfo (customernum INT PRIMARY KEY, CustomerName VARCHAR (100), contactinfo VARCHAR (100), productnums SET ( `A100`, `A200`, `A300`, `B400`, `B500`, `C500 `, `C600`, `D700`)) - / * Crear la tabla de órdenes de servicio * / CREATE serviceorders TABLA (serviceordernum INT PRIMARY KEY, INT customernum, productnum CHAR (4), el estado VARCHAR (100), FOREIGN KEY (customernum) Referencias customercontactinfo (customernum), FOREIGN KEY (productnum) REFERENCIAS ProductInfo (productnum)) - / * Insertar datos de productos en la tabla de información de producto * / INSERT INTO VALORES productinfo ( `A100`, `HBase Soporte de producto`) - INSERT INTO VALORES productinfo ( `A200`, `Colmena Soporte de producto`) - INSERT INTO VALORES productinfo ( `A300`, `Sqoop Soporte de producto`) - INSERT INTO productinfo VALUES ( `B400`, `Ambari soporte de producto`) - INSERT INTO VALORES productinfo ( `B500`, `HDFS Soporte de producto`) - INSERT INTO VALORES productinfo ( `C500`, `mahout soporte de producto`) - INSERT INTO VALORES productinfo ( `C600`, `Zookeeper Soporte de producto`) - INSERT INTO VALORES productinfo ( `D700`, `Pig Soporte de producto`) - / * Insertar datos del cliente en el cliente Contacto Tabla de Información * / INSERT INTO customercontactinfoVALUES (10000, `John Timoteo Smith ` `1 Hadoop Lane, NY, 11111, John.Smith @ xyz.com`, `B500`) - INSERT INTO customercontactinfoVALUES (10001, `Bill Jones`, `2 HBase Ave, CA, 22222`,` A100, A200, A300, B400, B500, C500, C600, D700 `) - INSERT INTO customercontactinfoVALUES (20000, `Jane Ann Doe`, `1 Experto HBase Ave, CA, 22222``, A100, A200, A300` ) - INSERT INTO customercontactinfoVALUES (20001, `Joe desarrollador`, `1 piglatin Ave, CO, 33333`, `D700`) - INSERT INTO customercontactinfoVALUES (30000, `datos Scientist`, `1 Estadísticas Lane, MA, 33333`, `A300, C500` ) - / * Ingrese órdenes de servicio en el Servicio O rders tabla * / INSERT INTO serviceordersVALUES (100000, 20000, `A200`, `Tengo algunas preguntas sobre la construcción de consultas HiveQL? Mi Hadoop para el libro de los maniquíes no ha presentado aún! `) - INSERT INTO serviceordersVALUES (100001, 10001, `A100`, `Necesito entender cómo configurar Zookeeper para mi Cluster HBase`) - INSERT INTO serviceordersVALUES (200000, 20001, `D700`, `yo escribo alguna piglatin y tengo un par de preguntas?`) - INSERT INTO serviceordersVALUES (200001, 30000, `A300`, `¿Cómo puedo combinar mis conjuntos de datos después de que las importaciones incrementales Sqoop?`) -

El siguiente listado confirma que la base de datos MySQL de órdenes de servicio ha sido creado usando los comandos mostrados anteriormente, y muestra los nombres de las tablas que se importará el uso de Sqoop.

Video: Sqoop Import to Hdfs, Hive and Hbase

mysqlgt; mostrar tablas - + -------------------------- + | Tables_in_serviceorderdb | + -------------------------- + | customercontactinfo || productinfo || serviceorders | + -------------------------- + 3 filas en el conjunto (0,00 seg)

Ahora que han visto los registros de base de datos MySQL de orden de servicio que están esperando a ser explotado, es hora de dar vuelta a su atención a Hadoop y ejecutar el primer comando Sqoop.

No tire de la confianza importar ordenar a la derecha del palo. Sqoop incluye varias herramientas útiles, junto con importar y exportar, incluyendo el list-bases de datos comando, que se utiliza en el siguiente listado. El uso de ese comando, se puede confirmar que dispone de conectividad y visibilidad en la base de datos MySQL.

$ Sqoop list-bases de datos JDBC --connect: mysql: // localhost / - nombre de usuario -PEnter raíz contraseña: 13/08/15 17:21:00 INFO manager.MySQLManager: Preparación para usar un resultset.information_schemamysqlperformance_schema streaming de MySQLserviceorderdb

los serviceorderdb se muestra a estar disponible, por lo que ahora puede enumerar las tablas dentro de serviceorderdb mediante el uso de la Sqoop list-mesas mando. Observe que ahora va a añadir la base de datos que desea Sqoop para acceder en el jdbc: mysql URL:

$ Sqoop lista mesas - conectar jdbc: mysql: // localhost /serviceorderdb---PEnter nombre de usuario root contraseña: 13/08/15 17:22:01 INFO manager.MySQLManager: Preparación para usar un MySQL resultset.customercontactinfoproductinfoserviceorders de streaming

Sqoop ahora tiene conectividad y se puede acceder a las tres tablas de la figura. Esto significa que puede ejecutar su primera Sqoop importar mando y dirigir la serviceorders mesa con una conciencia limpia. Sqoop importar comandos tienen el siguiente formato:

importación Sqoop (argumentos genéricos) (argumentos de importación)

Con los argumentos genéricos, que apuntan a su base de datos MySQL y proporcionar la información de acceso necesaria, tal como lo hizo con el anterior list-mesas herramienta. En los argumentos de importación, usted (el usuario) tiene la capacidad de especificar lo que desea importar y cómo quiere que la importación a realizar.

Video: Importing Microsoft SQLServer Database Tables into Hadoop using Sqoop

En el listado siguiente, se especifica la tabla serviceorders y solicitar que un mapa de tareas se utiliza para la importación mediante el -m 1 CLA. (Por defecto, Sqoop usaría cuatro tareas mapa, pero eso sería una exageración para esta pequeña mesa y nuestra máquina virtual).

También ha especificado el -nombre de la clase para el código generado y se especifica la -bindir donde el código compilado y .tarro archivo debe encontrarse. (Sin estos argumentos, Sqoop sería colocar el archivo fuente Java generado en el directorio de trabajo actual y el compilado .clase archivo y .archivo jar en / Tmp / sqoop-/compilar.)

Video: Import all tables in a database into HDFS using SQOOP - Hands-On

El nombre de la clase simplemente se deriva del nombre de la tabla a menos que especifique un nombre con la ayuda de la -nombre de la clase argumento de línea de comandos (CLA). los -target-dir es la ubicación en HDFS en la que desea la tabla importada para ser colocado.

$ Sqoop importación - conectar jdbc: mysql: // localhost / serviceorderdb - -P nombre de usuario root - serviceorders mesa -m 1 - serviceorders clase de nombre - target-dir / usr / BiAdmin / serviceorders-importación - bindir .Enter contraseña: 13/08/25 14:43:56 ... INFO mapreduce.ImportJobBase: 356 bytes transferidos en 21.0736 16.8932 segundos (bytes / seg) 13/08/25 14:43:56 INFO mapreduce.ImportJobBase: Obtenido 4 registros.
Artículos Relacionados