gpt4 book ai didi

hadoop - oozie协调器输入事件不起作用

转载 作者:行者123 更新时间:2023-12-02 21:35:51 24 4
gpt4 key购买 nike

我有三个协调员A,B和C。

B和C的协调器取决于A的输出。也就是说,如果A的输出准备就绪,则B和C的协调器将运行。

因此,我使用输入事件来控制这种依赖性。

协调器B和C的结构看起来像

<coordinator-app name="B" frequency="1440" start=${start} end=${end} timezone="UTC" xmlns="uri:oozie:coordinator:0.1">
<datasets>
<dataset name="input1" frequency="1440" initial-instance=${start} timezone="UTC">
<uri-template>hdfs://localhost:9000/tmp/revenue_feed/${YEAR}/${MONTH}/${DAY}</uri-template>
</dataset>
</datasets>
<input-events>
<data-in name="coordInput1" dataset="input1">
<instance>${coord:current(0)}</instance>
</data-in>
</input-events>
<action>
<workflow>
<app-path>hdfs://localhost:9000/B/workflows</app-path>
</workflow>
</action>
</coordinator-app>

因此,如果创建了 hdfs://localhost:9000/tmp/revenue_feed/${YEAR}/${MONTH}/${DAY}/_SUCCESS,则将触发协调器B和C以运行其工作流程。

A的协调器如下所示:
<coordinator-app name="B" frequency="1440" start=${start} end=${end} timezone="UTC" xmlns="uri:oozie:coordinator:0.1">
<action>
<workflow>
<app-path>hdfs://localhost:9000/A/workflows</app-path>
</workflow>
</action>
</coordinator-app>

${start}${end}与B和C相同。

A的工作流程将创建 hdfs://localhost:9000/tmp/revenue_feed/${YEAR}/${MONTH}/${DAY}/_SUCCESS
但是,B和C的协调人仍在等待 hdfs://localhost:9000/tmp/revenue_feed/${YEAR}/${MONTH}/${DAY}/_SUCCESS
即使我使用A的协调器的输出事件,但B和C的工作流仍需要创建的输入数据集。
<coordinator-app name="A" frequency="1440" start=${start} end=${end} timezone="UTC" xmlns="uri:oozie:coordinator:0.1">
<datasets>
<dataset name="output1" frequency="1440" initial-instance=${start} timezone="UTC">
<uri-template>hdfs://localhost:9000/tmp/revenue_feed/${YEAR}/${MONTH}/${DAY}</uri-template>
</dataset>
</datasets>

<output-events>
<data-out name="coordOutput1" dataset="output1">
<instance>${coord:current(0)}</instance>
</data-out>
</output-events>
<action>
<workflow>
<app-path>hdfs://localhost:9000/A/workflows</app-path>
</workflow>
</action>
</coordinator-app>

但是,如果我在没有协调员的情况下提交A的工作流,则B和C的工作流将按预期触发。

我不确定我的A协调员中是否缺少某些内容。

谢谢!

最佳答案

原因是您未指定完成标志,所以oozie使用默认值:_success

done-flag: The done file for the data set. If done-flag is not specified, then Oozie configures Hadoop to create a _SUCCESS file in the output directory. If the done flag is set to empty, then Coordinator looks for the existence of the directory itself.



您应该添加一个空
<done-flag></done-flag>

到数据集。

关于hadoop - oozie协调器输入事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32401217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com