用Oozie coordinator处理不规则的定时数据
Dealing with irregular timed data with Oozie coordinator
我有多个数据源需要在 oozie 协调工作流中加以考虑。数据集是不定期生成的,也就是有几天数据可能出不来。例如:
data_set1:
ds1-1 - Sept-1-2015 - Data available
ds1-2 - Sept-2-2015 - No Data
ds1-3 - Sept-3-2015 - No Data
ds1-4 - Sept-4-2015 - Data available
ds1-5 - Sept-5-2015 - Data available
ds1-6 - Sept-6-2015 - No Data
ds1-7 - Sept-7-2015 - Data available.
Data_set2
ds2-1 - Sept-1-2015 - Data available
ds2-2 - Sept-2-2015 - Data available
ds2-3 - Sept-3-2015 - Data available
ds2-4 - Sept-4-2015 - No Data
ds2-5 - Sept-5-2015 - Data available
ds2-6 - Sept-6-2015 - Data available.
ds2-7 - Sept-7-2015 - No Data
我的 oozie 协调员工作安排在 运行 每天。但是,由于数据集不一定可用,我必须选择可用的和最新的数据集。
对于上面给出的数据集,我希望每个 运行:
都考虑以下数据集
Sept-1-2015 - ds1-1, ds2-1
Sept-2-2015 - ds1-1, ds2-2 #since no ds1 available for day2.
Sept-3-2015 - ds1-1, ds2-3 #since no ds1 available for day3.
Sept-4-2015 - ds1-4, ds2-3 #since no ds2 available for day4.
Sept-5-2015 - ds1-5, ds2-5
Sept-6-2015 - ds1-5, ds2-6 #since no ds1 available for day6
Sept-7-2015 - ds1-7, ds2-6 #since no ds2 available for day7.
有没有什么方法可以使用可用的 Oozie 构造来实现这一点?
如果你想要最新的可用数据,你应该使用coord:latest EL 函数。
基本上,coord:latest
意味着,使用您能找到的最后可用数据。
如果你想可以使用 coord:latest(n)
这意味着
${coord:latest(int n)} represents the nth latest currently available
instance of a synchronous dataset.
对于您的情况,请使用以下示例:
<data-in name="input" dataset="logs">
<instance>${coord:latest(0)}</instance>
</data-in>
我有多个数据源需要在 oozie 协调工作流中加以考虑。数据集是不定期生成的,也就是有几天数据可能出不来。例如:
data_set1:
ds1-1 - Sept-1-2015 - Data available
ds1-2 - Sept-2-2015 - No Data
ds1-3 - Sept-3-2015 - No Data
ds1-4 - Sept-4-2015 - Data available
ds1-5 - Sept-5-2015 - Data available
ds1-6 - Sept-6-2015 - No Data
ds1-7 - Sept-7-2015 - Data available.
Data_set2
ds2-1 - Sept-1-2015 - Data available
ds2-2 - Sept-2-2015 - Data available
ds2-3 - Sept-3-2015 - Data available
ds2-4 - Sept-4-2015 - No Data
ds2-5 - Sept-5-2015 - Data available
ds2-6 - Sept-6-2015 - Data available.
ds2-7 - Sept-7-2015 - No Data
我的 oozie 协调员工作安排在 运行 每天。但是,由于数据集不一定可用,我必须选择可用的和最新的数据集。 对于上面给出的数据集,我希望每个 运行:
都考虑以下数据集 Sept-1-2015 - ds1-1, ds2-1
Sept-2-2015 - ds1-1, ds2-2 #since no ds1 available for day2.
Sept-3-2015 - ds1-1, ds2-3 #since no ds1 available for day3.
Sept-4-2015 - ds1-4, ds2-3 #since no ds2 available for day4.
Sept-5-2015 - ds1-5, ds2-5
Sept-6-2015 - ds1-5, ds2-6 #since no ds1 available for day6
Sept-7-2015 - ds1-7, ds2-6 #since no ds2 available for day7.
有没有什么方法可以使用可用的 Oozie 构造来实现这一点?
如果你想要最新的可用数据,你应该使用coord:latest EL 函数。
基本上,coord:latest
意味着,使用您能找到的最后可用数据。
如果你想可以使用 coord:latest(n)
这意味着
${coord:latest(int n)} represents the nth latest currently available instance of a synchronous dataset.
对于您的情况,请使用以下示例:
<data-in name="input" dataset="logs">
<instance>${coord:latest(0)}</instance>
</data-in>