hive - trabajar - Flujo de trabajo de Oozie: tabla de colmenas no encontrada pero existe
como trabajar con abejas (2)
Obtuve un flujo de trabajo nuevo, que se ejecuta en un clúster CDH4 de 4 máquinas (un maestro para todo, tres trabajadores "tontos"). El metastore de hive se ejecuta en el maestro usando mysql (el controlador está presente), el servidor de oozie también se ejecuta en el maestro usando mysql también. Utilizando la interfaz web puedo importar y consultar la sección como se espera, pero cuando realizo las mismas consultas dentro de un flujo de trabajo oozie falla. Incluso la adición de "IF EXISTS" lleva al siguiente error. Traté de agregar la información de conexión como propiedades al trabajo de la colmena sin ningún éxito.
¿Alguien puede darme una pista? ¿Yo me perdí algo? ¿Se necesita más información?
Este es el resultado del registro del trabajo:
Script [drop.sql] content:
------------------------
DROP TABLE IF EXISTS performance_log;
------------------------
Hive command arguments :
-f
drop.sql
=================================================================
>>> Invoking Hive command line now >>>
Intercepting System.exit(10001)
<<< Invocation of Main class completed <<<
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.HiveMain], exit code [10001]
Oozie Launcher failed, finishing Hadoop job gracefully
Y este es el mensaje de error:
FAILED: SemanticException [Error 10001]: Table not found performance_log
Intercepting System.exit(10001)
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.HiveMain], exit code [10001]
He experimentado el mismo problema, aparte de mencionar la solución sobre la especificación de hive-site.xml correctamente. Yo recomendaría seguir cosas también.
- compruebe si tiene el jar conector mysql (en caso de que esté usando mysql como metastore) está disponible en classpath.
- en el caso de acciones de colmena, simplemente verifique si no está agregando colmenas múltiples varias veces. por ejemplo, ya está presente en oozie share lib y también ha copiado en workflow / lib
El problema es que otros nodos no saben dónde está tu MYSQL, por lo que obtienes la tabla de errores no encontrada.
Tienes que hacer 2 cosas
- Copie hive-site.xml en el directorio de flujo de trabajo oozie
- En tu acción Hive dile a oozie que use mi hive-site.xml
Algo como abajo
action name="hive-node"> <hive xmlns="uri:oozie:hive-action:0.2"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <job-xml>hive-site.xml</job-xml>
Esto debería funcionar.
Gracias