Foro Formación Hadoop

 
 
Imagen de Fernando Agudo
Gestión de errores: Sqoop y Hive
de Fernando Agudo - miércoles, 29 de marzo de 2017, 17:26
 

Gestión de errores:

-   Sqoop:

  • Sqoop Importación Completa: Para realizar la importación de una tabla a un directorio, por ejemplo en /tmp/orders/, cuando se inicia la importación Sqoop genera un directorio temporal con los resultados de las tareas map que van finalizando (/tmp/orders/_temporary/). Al finalizar la importación con éxito, Sqoop mueve los datos temporales al directorio principal. En caso de error, elimina TODOS los ficheros temporales, por lo que no se podría ejecutar una importación a partir del punto de fallo.

 

  • Sqoop Importación Incremental: La manera de realizar la importación es similar a la importación completa. En este caso genera un directorio temporal en el home del usuario que ejecuta la importación (/user/cloudera/_sqoop/…./_temporary/). Si la ejecución finaliza correctamente mueve los datos al directorio final. En caso de error elimina TODOS los ficheros temporales. No es posible iniciar la importación desde el punto de fallo.

 

  • Sqoop Exportación: Sqoop realiza la exportación con una aplicación MapReduce. La aplicación se divide en varias tareas map. Cada una de ellas realiza la exportación a la base de datos relacional por separado. Cuando alguna de las tareas finaliza, se realiza el commit de los datos pertenecientes a dicha tarea. En caso de error del MapReduce, en la base de datos de destino tendremos los datos de las tareas map que hayan finalizado correctamente. Para poder realizar de nuevo la carga, habría que estudiar manualmente cuales de las tareas se ha completado con éxito para no volver a subir los mismos datos.

Si el error se produce cuando se está realizando un commit, la operación no se consolida (rollback) por lo que no tendremos datos "a medias" de alguna tarea map en concreto.

-  Hive:

  • Error en la ejecución del volcado de resultados a la tabla final: Si se realiza un select insert Hive almacena los resultados en un directorio temporal (parecido al caso de Sqoop) y cuando finaliza el proceso los mueve al directorio (tabla de hive) correspondiente. Si se produce un error no mueve nada y elimina los directorios temporales.