更新时间:2023-04-18 GMT+08:00
分享

规则

修改除job.properties之外的配置文件,都需要重新上传HDFS

在工作流运行过程中,除了job.properties之外,其他配置文件均从HDFS指定目录中读取,若不同步更新HDFS中的文件内容,则修改无法生效。

每个工作流的开始节点和结束节点有且仅有一个

根据语法要求, 每个工作流的开始和结束节点均是唯一的,针对可能出现的多种异常情况可以设置多个kill节点来处理。

在同一个工作流中, 每个节点只能遍历一次

在工作流中不存在环形结构, 每个节点能且仅能被遍历一次。只有当前一个节点执行结束,才能进入下一个节点。

流程选择分支,必须保留一个默认的处理分支

选择节点decision,必须保留一个默认的处理分支,以避免工作流进入不可控的错误状态,导致流程执行不可控。

正确示例:

<decision name="[NODE-NAME]">
     <switch>
         <case to="[NODE_NAME]">[PREDICATE]</case>
         ...
         <case to="[NODE_NAME]">[PREDICATE]</case>
         <default to="[NODE_NAME]"/>
     </switch>
 </decision>

fork和join节点,必须成对出现

正确示例:

<workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.2">
     ...
     <fork name="[FORK-NODE-NAME]">
         <path start="[NODE-NAME]" />
         ...
         <path start="[NODE-NAME]" />
     </fork>
     ...
     <join name="[JOIN-NODE-NAME]" to="[NODE-NAME]" />
     ...
 </workflow-app>

标签顺序不可变更

标签的放置位置在Schema中做了严格的约束, 非必须的标签可省略不写, 但放置顺序不可更改。不同的Schema指定的放置顺序可能会有所差异。

正确示例:

<workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.2">
     ...
     <action name="[NODE-NAME]">
         <map-reduce>
             <resource-manager>[RESOURCE-MANAGER]</resource-manager>
             <name-node>[NAME-NODE]</name-node>
             <prepare>
                 <delete path="[PATH]"/>
                 ...
                 <mkdir path="[PATH]"/> 
                ...
             </prepare>
             ...
             <job-xml>[JOB-XML-FILE]</job-xml>
             <configuration>
                 <property>
                     <name>[PROPERTY-NAME]</name>
                     <value>[PROPERTY-VALUE]</value>
                 </property>
                 ...
             </configuration>
             <file>[FILE-PATH]</file>
             ...
             <archive>[FILE-PATH]</archive>
             ...
         </map-reduce>
        <ok to="[NODE-NAME]"/>
         <error to="[NODE-NAME]"/>
     </action>
     ...
 </workflow-app> 

Hive SQL语句以";"结尾, 使用"--"进行单行注释

正确示例:

create table A(id int, name string, dt string); 
insert into A values(1, "a1", "20150625"); 
select * from A; 
--drop table A; 
分享:

    相关文档

    相关产品