oozie使用shell刷新impala元数据
注意
如果不加PYTHON_EGG_CACHE环境变量会导致执行失败,impala-shell本身可以正常执行,估计是oozie调用shell时会使用到python的一个缓存文件,这里加上export PYTHON_EGG_CACHE=/tmp/python-eggs
即可成功调用服务
代码
flush-impala-metadata.sh
mkdir -p /tmp/python-eggs
export PYTHON_EGG_CACHE=/tmp/python-eggs
impala-shell -i node2 -q 'INVALIDATE METADATA'
job.properties
nameNode=hdfs://node1:8020
jobTracker=node1:8032
oozieAppsRoot=user/oozie/apps/flush-impala-demo
oozie.use.system.libpath=true
oozie.wf.application.path=${nameNode}/${oozieAppsRoot}
ENDING_SHELL=flush-impala-metadata.sh
workflow.xml
<?xml version="1.0" encoding="UTF-8"?>
<workflow-app xmlns="uri:oozie:workflow:0.5" name="wf-${projectName}-${moduleName}">
<start to="dataclean-joining" to="flush-dataclean-metadata"/>
<action name="flush-dataclean-metadata">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<exec>${ENDING_SHELL}</exec>
<file>${ENDING_SHELL}#${ENDING_SHELL}</file>
<capture-output/>
</shell>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Hive failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>