开发者社区 问答 正文

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 为整数)。

示例


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

展开
收起
nicenelly 2017-10-30 14:19:22 1658 分享 版权
阿里云 AI 助理回答

在阿里云E-MapReduce服务中,创建作业时支持使用时间变量通配符来动态生成参数值,这为需要按时间维度自动执行的任务提供了便利。根据您的描述,这种功能特别适合那些日常的批处理任务,如数据备份、数据分析等,它们往往依赖于特定日期或时间范围的数据。

变量通配符格式与用法

您已经正确指出了E-MapReduce支持的时间变量通配符格式,例如${dateexpr-Nd}${dateexpr+Nh},其中dateexpr是遵循一定格式的时间表达式(如yyyyMMdd HH:mm:ss),而N是一个整数,表示要加减的天数(d)或小时数(h)。通过这种方式,您可以灵活地指定相对于当前时间的某个时间点作为作业参数。

示例解析

在您给出的示例中:

jar ossref://emr/jar/hadoop/hadoop_wc.jar com.aliyun.emr.WordCount oss://emr/output/pt=20160426

假设这个作业是在某一天执行,且应用参数中包含了一个时间变量通配符,比如${yyyyMMdd-1d},那么在实际执行时,如果当前日期是2016年4月27日,oss://emr/output/pt=20160426中的20160426就是由${yyyyMMdd-1d}动态计算出来的,代表前一天的日期。

应用场景

  • 每日数据处理:如果您需要每天处理前一天的数据,可以在作业参数中设置${yyyyMMdd-1d},这样每次作业都会自动指向前一天的日期目录。
  • 定时任务调度:对于每小时或每天需要运行的分析脚本,可以利用${yyyyMMdd HH:mm:ss-Nh}${yyyyMMdd-Nd}来确保任务总是针对正确的时间段执行。

注意事项

  • 精度与限制:目前仅支持以天和小时为单位的加减,意味着更细粒度的时间调整(如分钟或秒)暂时不被支持。
  • 格式一致性:确保dateexpr部分与您希望格式化的时间相匹配,保持时间格式的一致性对于正确解析非常重要。
  • 实际应用:在设计作业时,考虑将这些变量通配符嵌入到需要动态变化的路径或参数中,以实现自动化流程的高效执行。

综上所述,E-MapReduce的时间变量通配符功能极大地增强了作业调度的灵活性和自动化程度,使得处理时间敏感型任务变得更加便捷。

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