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>
posted @ 2018-12-12 16:28  shenjie2017  阅读(371)  评论(0编辑  收藏  举报