从凌晨 2 点到第二天凌晨 2 点的每小时文件作为 Pig 的输入
Hourly files from 2AM to next day 2 AM as input to Pig
我们有一项要求,即每天接收每小时的文件。所以我们一天收到 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 工作流程的一部分。
我尝试了很多正则表达式,但由于文件格式不是很独特,我无法破解它。
感谢任何指导。
既然你有一个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[@]}"
我们有一项要求,即每天接收每小时的文件。所以我们一天收到 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 工作流程的一部分。
我尝试了很多正则表达式,但由于文件格式不是很独特,我无法破解它。
感谢任何指导。
既然你有一个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[@]}"