2016-07-12 82 views
0

Oozie的協調配置是否有可能配置Oozie的協調,可以觸發一個工作流程處理每一個組文件在這些條件下:多個文件扶養

集團是由我下的簡單定義文件的集合父目錄。 每個xx將一組文件加載到其對應的HDFS目錄中。 每組文件都代表來自特定數據庫的表格。 每組文件都包含在它們自己的父HDFS文件夾中,例如Database1,Database2。

文件名是每個父/組文件夾名稱內的所有不同名稱。 我想oozie做什麼(即可能): 掃描該特定父目錄中的所有文件都存在,每個文件名稱將會不同,並且典型地以這些分隔文件所代表的表格命名。

如果所有文件都存在(從Oozie中定義的模板),然後我exexute工作流程。

如何配置oozie,我的猜測是,它可能不會靈活處理這個具體的請求,但我很想知道你們的想法。

我的雙手在將文件夾/文件結構更改爲HDFS方面存在聯繫。 我需要知道正確的問題才能問問負責生成傳入文件的人。

任何洞察/經驗,將不勝感激!

回答

0

從您的查詢看來,您似乎沒有以某種可能用於觸發協調器的日期模式結尾的目錄路徑。

您可以使用開關功能和外殼/ java的動作組合來實現這一點 -

1>讓您的協調員頻率啓動工作非常低的 - 說5分鐘。

2>正如你所提到的,你有表格模板,我假設你已經知道預期在特定目錄中的表格名稱。編寫簡單的shell或java操作遞歸檢查這些目錄,如果所有表存在,則返回true。

3>工作流程的使用開關功能來進一步進行是否所有表存在或退出: -

<decision name = "table_exists"> 
    <switch> 
     <case to = "proceed_further">${wf:actionData('check_directory')['exists'] eq 'true'} 
     </case> 
    <default to = "end" /> 
    </switch> 
</decision> 

注意,以上check_directory是可以在以適當的方式返回值的任何語言來編寫操作。請檢查ooziedoc或更新我以防您需要幫助編寫此操作。