Importación de datos en HBase con Sqoop
Sqoop se puede utilizar para transformar un esquema de base de datos relacional en un esquema HBase. Por supuesto, el objetivo principal aquí es demostrar cómo Sqoop puede importar datos de un RDBMS o almacén de datos directamente en HBase, pero siempre es mejor ver cómo se utiliza una herramienta de contexto frente cómo se utiliza en el resumen.
La figura muestra cómo la base de datos de órdenes de servicio puede parecer después de haber sido transformado en un esquema HBase.
Para este ejemplo particular, la importación, que desea importar la customercontactinfo tabla directamente en una tabla HBase en preparación para la construcción del esquema de base de HBase orden de servicio. Para completar el esquema HBase, usted tendría que ejecutar los mismos pasos para importar el información del producto mesa, y luego el serviceorders tabla podría ser construido con una aplicación Java MapReduce.
Sqoop no ahora permite importar, a la vez, una tabla relacional directamente en una mesa HBase tener múltiples familias de columna. Para evitar esta limitación, se crea la tabla HBase primero y luego ejecutar tres operaciones de importación Sqoop para terminar la tarea. El listado muestra la tarea de crear la tabla.
HBase (principal): 017: 0> crear 'customercontactinfo "," CustomerName ", HBase (principal): 018: 0 *' ContactInfo ',' ProductNums'0 fila (s) en 1.0680 segundos
En el listado siguiente, para cada comando de importación Sqoop, tenga en cuenta que el objetivo de la familia columna HBase especificado por el --columna familiar CLA y las columnas de MySQL correspondientes especificados por el -columnas CLA están en negrita. los customernum clave primaria también se convierte en la clave de fila HBase, según lo especificado por la --HBase fila de clave CLA.
$ Sqoop importación - conectar jdbc: mysql: // localhost / serviceorderdb - nombre de usuario root -P - Mesa customercontactinfo --columnas "customernum, CustomerName" --HBase mesa customercontactinfo --columna familiar CustomerName --customernum HBase fila de clave -m 1Ingrese contraseña: ... 13/08/17 16:53:01 INFO mapreduce.ImportJobBase:. Consultado el 5 registros $ Sqoop importación - conectar jdbc: mysql: // localhost / serviceorderdb -P raíz --username - Mesa customercontactinfo --columnas "customernum, contactinfo" --HBase mesa customercontactinfo --columna familiar ContactInfo --customernum HBase fila de clave -m 1Ingrese contraseña: ... 13/08/17 17:00:59 INFO mapreduce.ImportJobBase:. Consultado el 5 registros $ Sqoop importación - conectar jdbc: mysql: // localhost / serviceorderdb raíz --username -P - Mesa customercontactinfo -columnas "customernum, productnums" - HBase mesa customercontactinfo -ProductNums columna de la familia - HBase tecla fila customernum -m 1Ingrese contraseña: ... 13/08/17 17:05:54 INFO mapreduce.ImportJobBase: Obtenido 5 registros.
Si se va a llevar a cabo una exploración HBase de la nueva tabla, verías que la importación y la traducción de una tabla de base de datos relacional en MySQL directamente en HBase fue un éxito.
los customercontactinfo tabla de este ejemplo es bastante pequeña, pero imaginar el poder que ahora tiene, usando Sqoop y HBase, para moverse rápidamente tablas relacionales que pueden exceder la capacidad de su RDBMS o almacén de datos en HBase, donde la capacidad es prácticamente ilimitada y la escalabilidad es automática.
HBase (principal): 033: 0> Barrido 'customercontactinfo'ROWCOLUMN + CELL10000column = ContactInfo: contactinfo, timestamp = 1376773256317, valor = 1 Hadoop Lane, NY, 11111, [email protected]=CustomerName: CustomerName, timestamp = 1376772776684 , valor = John Timoteo Smith10000column = ProductNums: productnums, timestamp = 1376773551221, valor = B50010001column = ContactInfo: contactinfo, timestamp = 1376773256317, valor = 2 HBase Ave, CA, 2222210001column = CustomerName: CustomerName, timestamp = 1376772776684, valor = Bill Jones10001column = ProductNums: productnums, timestamp = 1376773551221, valor = A100, A200, A300, B400, B500, C500, C600, D70020000column = ContactInfo: contactinfo, timestamp = 1376773256317, valor = 1 Experto HBase Ave, CA, 2222220000column = CustomerName: CustomerName, fecha y hora = 1376772776684, valor = Jane Ann Doe20000column = ProductNums: productnums, timestamp = 1376773551221, valor = A100, A200, A30020001column = ContactInfo: contactinfo, timestamp = 1376773256317, valor = 1 piglatin Ave, CO, 3333320001column = CustomerName: CustomerName, timestamp = 1376772776684 , valor = Joe Developer20001column = ProductNums: productnums, timestamp = 1376773551221, valor = D70030000column = ContactInfo: contactinfo, timestamp = 1376773256317, valor = 1 Estadísticas Lane, MA, 3333330000column = CustomerName: CustomerName, timestamp = 1376772776684, valor = Datos Scientist30000column = ProductNums : productnums, timestamp = 1376773551221, valor = fila C5005 (s) en 0.1120 segundos
Importación de datos relacionales existentes a través Sqoop en tablas Colmena y HBase potencialmente puede permitir una amplia gama de nuevas y emocionantes flujos de trabajo de análisis de datos. Si esta función es de interés para usted, echa un vistazo a la documentación de Apache Sqoop por colmena y HBase argumentos y características de línea de comandos adicionales.