Blog
Importa y exporta datos con Sqoop
Sqoop es una herramienta para transferir datos entre bases de datos relacionales y Hadoop (HDFS). La herramienta utiliza MapReduce para realizas dichas operaciones, por lo que consigue aprovechar el entorno distribuido de nuestro cluster Hadoop obteniendo un rendimiento óptimo.
Puede ver la documentación en la web oficial de apache: Guía de usuario
A continuación les indicamos un resumen de las sentencias más utilizadas de esta herramienta (instrucciones de línea de comandos):
Listar herramientas de Sqoop:
sqoop help
Sintaxis de un comando básico:
sqoop <tool-name> <options>
Listar de todas las tablas de un DB:
sqoop list-tables \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd>
Consulta sobre una base de datos:
sqoop eval \ --query "<query>" \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd>
Importar todas las tablas de un DB:
sqoop import-all-tables \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd>
Importar todas las tablas en un Warehouse:
sqoop import-all-tables \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ --warehouse-dir <hdfsdir>
Importar una única tabla:
sqoop import --table <table> \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd>
Importar columnas de una tabla:
sqoop import --table <table> \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ --columns "<col1>,<col2>,..,<colN>"
Importar los datos de una tabla que cumplan condiciones:
sqoop import --table <table> \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ --where "<conditions>"
Importar tabla a un directorio distinto:
sqoop import --table <table> \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ --target-dir <dir>
Importar tabla con distinto separador (,):
sqoop import --table <table> \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ --fields-terminated-by "<symb>"
Importar tabla en formato comprimido (formato Gzip):
sqoop import --table <table> \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ -z
Importar tabla comprimida (formato Snappy):
sqoop import --table <table> \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ --compression-codec org.apache.hadoop.io.compress.SnappyCodec
Importar tabla en formato Parquetfile:
sqoop import --table <table> \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ --as-parquetfile
Importar tabla en formato Sequencefile:
sqoop import --table <table> \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ --as-sequencefile
Importar tabla en formato Avro:
sqoop import --table <table> \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ --as-avrodatafile
Importar tabla incrementalmente
sqoop import --table <table> \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ --incremental append \ --check-column <column-name> \ --last-value <value>
Importar tabla manejando valores nulos:
sqoop import --table <table> \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ --null-string "\\N" --null-non-string "\\N"
Importar resultado de una query:
sqoop import \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ --target-dir <dir> \ --split-by <primarykey> \ --query '<query>'
Sugerir paralelizar importación:
sqoop import --table <table> \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ -m <number>
Exportar tabla a DB (la tabla debe crearse anteriormente):
sqoop export --table <table> \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ --export-dir <dir> \ --update-mode <allowinsert|updateonly>
Exportar tabla a DB manejando valores nulos:
sqoop export --table <table> \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ --export-dir <dir> \ --update-mode <allowinsert|updateonly> \ --null-string "\\N" --null-non-string "\\N"
Crear un Job de Sqoop:
sqoop job --create -- import --table <table> \ --connect jdbc:mysql://<host>/<db> \ --username <usr> --password <pwd> \ --where "<conditions>"
Listar jobs de Sqoop:
sqoop job --list
Ejecutar un job de Sqoop
sqoop job --exec <nombre>