首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在oozie协调器中使用一天的旧数据集

如何在oozie协调器中使用一天的旧数据集
EN

Stack Overflow用户
提问于 2015-09-16 03:53:48
回答 1查看 1.5K关注 0票数 1

我正在寻找实现以下目标的正确途径:

场景:

  1. 连接器正在输入数据,并在hdfs中的路径/data/2015/09/15/csvfile.csv中存储数据。(储存日)
  2. 我的协调器任务是在2015-09-15T23:59上运行,并在当天使用上面提到的路径中的数据,并将其存储到分区day = 16下的蜂窝表中。

基本上,我希望每个分区保存最后一天的数据,如果数据可用,如果数据不可用,则不应该创建分区。

,例如

收集到的第15个数据应该存储到分区中,16个类似的16个数据存储到第17个分区,等等。

假设饲料从2015-09-15T00:00开始,直到2015-09-16T00:00满一天,并存储在路径/data/2015/09/15/file.csv中。

协调器作业在2015-09-15T23:59上实现,它应该使用来自/data/2015/09/15/file.csv路径的数据,并将其作为输入传递给协调器操作。

下面是我使用过的oozie协调器文件,它正在运行,但它没有给出预期的输出,因为协调器在特定的一天中没有可用的数据。

协调员xml文件:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<coordinator-app name="App" frequency=1440 start=2015-09-15T23:59Z end=2015-09-30T23:59Z timezone="UTC" xmlns="uri:oozie:coordinator:0.4">
  <datasets>
    <dataset name="logs" frequency=1440 initial-instance=2015-09-15T23:59Z timezone="UTC">
        <uri-template>${DataPath}/${YEAR}/${MONTH}/${DAY}</uri-template>
        <done-flag>file.csv</done-flag>
    </dataset>
  </datasets>
  <input-events>
    <data-in name="isready_logs" dataset="logs">
        <instance>${coord:current(0)}</instance>
    </data-in>
  </input-events>
  <action>
    <workflow>
      <app-path>${ApplicationPath}/log_wf.xml</app-path>
      <configuration>
            <property>
                <name>currentday</name>
                <value>${coord:formatTime(coord:dateOffset(coord:nominalTime(), 1, 'DAY'), 'dd')}</value>
            </property>
            <property>
                <name>currentmonth</name>
                <value>${coord:formatTime(coord:nominalTime(), 'MM')}</value>
            </property>
            <property>
                <name>currentyear</name>
                <value>${coord:formatTime(coord:nominalTime(), 'yyyy')}</value>
            </property>
            <property>
              <name>input</name>
              <value>${coord:dataIn('isready_logs')}</value>
            </property>
            <property>
                <name>ScriptPath</name>
                <value>${ApplicationPath}</value>
            </property>
            <property>
                <name>XmlPath</name>
                <value>${ApplicationPath}</value>
            </property>
      </configuration>
    </workflow>
  </action>
</coordinator-app>

你能引导我用正确的值来配置协调器吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-03-30 10:43:52

您有一个偏移加一天,但仅在当前一天,而不是在当前年份或当前月份。

这意味着,对于在2015-09-15T23:59上实现的协调器任务,日期为2015-09-16。但是对于在2015-12-31T23:59实现的协调员工作来说,日期是2015-12-01

如果要使用偏移量,则应将该偏移量添加到月份和年份,否则它将在月底和年底计算错误的日期。

代码语言:javascript
复制
<value>${coord:formatTime(coord:dateOffset(coord:nominalTime(), 1, 'DAY'), 'dd')}</value>
...
<value>${coord:formatTime(coord:dateOffset(coord:nominalTime(), 1, 'DAY'), 'MM')}</value>
...
<value>${coord:formatTime(coord:dateOffset(coord:nominalTime(), 1, 'DAY'), 'yyyy')}</value>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32599482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档