规则
修改除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;