【问题标题】:How to make oozie job get triggered when a success file is present in aws S3当aws S3中存在成功文件时如何触发oozie作业
【发布时间】:2017-04-17 06:23:29
【问题描述】:

我正在与 oozie 合作执行 HDFS 数据传输操作,要求是只要 aws S3 存储桶中有可用数据,就触发 oozie 工作流作业。我正在考虑在我的 S3 存储桶中保留一个成功文件和数据文件,但我不确定如何让 oozie 协调器定期从 S3 读取以检查成功文件是否可用。 如果有人可以提供相同的示例 coordinator.xml,那就太好了。

【问题讨论】:

  • 您可以调用 oozie REST API 来启动作业,从将在 s3 上传事件时调用的 AWS Lambda 触发器
  • 如何为当前基于时间的协调器运行的作业创建一个 oozie REST api?

标签: xml hadoop amazon-s3 oozie oozie-coordinator


【解决方案1】:

你可以试试下面的:-

<coordinator-app name="FILE_CHECK" frequency="1440" start="2017-04-17T00:00Z" end="2018-04-17T00:00Z" timezone="UTC" xmlns="uri:oozie:coordinator:0.1">

<datasets>
      <dataset name="datafile" frequency="60" initial-instance="2017-04-16T00:00Z" timezone="UTC">
         <uri-template>s3n://mybucket/a/b/${YEAR}/${MONTH}/${DAY}</uri-template>
         <done-flag><flag to check></done-flag>
      </dataset>
   </datasets>
   <input-events>
      <data-in name="coorddatafile" dataset="datafile">
          <instance>${coord:current(0)}</start-instance>
      </data-in>
   </input-events>
   <action>
      <workflow>
         <app-path><workflow_path></app-path>
          <configuration>
                <property>
                    <name>fileDirectory</name>
                    <value>${coord:dataIn('coorddatafile')}</value>
                </property>
          </configuration>
      </workflow>
   </action>     
</coordinator-app>

您也可以参考:-https://community.cloudera.com/t5/Batch-Processing-and-Workflow/Getting-Oozie-Coordinator-datasets-working-with-S3-after-a-lost/td-p/27233

【讨论】:

  • 它将检查标志是否存在,然后触发作业。
  • 标志的内容是什么,在某些示例中它是一个文件(.bat 文件)。
  • 在许多情况下,它是一个 _SUCCESS 文件(也可以是 0 字节),它是由另一个 hadoop 进程在之前成功完成作业时创建的。 标签检查文件夹中文件的存在。内容无关紧要。
  • 例如:success.bat 那么,当这个文件存在时,是否会触发作业?另外,另一个疑问是 uri-template 的意义。在我看到的大多数示例中,uri-template 以 $year/$month/$day 结尾的目录格式存在。 1.) 它不能是一个简单的文件,例如:s3://mybucket/my_file.csv? 2.)如果我只需要一个触发器作为s3中的成功文件(success.bat),这种情况下uri-template可以为空并且done-flag可以有完整的s3文件地址吗?
  • 是的,你是绝对正确的,当文件存在时,触发工作。可以使用许多示例,因为它们在不同时间轮询特定的 HDFS 目录。每天/小时它应该轮询文件的特定小时/天目录。 基本上是 oozie 轮询文件是否存在的位置,因此空字符串无济于事。例如:- s3://mybucketmy_file.csv
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多