从凌晨 2 点到第二天凌晨 2 点的每小时文件作为 Pig 的输入

Posted

技术标签:

【中文标题】从凌晨 2 点到第二天凌晨 2 点的每小时文件作为 Pig 的输入【英文标题】:Hourly files from 2AM to next day 2 AM as input to Pig 【发布时间】:2017-08-11 10:49:14 【问题描述】:

我们有每天接收每小时文件的要求。因此,我们在一天内收到 24 个文件。我们有一个 pig 动作,这些文件将作为输入。现在只有从今天凌晨 2 点到第二天凌晨 2 点的文件应该是 pig 操作的输入。这项工作也应该在未来实现自动化。其余文件将输入到另一个 pig 操作。

文件格式:abcdef_20170810-020000.tar.gz(02 代表凌晨 2 点文件)时间将采用 24 小时格式。

所以 pig 动作的输入应该是从 abcdef_20170810-020000.tar.gz 到 abcdef_20170811-020000.tar.gz 的文件

在shell脚本中有什么方法可以实现吗? pig 动作是 oozie 工作流程的一部分。

我尝试了许多正则表达式,但由于文件格式不是很独特,我无法破解。

感谢任何指导。

【问题讨论】:

您真的希望昨天和今天都处理凌晨 2 点的文件吗? no.... 应该是凌晨 2 点到第二天凌晨 1 点。 【参考方案1】:

既然你有一个shell 标签,那么

today=$(date "+%Y%m%d")
yesterday=$(date -d yesterday "+%Y%m%d")
cd /location/of/daily/files
files=( 
    abcdef_$today-0[012]0000.tar.gz
    abcdef_$yesterday-0[2-9]0000.tar.gz
    abcdef_$yesterday-1[0-9]0000.tar.gz
    abcdef_$yesterday-2[0-3]0000.tar.gz
)
do_something_with "$files[@]"

【讨论】:

如果 shell 不是一种合适的语言,它应该可以直接翻译成您选择的语言。

以上是关于从凌晨 2 点到第二天凌晨 2 点的每小时文件作为 Pig 的输入的主要内容,如果未能解决你的问题,请参考以下文章

凌晨四点的北京

CST时间凌晨12点是北京时间几点?

夏令时和 Cron

Flink 实现自定义滑动窗口

Flink 实现自定义滑动窗口

设置定时任务为每天凌晨2点执行和每小时执行一次