2016-07-12 53 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或更新我以防您需要帮助编写此操作。