HUE WorkFlow Schedule 调用Hive参数传递,外部参数传递,时间参数传递
?
目錄
WorkFlow傳靜態(tài)參數(shù)
Schedule 傳動(dòng)態(tài)參數(shù)
oozie常用的系統(tǒng)常量
- ?場(chǎng)景:HUE執(zhí)行任務(wù)需要從外部傳入?yún)?shù),不能在腳本寫(xiě)死,比較麻煩
WorkFlow傳靜態(tài)參數(shù)
?
?執(zhí)行的腳本代碼如下?
CREATE EXTERNAL TABLE ${hivevar:database}.${hivevar:tableName}${pt_tab}(key string ,comments_count int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ( "hbase.columns.mapping"=":key,fn:comments_count" ) TBLPROPERTIES("hbase.table.name" = "${hivevar:database}:${hivevar:tableName}${pt_tab}");在hue中添加的參數(shù)
tableName=artcile_tableNamedatebase=ods_temp腳本中調(diào)用方式為
${hivevar:tableName}${hivevar:ods_temp}Schedule 傳動(dòng)態(tài)參數(shù)
在WorkFlow中添加的參數(shù)pt_tab是從Schedule傳入的,
腳本中使用方式為
${pt_tab}注意: pt_tab 參數(shù)命名時(shí)不要使用數(shù)字開(kāi)頭的變量,所有Schedule無(wú)法識(shí)別、引用,要以字母開(kāi)頭或者下劃線開(kāi)頭
Schedule配置為
${coord:formatTime(coord:dateOffset(coord:nominalTime(), -7, 'DAY'), 'yyyyw')}pt_tab傳入調(diào)用時(shí)間的七天前所在的年周(如2019年第10周:201910)
?
問(wèn)題:為什么不使用hive中設(shè)置參數(shù)
答:之前設(shè)置過(guò)下面代碼配置,但是調(diào)用時(shí)無(wú)法當(dāng)作表名來(lái)使用,只能當(dāng)作條件來(lái)使用,比如(date='${zh.wk}')
set zh.wk= CONCAT(year(date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),7)) ,weekofyear(date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),7)));問(wèn)題:hivevar和hiveconf區(qū)別
答:hiveconf:hive相關(guān)配置,變量取值必須要使用hiveconf作為前綴參數(shù),具體格式如下:??????${hiveconf:key}??
hivevar:用戶自定義變量,取值可以不使用前綴hivevar,具體格式如下:
使用前綴:
???????${hivevar:key}
不使用前綴:
???????${key}
?
?
oozie常用的系統(tǒng)常量
| 常量表示形式 | 含義說(shuō)明 |
| ${coord:minutes(int n)} | 返回日期時(shí)間:從一開(kāi)始,周期執(zhí)行n分鐘 |
| ${coord:hours(int n)} | 返回日期時(shí)間:從一開(kāi)始,周期執(zhí)行n * 60分鐘 |
| ${coord:days(int n)} | 返回日期時(shí)間:從一開(kāi)始,周期執(zhí)行n * 24 * 60分鐘 |
| ${coord:months(int n)} | 返回日期時(shí)間:從一開(kāi)始,周期執(zhí)行n * M * 24 * 60分鐘(M表示一個(gè)月的天數(shù)) |
| ${coord:endOfDays(int n)} | 返回日期時(shí)間:從當(dāng)天的最晚時(shí)間(即下一天)開(kāi)始,周期執(zhí)行n * 24 * 60分鐘 |
| ${coord:endOfMonths(1)} | 返回日期時(shí)間:從當(dāng)月的最晚時(shí)間開(kāi)始(即下個(gè)月初),周期執(zhí)行n * 24 * 60分鐘 |
| ${coord:current(int n)} | 返回日期時(shí)間:從一個(gè)Coordinator動(dòng)作(Action)創(chuàng)建時(shí)開(kāi)始計(jì)算,第n個(gè)dataset實(shí)例執(zhí)行時(shí)間 |
| ${coord:dataIn(String name)} | 在輸入事件(input-events)中,解析dataset實(shí)例包含的所有的URI |
| ${coord:dataOut(String name)} | 在輸出事件(output-events)中,解析dataset實(shí)例包含的所有的URI |
| ${coord:offset(int n, String timeUnit)} | 表示時(shí)間偏移,如果一個(gè)Coordinator動(dòng)作創(chuàng)建時(shí)間為T(mén),n為正數(shù)表示向時(shí)刻T之后偏移,n為負(fù)數(shù)向向時(shí)刻T之前偏移,timeUnit表示時(shí)間單位(選項(xiàng)有MINUTE、HOUR、DAY、MONTH、YEAR) |
| ${coord:hoursInDay(int n)} | 指定的第n天的小時(shí)數(shù),n>0表示向后數(shù)第n天的小時(shí)數(shù),n=0表示當(dāng)天小時(shí)數(shù),n<0表示向前數(shù)第n天的小時(shí)數(shù) |
| ${coord:daysInMonth(int n)} | 指定的第n個(gè)月的天數(shù),n>0表示向后數(shù)第n個(gè)月的天數(shù),n=0表示當(dāng)月的天數(shù),n<0表示向前數(shù)第n個(gè)月的天數(shù) |
| ${coord:tzOffset()} | ataset對(duì)應(yīng)的時(shí)區(qū)與Coordinator Job的時(shí)區(qū)所差的分鐘數(shù) |
| ${coord:latest(int n)} | 最近以來(lái),當(dāng)前可以用的第n個(gè)dataset實(shí)例 |
| ${coord:future(int n, int limit)} | 當(dāng)前時(shí)間之后的dataset實(shí)例,n>=0,當(dāng)n=0時(shí)表示立即可用的dataset實(shí)例,limit表示dataset實(shí)例的個(gè)數(shù) |
| ${coord:nominalTime()} | nominal時(shí)間等于Coordinator Job啟動(dòng)時(shí)間,加上多個(gè)Coordinator Job的頻率所得到的日期時(shí)間。例如:start=”2009-01-01T24:00Z”,end=”2009-12-31T24:00Z”,frequency=”${coord:days(1)}”,frequency=”${coord:days(1)},則nominal時(shí)間為:2009-01-02T00:00Z、2009-01-03T00:00Z、2009-01-04T00:00Z、…、2010-01-01T00:00Z |
| ${coord:actualTime()} | Coordinator動(dòng)作的實(shí)際創(chuàng)建時(shí)間。例如:start=”2011-05-01T24:00Z”,end=”2011-12-31T24:00Z”,frequency=”${coord:days(1)}”,則實(shí)際時(shí)間為:2011-05-01,2011-05-02,2011-05-03,…,2011-12-31 |
| ${coord:user()} | 啟動(dòng)當(dāng)前Coordinator Job的用戶名稱 |
| ${coord:dateOffset(String baseDate, int instance, String timeUnit)} | 計(jì)算新的日期時(shí)間的公式:newDate = baseDate + instance * timeUnit,如:baseDate=’2009-01-01T00:00Z’,instance=’2′,timeUnit=’MONTH’,則計(jì)算得到的新的日期時(shí)間為’2009-03-01T00:00Z’。 |
| ${coord:formatTime(String timeStamp, String format)} | 格式化時(shí)間字符串,format指定模式 |
總結(jié)
以上是生活随笔為你收集整理的HUE WorkFlow Schedule 调用Hive参数传递,外部参数传递,时间参数传递的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux平台C++开发基本知识
- 下一篇: 在MFC程序中增加控制台窗口