开发者社区 问答 正文

E-MapReduce作业日期设置是什么?


在创建作业过程中,支持在作业参数中设置时间变量通配符。

变量通配符格式


E-MapReduce 所支持的变量通配符的格式为${dateexpr-1d} 或者 ${dateexpr-1h} 的格式。例如,假设当前时间为“20160427 12:08:01”:


  • 如果在作业参数中写成 ${yyyyMMdd HH:mm:ss-1d},那么这个参数通配符在真正执行的时候会被替换成 “20160426 12:08:01”,即在当前日期上减了一天并精确到了秒。

  • 如果写成 ${yyyyMMdd-1d},则执行时会替换成 “20160426”, 表示当前日期的前一天。

  • 如果写成 ${yyyyMMdd},则会被替换成“20160427”,直接表示当前的日期。

dateexpr 表示标准的时间格式表达式,对应的时间会按照该表达式指定的格式进行格式化,后面可以再跟上对应加减的时间。支持表达式后面的加减 1d(加减1天),也可以写成加减 N 天或者加减 N 小时,例如${yyyyMMdd-5d}、${yyyyMMdd+5d}、${yyyyMMdd+5h}、${yyyyMMdd-5h}都可以支持,对应的替换方式和前面描述的一致。
注意:目前 E-MapReduce 仅支持小时和天维度的加减,即只支持在 dateexpr 后面 +Nd、-Nd、+Nh、-Nh 的形式(dateexpr 为时间格式表达式,N 为整数)。

示例


下图作业中的[backcolor=transparent]应用参数在实际执行时会被替换成:
  1. [backcolor=transparent]jar ossref[backcolor=transparent]:[backcolor=transparent]//emr/jar/hadoop/hadoop_wc.jar com.aliyun.emr.WordCount  oss://emr/output/pt=20160426

展开
收起
nicenelly 2017-10-27 15:14:26 1891 分享 版权
阿里云 AI 助理回答

在阿里云E-MapReduce服务中,创建作业时支持使用时间变量通配符来动态生成与时间相关的参数,这为需要按时间分区处理数据的任务提供了便利。根据您的描述,这里有几个关键点和一个示例来帮助理解如何应用这些时间变量通配符:

关键点:

  1. 格式规范:时间变量通配符的格式是${dateexpr-Nx},其中dateexpr是一个遵循特定格式的时间表达式(如yyyyMMdd HH:mm:ssyyyyMMdd),而Nx表示相对于当前时间的偏移量,可以是天(d)或小时(h),N为整数。
  2. 加减操作:支持对日期进行向前推算(减)或向后推算(加),例如-1d表示前一天,5h表示五个小时之后。
  3. 精确度:如果指定了具体到小时和分钟秒的时间格式,替换后的值也会保持同样的精度。
  4. 限制:目前仅支持以天和小时为单位的加减,不支持更小的时间单位。

示例解析:

假设当前时间为“2016年04月27日 12:08:01”,作业参数中设置了一个应用参数,比如用于指定输出路径包含日期的部分,如下所示:

oss://emr/output/pt=${yyyyMMdd}

执行时,这个参数会被自动替换为:

oss://emr/output/pt=20160427

这意味着输出路径会指向一个代表当天日期的目录。

实际应用:

如果您需要处理前一天的数据,可以这样设置参数:

oss://emr/output/pt=${yyyyMMdd-1d}

执行时,它将被替换为:

oss://emr/output/pt=20160426

这样就方便地指定了前一日的数据处理目录。

通过这种方式,您可以灵活地安排定时任务,确保它们总是针对正确的时间范围进行操作,无需手动每天调整作业参数。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答