配置文件

工作流

示例

配置文件:

digraph wordcount {
    dummy -> step1
    dummy -> step2
    step1 [
          name="step1"
          type="hadoop"
          vars="$date=${date:YYYYMMDD}"
          input="/tmp/hpipe/examples/wordcount/input/part-*"
          output="/tmp/hpipe/examples/wordcount/output/${bizdate}/step1"
          mapper="cat"
          reducer="wc -l"
          mapred.reduce.tasks=1
          test.custom.val="today is ${date}, yestoday is ${bizdate}, and yestoday is ${bizdate}"
          ]
    step2 [
          name="step2"
          type="hadoop"
          vars="$date=$bizdate"
          input="/tmp/hpipe/examples/wordcount/input/part-*"
          output="/tmp/hpipe/examples/wordcount/output/${bizdate}/step2"
          mapper="cat"
          reducer="wc -l"
          ]
    dummy [
          name="dummy"
          type="dummy"
          vars="$bizdate=${date:YYYYMMDD}+2*$day"
          ]
}

任务节点

公共配置

name

节点名。

type

节点类型。

output

节点输出路径。可以使用变量,例如:output="/tmp/example/${bizdate}/"

vars

定义变量

语法如下:

  • 分号分割的若干赋值语句

  • 左值

    $开头的变量名

  • 右值

    • int整数

    • 字符串

      单引号扩起来的字符串:$name='test'

    • 其它变量

      $号开头的变量名:$date=$bizdate

    • 时间变量扩展

      按照格式获取时间:$date=${date:YYYYMMDD}

使用变量

在其它配置项里面使用变量,如 outputscript 等里面。

例如:

  • output="/tmp/${bizdate}"
  • script="test.sh ${bizdate}"

nonstrict

不要求前置条件全成功。例如:nonstrict="true"

节点类型

  • hadoop
  • hive
  • script

hadoop

hive

hql

HiveQL命令。

script

HiveQL文件。

option

Hive选项,例如: hive.exec.dynamic.partition.mode=nonstrict

script

interpreter

解释器,例如: perlbash 。可以只写出在系统变量 $PATH 内命令,也可以写完整的路径。

script

Script文件。

内置变量

日期时间

gmtdate

脚本运行当前的日期。

bizdate

脚本运行前一天的日期。可以在启动hpipe的时候用 --bizdate 指定日期,这个选项会同时更新 gmtdate

job_report

所有任务运行报告。

节点间依赖

大多数情况下,只使用``->``即可定义依赖。但某些特殊功能需要单独定义。

nonstrict

非强制依赖。默认依赖,若上游节点失败,不会继续执行,非强制依赖表示可以无视上游节点状态,继续执行。

具体例子可以参考 examples/email

digraph email {
    dummy -> script
    script -> mailitsh [nonstrict="true"]
    mailitsh -> mailitpl
    (略)
}