oozie调用sub-workflow串联工作流


注意

  1. 这里调度配置文件需要全部上传到hdfs,这个路径通过oozieAppsRoot指定
  2. sql文件需要全部上传的hdfs,这个路径通过oozieScriptsRoot指定

配置文件

job.properties

nameNode=hdfs://node1:8020
jobTracker=node1:8032
thriftAddress=thrift://node1:9083

queueName=default

hiveSiteXml=${nameNode}/user/hive/conf/hive-site.xml

moduleName=dataclean
projectName=pv

configRoot=${nameNode}/user/apps/${projectName}/dataclean-script

oozieAppsRoot=${nameNode}/user/apps/dataclean/${projectName}

oozie.use.system.libpath=true

oozie.wf.application.path=${oozieAppsRoot}

oozieScriptsRoot=${configRoot}/dm1

projectCostScriptName=BUILD_DM1_PV_PROJECT_COST
projectDeviceScriptName=BUILD_DM1_PV_PROJECT_DEVICE

workflow.xml

<?xml version="1.0" encoding="UTF-8"?>

<workflow-app xmlns="uri:oozie:workflow:0.5" name="wf-${moduleName}-${projectName}">
    <start to="dataclean-forking"/>

    <fork name="dataclean-forking">
        <path start="BUILD_DM1_PV_PROJECT_COST"/>
        <path start="BUILD_DM1_PV_PROJECT_DEVICE"/>
    </fork>
    
    <join name="dataclean-joining" to="end"/>

    
    <action name="BUILD_DM1_PV_PROJECT_COST">
        <sub-workflow>
            <app-path>${oozieAppsRoot}/${projectCostScriptName}</app-path>
              <propagate-configuration/>
        </sub-workflow>
        <ok to="dataclean-joining"/>
        <error to="fail"/>
    </action>
    
    <action name="BUILD_DM1_PV_PROJECT_DEVICE">
        <sub-workflow>
            <app-path>${oozieAppsRoot}/${projectDeviceScriptName}</app-path>
              <propagate-configuration/>
        </sub-workflow>
        <ok to="dataclean-joining"/>
        <error to="fail"/>
    </action>
    
    <kill name="fail">
        <message>Hive failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name="end"/>
</workflow-app>

BUILD_DM1_PV_PROJECT_COST/job.properties

oozie.use.system.libpath=true

oozie.wf.application.path=${oozieAppsRoot}/${projectCostScriptName}

BUILD_DM1_PV_PROJECT_COST/workflow.xml

<?xml version="1.0" encoding="UTF-8"?>

<workflow-app xmlns="uri:oozie:workflow:0.5" name="wf-${moduleName}-${projectName}-${projectCostScriptName}">
    <start to="START-BUILD_DM1_PV_PROJECT_COST"/>

    <action name="START-BUILD_DM1_PV_PROJECT_COST">
        <hive xmlns="uri:oozie:hive-action:0.5">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <job-xml>${hiveSiteXml}</job-xml>
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
                <property>
                    <name>hive.metastore.uris</name>
                    <value>${thriftAddress}</value>
                </property>
            </configuration>
            <script>${oozieScriptsRoot}/${projectCostScriptName}.sql</script>
        </hive>
        <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>

BUILD_DM1_PV_PROJECT_DEVICE/job.properties

oozie.use.system.libpath=true

oozie.wf.application.path=${oozieAppsRoot}/${projectDeviceScriptName}

BUILD_DM1_PV_PROJECT_DEVICE/workflow.xml

<?xml version="1.0" encoding="UTF-8"?>

<workflow-app xmlns="uri:oozie:workflow:0.5" name="wf-${moduleName}-${projectName}-${projectDeviceScriptName}">
    <start to="START-BUILD_DM1_PV_PROJECT_DEVICE"/>

    <action name="START-BUILD_DM1_PV_PROJECT_DEVICE">
        <hive xmlns="uri:oozie:hive-action:0.5">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <job-xml>${hiveSiteXml}</job-xml>
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
                <property>
                    <name>hive.metastore.uris</name>
                    <value>${thriftAddress}</value>
                </property>
            </configuration>
            <script>${oozieScriptsRoot}/${projectDeviceScriptName}.sql</script>
        </hive>
        <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>
优质内容筛选与推荐>>
1、js汉语转拼音(全拼、首字母、拼音首字母)
2、linux中的vi命令
3、C#基础-文件夹复制与删除
4、JSON resource 启示
5、mac使用技巧之截图


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号