Preparando una tabla
Primero hay que tener una tabla preparada para la recepción de los datos con una estructura igual al de los datos que se van a recibir. Los datos que vamos a usar son los mismos que emitimos en el tutorial anterior:
1,mario
2,caster
Vamos a crear una tabla en mysql que tenga un int en la primera columna y un varchar(50) en la segunda:
CREATE TABLE `sqoop-import`( id int NOT NULL, name varchar(50) NOT NULL, PRIMARY KEY (id) );
Ya tenemos todo preparado con los archivos dentro de la carpeta "/user/mariocaster/sqoop-table/part-m-*". Para importarlos el comando a usar es el siguiente:
sqoop export --connect jdbc:mysql://localhost/sqoop-test --export-dir /user/MaC/sqoop-table --table sqoop-import --username root --password pass -m 1 --input-fields-terminated-by ',' --direct
- El comando que tenemos que usar es sqoop import para importar bases de datos
- Se le pasa el argumento --connect jdbc:mysql://[host]/[bbdd] para indicarle el host y la bbdd de la que queramos importar una tabla
- Ahora le indicamos el directorio del HDFS que vamos a exportar a la BBDD, en este caso con el argumento --export-dir /[ruta]
- Después le indicamos el nombre de la tabla a donde vamos a importar los datos, la hemos llamado "sqoop-import". El argumento a usar es: -table sqoop-import
- En el caso de la BBDD que tenemos localmente, hay que usar unas credenciales para permitir el acceso. Se las pasamos con: --username [user] y --password [pass]
- Con -m 1 le indicamos que solamente queremos usar un mapper para realizar la exportación
- --input-fields-terminated-by ',' es usado para indicarle al script que los campos de los archivos del HDFS están separados por ',' (coma)
- Activado el "modo directo" con --direct para MySQL que nos permite obtener unas operaciones mas rápidas haciendo uso de la herramienta mysqlimport
Podemos ver nuestros conocidos logs de MapReduce y es que, Sqoop, usa MapReduce en segundo plano para ejecutar sus consultas (de una manera similar a Hive y Pig)
Una vez ejecutada la importación, vamos a usar un prompt the mysql para ver que datos se han cargado dentro de la tabla.
mysql>USE `sqoop-test`; mysql>SELECT * FROM `sqoop-import`; +----+--------+ | id | name | +----+--------+ | 1 | mario | | 2 | caster | +----+--------+ 2 rows in set (0.00 sec)
Con esto ya tenemos, los datos del HDFS de vuelta en la BBDD de MySQL. Espero que os haya gustado el tutorial.
0 comentarios:
Publicar un comentario